エラーエンベロープ
ほとんどのエラーレスポンスはこの OpenAI 互換 JSON 形式を使います:type は広いカテゴリ、code は具体的な識別子です。一部の高速パス
障害 (特にワークスペース単位の 429) は HTTP ステータスコードと関連
ヘッダのみを返し JSON ボディはありません。
HTTP ステータスコード
| ステータス | 意味 | 典型的な原因 |
|---|---|---|
400 | 不正リクエスト | 無効なパラメータ、必須フィールド欠落、スキーマ違反 |
401 | 未認証 | API キーが欠落または無効 |
403 | 禁止 | 配額不足、またはキーがそのモデルを呼べない |
404 | 見つからない | モデルまたはエンドポイントが存在しない |
429 | リクエスト過多 | レート制限ヒット —— レート制限 参照。レスポンスは常に Retry-After ヘッダを含む。 |
500 | 内部エラー | OrcaRouter 側のバグ |
502 | 上流エラー | すべての上流プロバイダが失敗 (任意のフォールバックチェーンを含む) |
503 | サービス利用不可 | 要求されたモデルが上流で一時的に利用不可 |
error.type に現れうるエラータイプ
error.type | 由来 |
|---|---|
orcarouter_api_error | ゲートウェイ側の障害 (認証、配額、レート制限、内部) |
upstream_error | 上流プロバイダがエラーを返したかタイムアウトした |
openai_error | OpenAI 互換上流のエラーをそのまま保持 |
claude_error | Anthropic 上流のエラーをそのまま保持 |
gemini_error | Gemini 上流のエラーをそのまま保持 |
error.code に現れうるエラーコード
これらは OrcaRouter で発生した障害向けのゲートウェイ発行コード
(上流ではない) です:
error.code | HTTP | 意味 |
|---|---|---|
insufficient_user_quota | 403 | アカウントクレジット枯渇。チャージしてください。 |
model_not_found | 503 | このモデルはあなたのアカウントで利用できません。 |
model_price_error | 400 | このモデルの価格設定がされていません。サポートに連絡してください。 |
api_not_implemented | 400 | 選択したモデルでエンドポイントまたは操作がサポートされていません。 |
bad_request_body | 400 | リクエストボディを解析できませんでした。 |
prompt_blocked | 400 | プロバイダの安全ポリシーが生成前にプロンプトをブロックしました。 |
sensitive_words_detected | 400 | センシティブコンテンツフィルターがプロンプトを拒否しました。 |
error.code (具体) に、次に
error.type (広いカテゴリ) にフォールバックしてマッチさせてください。
ストリーミング中のエラー
ストリーミング応答中のエラーは HTTP ステータスコードを使えません (ステータスはストリームが開いた時に既に送られている)。形式はエンド ポイントによります:/v1/chat/completions と /v1/responses (OpenAI 互換)
エラーはインバンドの data: {...} チャンクとして到着します:
data: チャンクを JSON としてパースし、error フィールドがあれば
ストリームを失敗とみなしてください。
/v1/messages (Anthropic 互換)
Anthropic は SSE 名前付きイベントを使います。ストリーム障害は次の
形で到着します:
event: message_stop で終了 (または
切断) します。
フォールバックエラー
extra_body.models が設定されチェーン内のすべてのモデルが失敗
した場合、最後の上流エラーの詳細を含む 502 を取得します。レスポンス
ヘッダ X-Orca-Fallback-Level と X-Orca-Fallback-Model は、チェーン
が尽きたときにどのフォールバックが試されていたかを示します。
レスポンスヘッダ を参照してください。