コンテンツにスキップ

エラー

すべてのエラーは、同じ JSON 本文を使います。失敗したリクエストを HTTP 200 で返すことはありません。エラーが 200 のレスポンスの中に入る 2 つの場合は、レスポンスの中のエラーで説明します。

{
"error": {
"message": "Model \"example/unknown\" was not found.",
"type": "not_found_error",
"code": "model_not_found",
"param": "model",
"request_id": "req_0123456789abcdef0123456789abcdef",
"doc_url": "https://example.com/docs/errors/#model_not_found"
}
}
  • message: 人が読む短い説明です。
  • type: エラーの分類です。
  • code: プログラムが使う安定した識別子です。分岐には message ではなく code を使ってください。
  • param: エラーの原因になったリクエストパラメータです。無ければ null です。
  • request_id: リクエストの ID です。サポートに問い合わせるときに控えておいてください。
  • doc_url: このページにある、そのコードの項目へのリンクです。
  • details: 任意の機械可読な補足です。入るフィールドはエラーによって異なります。
    • 指定できる値が決まっているフィールドでは、details.allowed に指定できる値が入ります。
    • 数値が範囲外のときは、details.minimum と details.maximum に許容範囲が入ります。
    • 402 では、details.limit_source に balance か key が入ります。ほかのフィールドには金額が入り、キーの利用上限では期間と details.resets_at も入ります。残高とキーの利用上限を参照してください。
    • 使えない参照画像の URL では、details.reason にその理由が入ります。
    • data URI で送った参照画像が大きすぎるときは、details.max_bytes に上限が入ります。
    • payload_too_large では、details.max_bytes に上限が入ります。
    • ジョブの完了を待っていたリクエストが、そのジョブの失敗で失敗したときは、details.job_id にジョブの ID が入ります。
    • 終わったジョブのキャンセルや、ファイルのない動画のダウンロードのように、ジョブのステータスによってリクエストが失敗したときは、details.status にジョブのステータスが入ります。

次の 2 つの場合は、200 のレスポンスの中でエラーを知らせます。

  • 始まったあとに失敗したチャットのストリーミングのレスポンス。エラーは、ストリームの中のイベントとして届きます。チャットを参照してください。
  • 失敗したジョブ。ジョブを読み取ると 200 を返し、ジョブの error フィールドに、エラーのレスポンスと同じフィールドが入ります。ジョブを参照してください。

Anthropic 互換エンドポイントのエラー形式

Section titled “Anthropic 互換エンドポイントのエラー形式”

POST /v1/messages は、すべてのエラーを Anthropic 形式で返します。type は error で、エラーの内容は error に入り、request_id はトップレベルのフィールドです。コードと HTTP ステータスは、下の表と同じです。チャットを参照してください。

各コードはその行へのリンクになっているため、doc_url のアンカー(#<code>)で対応する項目が開きます。

コードHTTP ステータス種別説明
invalid_request400invalid_request_errorリクエストの形式が不正か、値が範囲外です。有効な値が分かる場合は details.allowed に入ります。
unauthorized401authentication_errorAPI キーが指定されていない、形式が不正、存在しない、失効済み、または期限切れです。レスポンスからは、どれに当たるかは分かりません。
balance_insufficient402insufficient_balance利用可能な残高が、このリクエストのために確保する金額に足りません。error.details.limit_source は balance です。
key_limit_exceeded402insufficient_balanceこのリクエストを受理すると、API キーの利用上限を超えます。error.details.limit_source は key で、error.details.resets_at にカウンターが数え直される時刻が入ります。
forbidden403permission_errorアクセスが拒否されました。正しくない、書き換えられた、または期限切れの署名付きファイル URL に対して、このコードを返します。
account_suspended403permission_errorアカウントが停止されているため、画像・動画・チャットのリクエストを受け付けません。サポートにお問い合わせください。残高、入金、API キー、ジョブは引き続き利用できます。
not_found404not_found_error指定されたリソースが存在しません。
model_not_found404not_found_error指定したモデル ID がカタログにありません。チャットのエンドポイントは、テキストモデルでないモデルに対しても、このコードを返します。
method_not_allowed405invalid_request_errorこのパスは存在しますが、使われたメソッドには対応していません。Allow ヘッダに対応するメソッドを示します。OPTIONS は CORS のプリフライトにだけ答えます。
idempotency_conflict409conflict_error同じ Idempotency-Key が、別の内容のリクエストで使われています。
payload_too_large413invalid_request_errorリクエスト本文が、許容サイズを超えています。error.details.max_bytes に上限が入ります。
content_policy_violation422content_policy_errorモデルの提供元が、プロンプト、参照画像、または生成された出力を、その内容を理由に拒否しました。このリクエストは課金されません。
rate_limited429rate_limit_errorモデルの提供元がリクエストを制限しています。POST /v1/reports は、同じアドレスから通報が多く送られたときにも、このコードを返します。Retry-After ヘッダの時間が過ぎてから再試行してください。
concurrency_limited429rate_limit_errorモデルの提供元が混み合っていて、いまこのリクエストを受けられません。アカウントのジョブ数の上限ではありません。時間をおいて再試行してください。
internal_error500api_error当社側で予期しないエラーが発生しました。
upstream_error502upstream_error上流の提供元がエラーを返しました。
upstream_unavailable503overloaded_error上流の提供元が一時的に容量不足です。時間をおいて再試行してください。
webhooks_unavailable503api_errorこの環境では webhook をまだ使えません。時間をおいて再試行してください。