ドキュメント/ リファレンス

エラーと復旧リファレンス

クライアント応答、ルート検査、リクエストログのエラー情報と、再試行・復旧・設定変更の判断方法をまとめます。

3 種類の情報を区別する§

1 回の失敗に 3 種類のコードが現れる場合があります。用途はそれぞれ異なります。

項目表示場所用途
codeクライアント HTTP 応答今回のリクエストが失敗した理由を呼び出し元へ伝えます
error_codeリクエストログと試行チェーンアップストリームの失敗を正規化し、絞り込みと診断に使います
reason_codeルーティングチェックAccessKey、Group、認証情報が候補になれない理由を説明します
3 種類のコードを相互に置き換えないでください

ルート検査には no_available_group、実際のリクエストには no_available_candidate、最後のアップストリーム試行のログには upstream_client_error が現れる場合があります。自動化処理は、呼び出しているインターフェース自身の項目を読んでください。

message を解析しないでください

管理 API の message はローカライズされ、アップストリームのメッセージも変わる可能性があります。プログラムの判断には code と構造化された data を使い、messageerror_summary は人による確認だけに使ってください。

管理 API エラー§

管理 API のエラーコードは大文字のスネークケースです。応答構造、認証、主要リソースは 管理 API を参照してください。

共通・認証・リソース

エラーコードHTTP意味対処方法
BAD_REQUEST400リクエストパラメーターまたはパスが不正ですリクエストを修正して再試行します
INVALID_JSON400JSON の形式、項目、または本文構造が不正ですエンドポイント仕様に合わせて JSON を修正します
VALIDATION_FAILED400解析には成功しましたが、業務検証に失敗しましたdata の項目位置情報を確認します
REQUEST_TOO_LARGE413管理リクエスト本文がサイズ上限を超えています本文を小さくするか、操作を分割します
UNAUTHORIZED401管理認証情報が無効ですAUTH_KEY または AccessKey を確認します
FORBIDDEN403現在の主体にはこの操作の権限がありませんAUTH_KEY を使うか、操作範囲を縮小します
AUTH_LOCKED429同じ直接接続元で認証失敗が続き、一時的にロックされましたRetry-After に従って待機し、誤ったキーの再試行を止めます
NOT_FOUND404対象リソースが存在しませんリソース一覧を更新し、ID を確認します
ROUTE_NOT_FOUND404要求された管理ルートが存在しないか、廃止されていますパスを現在のバージョンのルート契約と照合してください
METHOD_NOT_ALLOWED405管理ルートは存在しますが、HTTP メソッドがサポートされていませんそのルートで宣言されたメソッドを使用してください
DUPLICATE_RESOURCE409一意なリソースがすでに存在します既存リソースを使うか、一意項目を変更します
BAD_GATEWAY502管理操作が依存するアップストリーム要求に失敗しましたdata とアップストリーム状態を確認してから再試行します
DATABASE_ERROR500データベース操作に失敗しましたサービスログとデータベースの可用性を確認します
INTERNAL_SERVER_ERROR500分類されていない内部エラーですサービスログで診断し、書き込み操作を無条件に再実行しないでください

冪等性・並行更新・実行時復旧

エラーコードHTTP意味対処方法
IDEMPOTENCY_KEY_REQUIRED428この書き込み操作には Idempotency-Key が必要です正規 UUID v4 を生成してリクエストに付けます
INVALID_IDEMPOTENCY_KEY400Idempotency-Key が正規の小文字 UUID v4 ではありません正規 UUID v4 に置き換えます
IDEMPOTENCY_KEY_REUSED409同じ冪等キーが別のリクエストに使われました新しい論理操作には新しいキーを生成します
IDEMPOTENCY_RESULT_EXPIRED410冪等結果の保持期限は切れましたが、操作の識別情報は残っていますdata で完了済みリソースを確認し、そのまま再作成しないでください
CONTROL_OPERATION_INCOMPLETE503データベースへのコミット後、実行時復旧がまだ完了していません同じ冪等キーを保持し、自動調整を待ちます
CONTROL_RECOVERY_PENDING503先にコミットされた操作がまだ復旧中ですdata.retry_after_ms に従って待機してから再試行します
SETTINGS_PRECONDITION_REQUIRED428設定更新に If-Match がありません設定と ETag を読み、If-Match を付けて更新します
SETTINGS_VERSION_CONFLICT412読み取り後に別のリクエストが設定を変更しましたdata の現在設定を使って再度マージします

