エラー処理
失敗の形は 1 種類だけです。
失敗時は HTTP ステータスが 2xx 以外になり、ボディには error オブジェクトが 1 つだけ入ります:
json
{
"error": {
"message": "Insufficient credits: this request needs 60 credits. Top up and try again.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_credits"
}
}各項目
| 項目 | 説明 |
|---|---|
| message | 人が読むための英語の文言。文言は変わりうるので分岐条件にしないこと |
| type | 大分類。下表を参照 |
| code | 具体的な原因。分岐はこの項目で行う |
| param | 問題のあるパラメータ名。特定できない場合は null |
代表的な code
| HTTP | code | 意味と対応 |
|---|---|---|
| 401 | missing_api_key | Authorization ヘッダーが無い、または Bearer sk-xxx 形式でない |
| 401 | invalid_api_key | 未知・無効・削除済みのキー。区別できないよう意図的に同一文言 |
| 400 | invalid_request | パラメータの問題。message を参照。prompt が空、image モードで画像が無いなど |
| 402 | insufficient_credits | クレジット不足。追加購入のうえ、再試行前に /v1/credits を確認 |
| 429 | rate_limit_exceeded | 呼び出しが多すぎる。バックオフして再試行 |
| 429 | concurrency_limit_reached | 同時実行数または 1 日の上限に到達。時間をおいて再試行 |
| 404 | not_found | タスクが存在しない、またはこのアカウントのものではない |
| 502 | generation_failed | 同期生成ですべての画像が失敗。クレジットは返却済み |
| 504 | generation_timeout | 同期生成の待機がタイムアウト。タスクは走り続けクレジットも返らないため、メッセージ内の id で /v1/tasks/{id} から取得する |
| 500 | internal_error | サーバー側の問題。再試行可。続く場合はご連絡ください |
非同期で受理後に生成が失敗した場合、この形にはなりません。HTTP は 200 で、タスクオブジェクトの status が failed、理由は error に入ります。失敗が 502 になるのは同期の画像生成だけです。

