LLM API エラーコード:5 社の 400〜529 対照
OpenAI・Anthropic・Google・DeepSeek・OpenRouter でステータスコードが何を意味するか、どれが安全に再試行できるか、残高切れがなぜ 3 社で 402、1 社で 429 なのか。
TL;DR:ステータスコードが教えてくれることは思ったより少ないです。残高切れは Anthropic・DeepSeek・OpenRouter では 402、OpenAI では 429。サーバー過負荷はほぼどこでも 503 ですが、Anthropic だけ 529 で、これは標準の HTTP コードではないため多くのエラー処理をすり抜けます。このページはその横断リファレンスです。5 社が文書化している全コード、安全に再試行できるもの、そして私たちが再現して直した具体的な障害へのリンク。
Last updated 2026-08-31。以下のコードはすべて同日に各社自身のエラードキュメントから読み取ったものです。
各社はどのステータスコードを文書化しているか?
空欄は「そのプロバイダーがそのコードを文書化していない」という意味で、「絶対に返さない」という意味ではありません。
| コード | OpenAI | Anthropic | Google Gemini | DeepSeek | OpenRouter |
|---|---|---|---|---|---|
| 400 | invalid service_tier | invalid_request_error | invalid_request、failed_precondition、parameter_unknown | Invalid Format | Bad Request、パラメータ不備、CORS |
| 401 | 認証情報が無効、キー誤り、組織なし、IP 不許可 | authentication_error | authentication | Authentication Fails | 資格情報が無効、OAuth セッション期限切れ |
| 402 | billing_error | Insufficient Balance | クレジット不足 | ||
| 403 | 国・地域が非対応 | permission_error | permission_denied | 権限、ガードレール、モデレーション | |
| 404 | not_found_error | not_found、model_not_found | |||
| 408 | リクエストのタイムアウト | ||||
| 409 | conflict_error | already_exists、aborted | |||
| 413 | request_too_large | ||||
| 416 | out_of_range | ||||
| 422 | Invalid Parameters | ||||
| 429 | 原因が 5 種類(下記) | rate_limit_error | rate_limit_exceeded、quota_exceeded、too_many_requests | Rate Limit Reached | レート制限中 |
| 499 | cancelled | ||||
| 500 | サーバーエラー | api_error | api_error | Server Error | |
| 501 | unimplemented | ||||
| 502 | 選択モデルが停止中、または不正な応答 | ||||
| 503 | エンジン過負荷、Slow Down | service_unavailable | Server Overloaded | ルーティング要件を満たす provider が無い | |
| 504 | timeout_error | deadline_exceeded | |||
| 529 | overloaded_error |
この表の 4 行が、実際の本番障害の発生源です。
なぜ 429 は 5 つの別々の意味を持つのか?
429 は業界で最も多義的なコードです。 OpenAI では、修正方法の異なる 5 つの状態を 1 つのコードが覆っています。リクエスト数のレート制限、残高の枯渇、組織の支出上限、プロジェクトの支出上限、組織の利用上限です。レート制限なのは最初の 1 つだけで、残り 4 つはお金の問題であり、バックオフでは解消しません。
Google は少なくとも、同じステータスの下で意味を別コードに分けています。毎分制限は rate_limit_exceeded、日次クォータは quota_exceeded、バーストは too_many_requests です。
判別の手掛かりが最も鋭いのは Anthropic です。ドキュメントには、利用ティアの支出上限による 429 は retry-after ヘッダーが付かず、アクセスが回復するまで失敗し続けると書かれています。つまりヘッダーの有無そのものが診断になります。あれば待つ、無ければアカウント側を直す。また、自分で設定した支出上限に達した場合、Anthropic が返すのは 429 ではなく 400 です。例外は Claude Code ワークスペースで、そこでは 429 が返ることがあります。
判断手順は別記事にまとめました。429 Too Many Requests の意味と再試行の判断。Claude Code ではレート制限の 429 とクォータの 429 が画面上まったく同じに見えるため、Claude Code の Rate Limit Reached で切り分けています。エラーではなく各社の制限値そのものが必要なら 5 社 5 通りのルール、アグリゲーター側の事例なら OpenRouter の Kimi K3 429 が、待つよりフェイルオーバーが速いケースです。
なぜ 529 はエラー処理を突き抜けるのか?
529 は登録された HTTP ステータスコードではありません。Anthropic 自身のリファレンスは 1 行だけ与えています。
529 -
overloaded_error: The API is temporarily overloaded.
他社はすべて同じ状態を 503 で表します。そして Anthropic のエラーリファレンスには 503 が一切載っていません。
これが問題になるのは、再試行コードの多くが if 500 <= status <= 504 と書かれているからです。この範囲に 529 は入らないので、Anthropic の過負荷エラーは再試行経路をすり抜けてハード障害としてユーザーに出ます。Anthropic 自身の SDK は一時的な失敗を既定で 2 回再試行し、retry-after があれば従うため、この不具合は主に自前の HTTP クライアントで表面化します。
Anthropic のドキュメントにはもう一つ、二度読む価値のある注意書きがあります。自分の組織がトラフィックを急増させた場合、加速制限のせいで 529 ではなく 429 が返ることがある、というものです。同じ症状、逆の原因、別の対処。
完全な再現手順と 8 つの修正は Claude API の 529 overloaded_error にあります。当サイトで最も読まれているトラブルシュート記事です。再試行ではなくアーキテクチャで答えるなら Claude Code の fallbackModel が 3 段フェイルオーバー、Opus の障害と 529 が特定モデルが慢性的に過負荷なときの移行を扱います。
なぜ同じモデル名が一方で 404、他方で 400 になるのか?
解決できないモデル名は、Google では 404 not_found(専用の model_not_found もあります)、OpenAI では 404、ルーティング前に model フィールドを検証する一部ゲートウェイでは 400 になります。ユーザーに見えるメッセージはたいてい「モデルが存在しないか、アクセス権がありません」の変種で、実務上効いてくるのは後半です。OpenAI では、実在するが自組織に有効化されていないモデルでも同じ文言が出ます。
どちらのケースも OpenAI の 404 モデルが存在しない で扱っています。新しいモデル特有の、実在してリリース済みなのに自分のアカウントからまだ見えないパターンは GPT-5.6 model not available です。
なぜ 402 は 3 社にあって OpenAI に無いのか?
Anthropic・DeepSeek・OpenRouter は、アカウントの残高が尽きたときに 402 を返します。OpenAI は同じ事象を 429 に分類しています。
実務上の帰結として、4xx を致命扱いし 429 を再試行可能とみなす素朴なハンドラーは、Anthropic では正しく動き、OpenAI では誤動作します。空の残高に対してバックオフループに入り続けるからです。コードではなく本文で分岐してください。
DeepSeek の 402 Insufficient Balance には、2026 年 8 月のピーク・オフピーク課金移行以降もう一段の癖があります。同じワークロードでも時間帯によって残高の減り方が変わるためです。DeepSeek API の値上げ にウィンドウと倍率があります。
どのコードを再試行すべきか?
| 再試行する | 再試行しない |
|---|---|
| 408 タイムアウト | 400 不正なリクエスト |
| 409 競合・中断 | 401 認証 |
| Retry-After ありの 429 | 402 課金 |
| 500・502・503・504 | 403 権限・地域・モデレーション |
| 529 Anthropic の過負荷 | 404 モデルまたはリソースが無い |
| 413 リクエストが大きすぎる | |
| 422 パラメータ不正 | |
| Retry-After なしの 429 |
この表に加えて実務メモが 3 つ。
Retry-After は普遍的ではありません。 OpenRouter は 429 と 503 で文書化しています。Anthropic の SDK はヘッダーがあれば従い、一時的失敗を「twice by default, honoring the retry-after header when present」で再試行します。OpenAI のレート制限 429 に対する案内は、送信ペースを調整し Retry-After ヘッダーを尊重することです。ヘッダーの存在は誰も保証しないので、バックオフには既定値が必要です。
Google はトラブルシュートのページで 408 を再試行すべき一時的エラーとして挙げていますが、エラーコードのリファレンスには 408 の行がありません。 上の表でそのセルを空けているのはそのためです。
413 はサイズの問題で、コンテキストの問題ではありません。 Anthropic はリクエストサイズの上限を公開しています。Messages と Token Counting が 32 MB、Batch API が 256 MB、Files API が 500 MB。直接 API ではこれらが Anthropic に届く前に Cloudflare で弾かれるため、エラー本文が Anthropic のものに見えないことがあります。
ステータスコードに到達しない障害は?
200 を返しておいて、それでも壊れる失敗があります。
ストリーム途中のエラー。 server-sent events で受信していると、API が 200 を返した後にエラーが来ることがあります。Anthropic はこれを明記しています。標準のエラー処理は適用されず、ストリーム内部で error イベントを処理する必要があります。
TLS の失敗。 これは API に届きません。Claude Code の SSL 証明書エラー が企業 CA による傍受を扱っています。障害に見えますが障害ではありません。
import と SDK のエラー。 SDK の改名は HTTP コードではなく Python のトレースバックとして現れます。2026 年 6 月の改名後の claude-code-sdk import エラー に対応表があります。
画像生成のタイムアウト。 長時間かかる画像呼び出しはチャット呼び出しとは違う壊れ方をします。GPT-Image-2 の遅延と 504 に 5 つの根本原因があります。
次に読むべきものは?
アグリゲーター経由なら、もう一層知っておく価値があります。OpenRouter はプロバイダーのエラーに正規化された error_type 文字列を付け、ステータスより優先して使うよう案内しています。理由は「stable across all three API skins even when the native protocol code is lossy」だから。このページ全体の教訓が、ゲートウェイ側で強制されている形です。
コードの意味ではなく実装パターンが必要なら、AI API のエラーハンドリング にジッター付き指数バックオフ、マルチモデルのフォールバック、貼り付けられるサーキットブレーカーがあります。プロバイダーではなく特定ツールのエラー面なら、Codex エラー索引 が 15 の症状を修正に対応づけています。
参考情報源
よくある質問
- 529 は 503 と同じものですか?
- 機能的には同じですが、529 を返すのは Anthropic だけです。これは標準外のステータスで意味は
overloaded_error、そして Anthropic のドキュメントには 503 の行が存在しません。OpenAI・Google・DeepSeek・OpenRouter は同じ状態を 503 で表します。エラー処理が 500〜504 しか捕捉していないと、Anthropic の過負荷エラーはそのまま抜けていきます。 - 残高が空なのに OpenAI が 429 を返すのはなぜですか?
- OpenAI が課金の枯渇をレート制限の下に分類しているからです。エラーリファレンスでは credit balance exhausted、organization spend limit reached、project spend limit reached、organization usage limit reached がすべて 429 です。Anthropic・DeepSeek・OpenRouter は同じ状態に 402 を返します。課金起因の 429 はバックオフで再試行しても永遠に成功しないので、ステータスだけで分岐せず本文を読む必要があります。
- 自動で再試行してよいコードはどれですか?
- 408、409 の競合、Retry-After ヘッダー付きの 429、そして 502・503・504 と Anthropic の 529 を含む 5xx です。400・401・402・403・404・413・422 は再試行しないでください。リクエスト、キー、アカウントのいずれかを変える必要があります。危ういのは中間ケース、Retry-After ヘッダーの無い 429 で、Anthropic ではこれはレート制限ではなく支出上限を意味し、ウィンドウが戻るまで失敗し続けます。
- Anthropic の 402 billing_error とは何ですか?
- レート制限でもキーでもなく、請求または支払い情報の問題です。Anthropic は 402 を
billing_errorとして文書化し、Console の支払い情報(AWS 上の Claude Platform なら AWS Marketplace)を確認するよう案内しています。自分で設定した支出上限に達したときに Anthropic が返す 400 とは別物です。 - すべてのプロバイダーが Retry-After ヘッダーを送りますか?
- いいえ、そして例外が重要です。OpenRouter は 429 と 503 の両方で Retry-After を文書化しています。Anthropic の SDK はヘッダーがあれば従い、既定で 2 回再試行します。ただし利用ティアの支出上限による 429 には Retry-After が付きません。ヘッダーが無いこと自体が、待って解決する状態ではないという合図です。