Group・モデル・サブスクリプション認証情報

エラーコードHTTP意味対処方法
GROUP_IN_USE409Group がまだ AccessKey から参照されていますdata に記載された参照を先に解除します
INVALID_CREDENTIAL_STATE409現在の状態では認証情報を復帰できません認証情報の状態を更新し、許可された操作を選びます
CHANNEL_TARGET_CONFLICT409別の Group が同じチャネルターゲットを使用しています既存 Group を使うか、重複ターゲットを明示的に確認します
MODEL_NAME_CONFLICT409同じ Group 内でクライアント向けモデル名が競合していますdata.conflicts に従ってモデル名または別名を修正します
NO_ACTIVE_CREDENTIAL409Group に操作を実行できる認証情報がありません認証情報を追加、有効化、または再認可します
MODEL_PRICE_UNPRICED_CONFIRMATION_REQUIRED409モデルを価格未設定にするには明示的な確認が必要です確認して再送信します
MODEL_PRICE_REFERENCED409モデル価格がまだ Group から参照されています参照を解除してから価格を削除します
MODEL_PRICE_AUTOMATIC_DELETE_FORBIDDEN409自動同期されたモデル価格は手動削除できません同期元を変更するか、次回同期を待ちます
OAUTH_FILE_INVALID400OAuth JSON を認識できないか、項目が無効です再エクスポートした完全なファイルをインポートします
OAUTH_FILE_TOO_LARGE413OAuth ファイルがサイズ上限を超えています必要な認証情報だけを残します
AUTHORIZATION_UNAVAILABLE503ブラウザ認可、デバイスコード認可、またはサブスクリプション認証情報の更新が一時的に利用できませんチャネル機能、ネットワーク、サービスログを確認してください
AUTHORIZATION_STATE_INVALID400認可コールバックの state が無効または不一致です認可を新しく開始します
AUTHORIZATION_EXCHANGE_FAILED502認可コードから認証情報への交換に失敗しましたアップストリーム状態を確認して再認可します
STAGED_CREDENTIAL_NOT_READY409ステージ済み認証情報の認可が完了していません認可を完了してから接続します
STAGED_CREDENTIAL_EXPIRED410ステージ済み認証情報の期限が切れました再インポートまたは再認可します
STAGED_CREDENTIAL_CONSUMED409ステージ済み認証情報は使用済みです一覧を更新し、再接続しないでください
STAGED_CREDENTIAL_MISMATCH409ステージ済み認証情報が対象 Group と一致しません一致するチャネルと Group を選びます
DUPLICATE_CREDENTIAL_IDENTITY409同じサブスクリプションアカウントが Group に存在します既存アカウントを使うか、別の Group に接続します
CREDENTIAL_REAUTHORIZATION_REQUIRED409認証情報の再認可が必要ですOAuth 認可をやり直します
CREDENTIAL_AUTH_OUTCOME_UNKNOWN409認可結果を確認できません状態を更新し、すぐに認可を繰り返さないでください
CREDENTIAL_REFRESH_TEMPORARILY_UNAVAILABLE503認証情報を一時的に更新できません後で再試行するか、別の認証情報を使います
CREDENTIAL_VERSION_CONFLICT409操作中に認証情報が変更されました認証情報を更新して操作をやり直します
RESET_CREDIT_UNAVAILABLE409現在利用できるクォータリセット枠がありませんアップストリームが新しいリセット機会を提供するまで待ちます
RESET_CREDIT_REJECTED502アップストリームがクォータリセットを拒否しましたアカウント状態を確認し、アップストリームへ連絡します
RESET_CREDIT_OUTCOME_UNKNOWN503クォータリセット結果を確認できません同じ Idempotency-Key で再試行します
data はエラー契約の一部です

