エラーコードと再試行
エラー発生時、API は 2xx 以外のステータスコードを返し、レスポンス本文は JSON です:
{ "error": { "message": "エラーの説明", "type": "invalid_request_error", "code": "..." }}一般的なエラーコード
| HTTP ステータス | 主な原因 | 推奨される対応 |
|---|---|---|
| 400 | パラメータエラー、リクエスト本文の形式が不正 | パラメータと JSON 形式を確認 |
| 401 | キーの欠落 / 無効 | Authorization: Bearer sk-... を確認 |
| 403 | トークンが無効、モデルグループへのアクセス権がない | コンソールでトークンの状態とグループを確認 |
| 404 | モデル名が存在しない、または未公開 | モデル概要 を確認 |
| 413 | リクエスト本文が大きすぎる(コンテキスト超過) | messages を簡素化するか、長文コンテキスト対応モデルに変更 |
| 429 | レート制限、または残高不足 | バックオフ再試行、レート制限と 429 を参照 |
| 500 / 502 / 503 | 上流モデルの変動 | 短いバックオフ後に再試行、ゲートウェイが利用可能な上流へ自動切り替え |
再試行の推奨事項
- 429 / 5xx には指数バックオフ + ジッターを採用する: 1s、2s、4s のように、最大 3〜5 回;
- 400 / 401 / 403 は確定的なエラーであり、再試行は無意味なため、まずリクエストを修正する;
- 冪等なシナリオ(例: 画像生成)では、再送前に前回リクエストの最終状態を確認し、重複課金を避ける;
- 本番環境ではレスポンスヘッダーと
error.messageを記録することを推奨。どの段階でエラーが返されたかの特定に役立つ。