錯誤碼與重試

HopBase 的錯誤回應結構、各狀態碼的含義與能否重試、串流請求出錯的表現,以及回報問題時需要提供的資訊。

依現象快速定位請用錯誤速查,本頁是完整口徑。並行上限、逾時與計費規則見並行、逾時與計費

錯誤回應結構

OpenAI 協定(/v1/chat/completions/v1/responses/v1/images/*/v1/video/*):

{ "error": { "message": "…", "type": "invalid_request_error", "code": "insufficient_quota" } }

Anthropic 協定(/v1/messages):

{ "type": "error", "error": { "type": "invalid_request_error", "message": "…" } }

文案語言依請求標頭 Accept-Language 回傳,未指定時為英文。程式裡請依 HTTP 狀態碼與 code 判斷,不要比對文案。

狀態碼

狀態碼常見原因能否重試怎麼做
401沒帶金鑰、金鑰不完整、已停用或過期回主控台「API 金鑰」重新複製或新建
402帳戶餘額用完;這把金鑰的額度用完;影片提交時餘額不足以涵蓋在途預留儲值後可儲值或調整金鑰額度;不要循環重試
403方案限制了用戶端,或該能力未開通換成該方案適用的用戶端或方案
404模型不在這把金鑰的方案裡、路徑不屬於該方案、方案已下架用該金鑰呼叫 GET /v1/models 核對 ID;路徑見Base URL 與協定
413請求內容超過 60 MB壓縮素材,或在模型支援時改傳 URL
429帳戶或金鑰並行已達上限;或該模型目前受限流Retry-After 稍後重試並降低並行
499用戶端在完成前斷線(手動中斷或讀取逾時先到)長輸出改用串流,並調大用戶端讀取逾時
502 / 503該模型暫時無法使用,系統已自動換帳號重試仍未成功退避後重試,或換同系列的其他模型
504上游處理逾時退避後重試;長任務改用串流或非同步介面

有一類 404 其實是「暫時無法使用」

收到 Model "X" is not supported by any configured account in this group 時,先用這把金鑰呼叫 GET /v1/models:清單裡這個模型,代表只是暫時無法使用,依 502 / 503 處理;清單裡沒有,才是方案不含該模型。

重試規則

  • 不要原樣重試:400、402、403、404、413、422。這些要先改請求、設定或餘額。
  • 退避後重試:429、502、503、504,以及串流輸出中斷。建議間隔 2 秒、5 秒、15 秒,最多 3 次。
  • 429 會帶重試提示標頭Retry-After(秒)與 Retry-After-Ms(毫秒),有就依它等待。
  • 非同步任務提交成功後不要重複提交:影片與非同步生圖提交成功即已建立任務,重複提交會產生多個任務並各自計費,改為輪詢任務狀態。

串流請求出錯

串流請求一旦開始輸出,HTTP 狀態碼就已經是 200,之後的錯誤透過事件下發,不會再改狀態碼:

  • OpenAI 協定:event: error,Responses 協定為 response.failed
  • Anthropic 協定:event: error

用戶端要在讀取串流的迴圈裡處理錯誤事件。已收到的片段無法續傳,需要整條請求重新發起。

回報問題時請提供

  • 回應標頭 x-request-id(每條回應都有,是定位該請求的唯一識別)
  • 出現時間(含時區)與模型 ID
  • 完整的錯誤原文與 HTTP 狀態碼

帶上這些資訊聯絡我們,可以直接定位到那一條請求。

本頁目錄