呼び出し元の判断に必要な場合だけ data を返します。競合リソース、項目位置、現在設定と ETag、操作 ID、失敗段階、再試行時刻、クォータ詳細などが含まれます。構造が宣言されていないエラーでは通常 data を返しません。

管理エラーの構造化 data

次の表には安定した構造を持つ管理エラーだけを示します。同じエラーコードでも別の状況では data が付かない場合があります。

エラーコードdata フィールド返される状況
VALIDATION_FAILEDentry, field, reason_code一部の認証情報フィールド検証が失敗したとき
AUTH_LOCKEDretry_after_seconds認証がロックされたとき。Retry-After ヘッダーも返されます
BAD_GATEWAYtrigger, checked_at_ms, successful_fetch_at_ms, not_modified, skipped, error_codeModels.dev の手動同期が失敗したとき
IDEMPOTENCY_KEY_REUSEDoperation_id, operation_kind冪等キーが別のリクエストに対応しているとき
IDEMPOTENCY_RESULT_EXPIREDoperation_id, operation_kind, resource_identity, completed_at_ms冪等結果が圧縮済みのとき
CONTROL_OPERATION_INCOMPLETEoperation_id, operation_kind, last_completed_stage, failed_stage, can_reconcileデータベースのコミット後も実行状態の復旧が完了していないとき
CONTROL_RECOVERY_PENDINGoperation_id, operation_kind, failed_stage, retry_after_ms先にコミットされた操作が現在の書き込みを妨げているとき
SETTINGS_VERSION_CONFLICTsettings, settings_etagIf-Match の値が古いとき
GROUP_IN_USEaccess_keys[] { id, name }AccessKey から参照中の Group を削除するとき
CHANNEL_TARGET_CONFLICTgroups[] { id, name }確認なしで同一チャネルターゲットを作成するとき
MODEL_NAME_CONFLICTconflicts[] { client_model, indexes }Group 内のモデル名またはエイリアスが競合するとき
MODEL_PRICE_UNPRICED_CONFIRMATION_REQUIREDid確認なしですべての価格を null にするとき
MODEL_PRICE_REFERENCEDid, reference_count, reference_group_countGroup から参照中の価格を削除するとき
MODEL_PRICE_AUTOMATIC_DELETE_FORBIDDENid自動同期された価格を削除するとき

データプレーンエラー§

GPT-Load が生成するデータプレーンエラーは小文字のスネークケースで、基本構造は { "code": "...", "message": "..." } です。コスト上限エラーでは構造化された errordata も返します。

エラーコードHTTP意味対処方法
invalid_access_key401AccessKey が存在しない、無効、期限切れ、または送信元が許可されていませんクライアントの AccessKey を確認します。この失敗はリクエストログに記録されません
protocol_endpoint_not_found404パスが有効なデータプレーンエンドポイントではありませんベース URL、プロトコル、パスを確認します
method_not_allowed405エンドポイントは存在しますが、HTTP メソッドが未対応ですエンドポイントで宣言されたメソッドを使います
invalid_protocol_request400リクエスト本文またはプロトコル項目を解析できませんクライアントプロトコルに合わせて修正します
model_required_by_filter400AccessKey にモデル制限がありますが、リクエストにモデル名がありませんモデルを指定するか、モデル制限を外します
no_available_candidate503現在ルーティング可能な Group または認証情報がありませんルート検査で具体的な reason_code を確認します
upstream_connect_failed502利用可能なアップストリームへ接続できませんネットワーク、プロキシ、アップストリームアドレスを確認します
upstream_timeout504アップストリーム要求がタイムアウトしましたリクエストログの送信・コミット状態を確認し、非冪等要求を無条件に再実行しないでください
upstream_protocol_error502アップストリーム応答を安全に処理できません応答形式、Content-Encoding、サービスログを確認します
protocol_conversion_unsupported422ネイティブ実行または安全な変換が可能なルートがありませんプロトコル、Operation、またはチャネルを変更します
request_too_large413データプレーン要求本文がサイズ上限を超えていますリクエスト本文を小さくします
unsupported_content_encoding415未対応の Content-Encoding が使われていますidentity、gzip、br、deflate、または zstd を使用してください
invalid_content_encoding400圧縮された要求本文をデコードできません本文を再エンコードし、ヘッダーを確認します
not_acceptable406クライアントが identity 応答を受け入れませんidentity 応答を許可します
model_list_too_large500表示可能なモデル一覧が安全な応答上限を超えていますAccessKey から見えるモデル範囲を縮小します
access_key_rate_limited429AccessKey が RPM 上限を超えましたRetry-After に従って待機します
access_key_cost_limit_exceeded429AccessKey が推定コスト上限に達しましたdata.recoverable、next_available_at_ms、blocking_rules を確認します
configuration_changed503リクエストが使った設定スナップショットは古くなっていますRetry-After に従って短時間待ち、再試行します

