エラーコードとリトライ指針

API エラーコード リトライ HTTPステータス
この記事の対象
APIエラー処理とリトライロジックを実装する開発者向けです。

エラーレスポンスの構造

{
  "error": {
    "code": "invalid_parameter",
    "message": "store_id is required",
    "param": "store_id",
    "request_id": "req_01HV6N..."
  }
}

request_id はサポート問い合わせ時に必須です。エラーログに必ず含めてください。

HTTPステータスコード一覧

コード 意味 リトライ
200 OK成功
201 Created作成成功
204 No Content成功(本文なし)
400 Bad Requestパラメータ不正不可(修正必要)
401 Unauthorized認証失敗トークン更新後に1回
403 Forbidden権限不足・スコープ不足不可
404 Not Foundリソース不在不可
409 Conflict状態競合条件次第
410 Gone廃止済み不可
422 Unprocessableバリデーションエラー不可
429 Too Many Requestsレート制限Retry-After
500 Internal Errorサーバーエラー指数バックオフで
502 Bad Gateway上流エラー指数バックオフで
503 Service Unavailable一時的に利用不可指数バックオフで
504 Gateway Timeoutタイムアウト指数バックオフで

主なエラーコード

code 対処
invalid_parameterparam フィールドの内容を確認
missing_parameter必須パラメータを追加
invalid_tokenトークンを更新
expired_tokenリフレッシュトークンで更新
insufficient_scope必要スコープを追加して再認可
app_not_approvedUser系スコープの審査申請が必要
resource_not_foundIDの存在確認
duplicate_resource既存リソースを更新するか別IDで作成
rate_limitedRetry-After 秒待機
plan_limit_exceededプランをアップグレード

リトライ指針

リトライしてよい条件

  • HTTPステータスが 429 または 5xx
  • ネットワークタイムアウト・接続エラー
  • POSTの場合はIdempotency-Key を必ず設定(重複作成を防ぐため)

リトライ間隔(指数バックオフ+ジッター)

function retryDelay(attempt) {
  // 1, 2, 4, 8, 16秒(最大32秒)
  const base = Math.min(Math.pow(2, attempt), 32);
  // ±25%のジッターで集中アクセスを避ける
  const jitter = base * (Math.random() * 0.5 - 0.25);
  return (base + jitter) * 1000;
}

最大リトライ回数

  • 通常API:最大5回
  • バッチ処理:最大10回
  • ユーザー操作起因:最大2回(待たせすぎない)

429の場合は Retry-After ヘッダーを優先

HTTP/1.1 429 Too Many Requests
Retry-After: 30

→ 30秒待ってから再試行

リトライしてはいけないケース

  • 4xx(429除く):リクエスト自体に問題があるため、何度試しても同じ
  • POST/PUTで Idempotency-Key を付けていない場合:重複作成のリスク

関連ガイド

公開日: 2026-04-27 更新日: 2026-04-27
このトピックについて
開発者API
機能の詳細を見る
タグ
API (8) Webhook (8) api (6) oauth (5) トラブル (5) OAuth (4) getting-started (4) アプリ登録 (4) app-registration (3) webhook (3)