Crescendo Lab 文件 部署
正體中文
註冊開始用

Gateway 錯誤代碼

Gateway 的 /v1 端點會回傳的每一個錯誤代碼,附上 HTTP 狀態碼、重試有沒有用,以及怎麼修。

最後更新

代碼在哪裡#

每個端點都用自己協定的錯誤格式回答,官方 SDK 才讀得懂:

  • /v1/chat/completions 和 /v1/responses:{"error": {"message", "type", "param", "code"}}。代碼在 error.code。
  • /v1/messages 和 /v1/messages/count_tokens:{"type": "error", "error": {"type", "message"}}。代碼就是 message;429 例外,它帶的是看得懂的訊息,代碼放在 error.code。
  • /v1/models 用發出請求的用戶端的格式回答:請求帶有 anthropic-version 或 x-api-key 時用 Anthropic 格式,否則用 OpenAI 格式。

供應商自己寫的拒絕(關於你請求內容的 400、413 或 422),會照供應商的原文轉回給你,沒有 Gateway 代碼。

重試標頭:Retry-After 表示要等幾秒。X-Should-Retry: false 告訴 OpenAI 和 Anthropic SDK 完全不要重試。

是 Gateway 的問題嗎?#

收到 5xx 錯誤,或完全沒有回應?Gateway 狀態頁不用登入,會從你的瀏覽器檢查我們託管的 Gateway 是否就緒,並說明每種結果該怎麼做。

代碼一覽#

代碼狀態碼重試怎麼辦
application_key_required401不要用 Authorization: Bearer <key> 送出金鑰(或用 x-api-key,/v1/chat/completions 除外)。
application_key_not_accepted401不要金鑰已撤銷、已到期、打錯,或是從允許清單以外的位址使用。到金鑰清單檢查,或建立一把新的。
gateway_key_attempts_exceeded429等 Retry-After 後你的位址送出太多不被接受的金鑰。先修正工具送出的金鑰,再等一下。
gateway_key_model_not_allowed403不要金鑰的模型允許清單不含這個模型。改用清單裡的模型或 auto,或修改金鑰的允許清單。
server_application_required403不要請求來自瀏覽器(有 Origin 標頭),或帶了不該有的 query string。請從伺服器、CLI 或腳本呼叫 Gateway。
inference_not_admitted403不要這個工作區目前不能使用 Gateway,或選到的模型不能使用。請在 AI Gateway 頁申請開通。
model_not_enabled403不要工作區的模型設定排除了這個模型。改用其他模型或 auto,或請擁有者或管理員開放它。
model_not_found404, 400不要模型不存在,或這個端點沒有允許的模型能處理這個請求。改用 GET /v1/models 裡的名稱或 auto。
video_not_found404不要這把 API key 沒有建立過這個 id 的影片。影片只能用建立它的那把 key 讀取。
invalid_model400不要agentlab/… 的名稱不是模型。改用 auto 或 GET /v1/models 裡的名稱。
invalid_provider400不要provider.only 裡有不是供應商的名稱、排除了你指定的模型,或列出的供應商沒有任何模型能處理這個請求(error.param 為 provider.only)。修正清單;訊息會列出可用的供應商。
unsupported_parameter400不要請求帶了 Gateway 不接受的 OpenAI 欄位(error.param 是那個欄位)。移除該欄位。
prompt_reference_invalid400不要在 /v1/prompts/{prompt}/completions 以提示詞的 id 或 slug 指名,可在後面加 @<版本>。
prompt_not_found404不要金鑰所屬的工作區沒有這個名稱的提示詞或版本。請到該工作區的「提示詞」分頁確認。
prompt_variables_mismatch400不要variables 必須剛好是提示詞的變數。訊息會列出缺少的變數與提示詞沒用到的變數。
prompt_variables_invalid400不要variables 必須是值皆為字串的物件。
prompt_messages_not_accepted400不要呼叫提示詞時送 variables,不送 messages:訊息由提示詞提供。
prompt_too_large400不要填入這些變數後的提示詞超過單一請求的大小上限。請縮短變數值。
invalid_inference_request400不要Chat Completions 的 body 用了 Gateway 不接受的欄位或值。見 API 參考。
invalid_request400不要Responses 的 body 要求了儲存的狀態(previous_response_id、conversation、prompt)或被拒絕的工具。param 會寫出是哪個欄位。
request_key_invalid400不要Idempotency-Key 最多只能送一次,長度要在 8 到 128 個字元之間。
request_key_already_used409不要這個 Idempotency-Key 已經用過了。新的請求請送新的 key。
routing_header_invalid400不要X-AgentLab-Routing 必須剛好是 auto,而且只送一次。
invalid_metadata400不要X-AgentLab-Metadata 或內文 metadata 裡的標籤無法記錄;訊息會說違反哪一條。送一個最多 16 個字串值的 JSON 物件,鍵為 1 到 64 個英數字、_、. 或 -,值為 1 到 512 個字元。見標籤。
json_required415不要送出 Content-Type: application/json。
request_too_large413不要body 超過端點接受的大小:Chat Completions、語音和圖片生成是 1 MiB,Messages 和 Responses 是 32 MiB,語音轉文字是 26 MiB(音檔最多 25 MiB),圖片編輯和影片是 64 MiB。
request_body_unreadable400要請求的 body 在宣告的長度之前就中斷了,或沒有及時送達。重新送出請求。
gateway_guardrail_blocked400不要工作區的防護規則找到會擋下的內容(卡號、API 金鑰、清單上的字詞……),訊息會寫出是哪一項檢查。移除那段內容,或請工作區管理員在 AI Gateway › 開始使用調整防護規則。
inference_allowance_exceeded429不要某個每月額度、部門上限或滾動時段已經用完,訊息會寫出是哪一個。調高它,或等額度重設。Free 方案時也可能是方案內含的請求數或模型花費(gateway_plan_requests、gateway_plan_spend);儲值方案則是餘額不足(gateway_balance)。在 AI Gateway › 方案 儲值,同一把金鑰立即可用。
gateway_rate_limited429等 Retry-After 後這把金鑰或工作區每分鐘送出的請求數或 token 數超過了速率上限,或同時處理中的音訊、圖片、影片請求已達 Gateway 的上限。等一下,或調高上限。
provider_rate_limited429等 Retry-After 後模型供應商忙碌中。SDK 會自己等待並重試。
count_tokens_concurrency_exceeded429等 Retry-After 後同時送出太多計算 token 的請求。一秒後再試。
provider_overloaded529要模型供應商超載。稍後再試,或改用 auto 或其他模型。
inference_failed502要,一次供應商沒能回答。如果一直失敗,到 AI Gateway › 用量打開這個請求查看。
settlement_pending503不要模型已經回答,但用量還沒能記錄,所以先不交出回答。請不要重送:它會自己結算。
inference_unavailable503要Gateway 連不到做決定所需的服務。稍後再試。
gateway_unavailable503要Gateway 伺服器正在啟動或重新載入設定。稍後再試。
gateway_not_configured503不要這台伺服器沒有設定 Gateway。如果是自行架設的 Gateway,請檢查它的部署設定。
transport_deadline_unavailable503要伺服器無法設定連線的時間限制。請重試。

每次建置都會拿這張表和 Gateway 的程式碼比對:Gateway 可能送出、但這裡沒有列的代碼,會讓建置失敗。