access_key_cost_limit_exceedederror には typecodemessage と省略可能な Unix 秒の resets_at が含まれます。data には recoverable、Unix ミリ秒の next_available_at_msblocking_rules が含まれます。各ブロックルールには idkindlimit_usdused_usd があり、周期ルールには period_secondswindow_ends_at_ms も含まれます。

アップストリームエラーは別の構造になる場合があります

ネイティブルートは秘匿化と安全確認後のアップストリームエラー本文を返し、変換ルートはクライアントプロトコルのエラー構造へ投影します。OpenAI、Anthropic、Gemini で項目が異なるため、すべての失敗が codemessage だけとは限りません。

リクエストログエラー§

最上位の error_code はリクエスト全体の最終結果、attempts[].error_code は 1 回のアップストリーム試行を表します。再試行後に成功した場合、最上位にエラーがなくても前の試行にはエラーコードが残ります。

次の表はリクエストログだけで追加使用する正規化コードを示します。データプレーン固定エラーと同名のコードは前節を参照し、重複掲載しません。

エラーコード意味対処方法
upstream_rate_limitedアップストリームが今回の試行をレート制限しましたRetry-After、クールダウン、後続試行を確認します
upstream_model_unavailableアップストリームモデルまたは候補が利用できませんモデル設定と後続候補を確認します
upstream_invalid_keyアップストリームがチャネル認証情報を拒否しました認証情報を更新し、失敗蓄積やブラックリストを確認します
upstream_authentication_requiredサブスクリプション認証情報の更新または再認可が必要です再試行判断を確認し、再認可します
upstream_host_errorアップストリームがサーバーエラーを返しましたGroup がスキップされたか、実際に再試行したか確認します
upstream_client_errorアップストリームがリクエスト自体を不正と判断しましたエラー要約とパラメーターを確認します。通常、認証情報を替える再試行は不適切です
upstream_errorこれ以上分類できないアップストリーム失敗です状態コード、要約、該当ルールを合わせて判断します
upstream_sse_errorアップストリームが SSE イベントでエラーを報告しましたストリームのコミット状態を確認します。出力開始後は再試行できません
upstream_stream_terminatedアップストリームストリームが完了前に切断されましたネットワークとストリームアイドルタイムアウトを確認します
upstream_stream_idle_timeoutアップストリームストリームから長時間データがありませんアイドルタイムアウトを調整するか、アップストリームを確認します
upstream_response_incompleteアップストリームが未完了状態を明示しましたエラー要約とアップストリーム Request ID を確認します
downstream_write_failedクライアントへの応答書き込みに失敗しましたクライアント切断、リバースプロキシ、ネットワークを確認します
client_canceledクライアントがリクエストをキャンセルしました通常は対処不要です
server_shutdownサービス終了時にリクエストがキャンセルされましたサービス復旧後、呼び出し元が再試行を判断します
internal_error分類可能な通常結果を生成できませんでした同じ Request ID のサービスログを確認します
credential_decrypt_failed候補認証情報を復号できません一致する ENCRYPTION_KEY を復元するか、認証情報を再登録します
credential_normalization_failed候補認証情報を実行形式へ正規化できません有効な認証情報を再登録します
credential_proxy_prepare_failed認証情報レベルのプロキシを初期化できませんこの認証情報のプロキシ設定を修正します
group_proxy_prepare_failedGroup レベルのプロキシを初期化できませんGroup のプロキシ設定を修正します
server_is_overloadedアップストリームが過負荷を明示しました再実行の安全性と後続候補を確認します
rate_limit_exceededアップストリームが容量制限を明示しましたクールダウンと後続候補を確認します
リクエストログには安全な要約を保存します

error_summary は秘匿化され長さも制限されます。元のエラー本文はログに保存しません。AccessKey 認証失敗は RequestLog 作成前に起きるため、invalid_access_key を返し、頻度制限されたセキュリティイベントだけを記録します。

リクエストログ項目§

リクエスト最上位

項目解釈
request_idUUID v4リクエスト詳細とサービスログを関連付ける GPT-Load リクエスト ID
statussuccess / error / incomplete / canceledリクエスト全体の最終状態
status_code0 / HTTP ステータスリクエスト全体の最終ステータスです。HTTP 応答が生成されなかった場合は 0 になります
error_code正規化エラーコード絞り込みと集計に使います。error_summary から逆算しないでください
error_summary秘匿化され、長さを制限した要約人による診断用で、アップストリーム原文の保持は保証しません
attempt_count0 以上の整数実際に記録されたアップストリームまたはローカル実行試行の数

attempts[] 内の試行フィールド

項目解釈
sequence1 から始まる整数このリクエスト内での試行順序
status_code0 / HTTP ステータスこの試行の結果ステータスです。アップストリームが応答しなかった場合は 0 になります
error_code正規化エラーコードこの試行の失敗理由です。成功時は空文字列です
error_summary秘匿化され、長さを制限した要約人によるトラブルシューティング専用
failure_categoryok / rate_limited / model_unavailable / invalid_key / upstream_host_error / client_error / conversion_unsupported / downstream_cancel / authentication_required / ambiguous安定した業務分類です。成功した試行は ok です
failure_originclient / upstream / downstream / internal / nullエラーの責任領域です。古いレコードは null の場合があります
failure_scoperequest / model / credential / group / nullエラーが影響する最小リソース範囲です。非該当または古いレコードは null です
retry_directivenone / refresh_credential / next_candidate / nullJudge が決定した再試行意図です。古いレコードは null の場合があります
effectnone / cooldown_credential / record_credential_failure / skip_group / nullこの試行が実行状態に与える唯一の効果です。古いレコードは null の場合があります
rule_id安定したルール識別子 / null決定を生成したルールです。古いレコードは null の場合があります
will_retrytrue / falseその後、別のアップストリーム試行が実際に始まったか
dispatch_statenot_sent / maybe_sent / local / null未送信、アップストリーム到達の可能性あり、GPT-Load 内で完結、または古いレコードで不明のいずれかです
response_startedtrue / falseこの試行で応答が生成されたかを示します。local でも true になる場合があります
committedtrue / falseクライアント出力を開始したか。コミット後は候補を安全に切り替えられません
upstream_request_idアップストリームリクエスト ID / nullアップストリームへの問い合わせに使用します。ローカル実行または ID が返らなかった場合は null です
actionterminate / retry / cooldown_credential / fail_credential / skip_group互換表示項目です。正確な判断には retry_directive と effect を使います

完全な例§

リクエストログ内の 1 回の失敗試行
status_code: 400
error_code: upstream_client_error
failure_category: client_error
failure_origin: upstream
failure_scope: request
retry_directive: none
effect: none
rule_id: fallback.http_client_error
will_retry: false
response_started: true
committed: false

アップストリームが 400 を返し、問題は今回のリクエストだけに影響すると判断されています。ゲートウェイは認証情報を替えて再試行せず、クールダウン、ブラックリスト、Group のスキップも行いません。秘匿化された要約とクライアントパラメーターを確認してください。

ルート検査の理由コード§

ルート検査は現在の設定と実行状態を読み取り専用でシミュレーションします。アップストリーム要求、Token 消費、認証情報のロック、リクエストログ書き込みは行いません。最上位の理由は全体、Group と認証情報の行は詳細な理由を示します。

原因コード階層意味対処方法
access_key_disabledAccessKeyAccessKeyが無効化されているAccessKeyのページで有効化する
access_key_expiredAccessKeyAccessKeyの有効期限が切れています新しいキーを作成するか、有効期限を延長する
protocol_filteredAccessKeyこのキーではこのプロトコルが選択されていませんキーで対応するプロトコルを追加選択
model_filteredAccessKeyリクエストされたモデルが許可範囲外であるキーのモデル制限をチェック
model_required_by_filterAccessKeyキーがモデルを制限しているが、リクエストにモデル名がないリクエストでモデルを明示するか、キーのモデル制限を外してください
operation_unsupportedリクエスト現在のプロトコルでこの Operation をサポートするチャネルがありませんこの機能をサポートする Group を使います
no_route_targetリクエストこのモデルまたは Operation のルートターゲットがありません少なくとも 1 つの Group でモデルが公開されていることを確認します
no_available_groupリクエストルートターゲットはありますが、利用可能な Group がありません各 Group の reason_code を確認します
native_route_requiredGroupリクエストがネイティブルートを要求しているが、この Group は変換でしか提供できないクライアントと同じプロトコルの Group を使ってください
group_disabledGroupGroupが無効化されていますこのGroupを有効化してください
group_filteredGroupこのGroupはこのAccessKeyの認可範囲に含まれていませんキーにそのGroupを追加してください
no_credentialsGroupGroupに認証情報がありませんGroupに認証情報を追加してください
group_weight_zeroGroup旧設定の Group の重みが 0 になっている自動の重み、または 1~100 の手動の重みに変更する
no_available_credentialGroupGroup 内の全認証情報が利用できません認証情報レベルの reason_code を確認します
credential_disabled認証情報認証情報が無効化されています有効化するか、別の認証情報を使用してください
credential_auth_unavailable認証情報サブスクリプションアカウントの認可が期限切れです再認可してください。サブスクリプションアカウントページを参照してください
credential_blacklisted認証情報認証情報がブラックリストに登録されています認証情報の有効性を確認して復帰します
credential_cooldown認証情報認証情報がクールダウン中です自動復帰を待つか、認証情報を追加して負荷を分散してください
credential_weight_zero認証情報旧構成に残った認証情報の重み 0自動の重み、または 1~100 の手動の重みに変更する
内部の除外理由は現在のルート検査では返されません

スケジューラは、実際のリクエスト候補をリクエスト開始時に取得した認証情報集合へ制限するために credential_not_allowed も定義しています。現在の /api/route/inspect はこのリクエスト単位の認証情報集合を受け取らないため、この理由コードを返しません。

設定変更後に ルート検査 を再実行すれば、実際のモデル要求を送らずに現在状態を確認できます。

再試行と復旧§

  • リクエストエラー——リクエストを修正し、認証情報の切り替えや健全性変更は行いません。
  • レート制限——Retry-After に従います。認証情報単位の制限では通常クールダウンし、別候補を試します。
  • 無効な認証情報——認証情報の失敗を記録し、連続失敗がしきい値に達するとブラックリストに入れます。
  • アップストリームホストエラー——現在の Group をスキップします。読み取り専用操作か、処理前の拒否が明示された場合だけ安全に再実行できます。
  • ストリーミング応答——クライアント出力開始後は候補を切り替えず、重複や不整合を防ぎます。
  • 結果不明の管理書き込み——元の Idempotency-Key を保持・再利用し、先に操作状態を確認します。

スケジューリング、クールダウン、ブラックリストの完全な仕組みを見る →

エラーと復旧 - GPT-Load