錯誤代碼 錯誤回應格式 錯誤 envelope 依端點而異。若有 error.type,請搭配 HTTP 狀態碼判斷;error.code 可能是字串或數字狀態碼,也可能省略;error.message 僅供顯示。
{
"error" : {
"message" : "Insufficient credits. Please top up to continue." ,
"type" : "invalid_request_error" ,
"code" : "insufficient_credits"
}
} HTTP 狀態與 error.code 錯誤 envelope 依端點而異。若有 error.type,請搭配 HTTP 狀態碼判斷;error.code 可能是字串或數字狀態碼,也可能省略;error.message 僅供顯示。
424依賴失敗 您自行設定的 BYOK 金鑰被上游供應商拒絕;請在 BYOK 設定中檢查或輪替。此錯誤只會在 strict 模式出現
400請求無效 請求格式錯誤、messages 陣列為空,或缺少必填欄位
401未授權 API 金鑰遺失、無效或已停用
402需要付款 帳戶點數不足、單一金鑰花費上限已達,或每週 / 每月預算上限已達
403禁止存取 帳戶已停用或沒有此操作的權限
404找不到資源 指定的模型、生成工作、金鑰或其他資源不存在
409狀態衝突 資源尚未進入必要狀態,例如影片工作尚未完成
410資源已移除 指定模型已退役,必須改用其他模型
413請求體過大 請求 body 超過 10 MB;請縮小內容或分拆請求
416範圍無法滿足 生成影片內容所要求的 byte range 無效
429請求過多 已超過速率限制;請查看 Retry-After 標頭後再重試
432免費額度用盡 Tavily 相容端點(/v1/search、/v1/extract、/v1/crawl、/v1/map):免費搜尋額度已用完,或餘額為 0 以下;請儲值後繼續。回應內容為 Tavily 格式:{"detail":{"error":"..."}}
500伺服器錯誤 BazaarLink 內部錯誤
502閘道錯誤 所有上游來源皆無法處理;請求會回傳錯誤。
503服務不可用 此模型沒有設定上游提供者;請聯絡管理員
504閘道逾時 上游連線或串流停滯並超過等待時間
機器可讀的帳務代碼 同樣是 402,也可能代表不同的帳務控制。請依下列穩定代碼顯示正確的處理方式。
byok_key_invalid您自行設定的 BYOK 金鑰被上游供應商拒絕;請在 BYOK 設定中檢查或輪替。此錯誤只會在 strict 模式出現。
budget_cap_reached已達每週或每月的提醒型預算上限;提高或重設預算上限。
credit_limit_exceeded月結組織已用盡硬性信用額度;請聯絡帳務人員。
insufficient_credits預付用戶或組織無法保留足夠餘額;請先加值。
spend_limit_exceededAPI 金鑰已達每日、每週或每月花費上限。
capacity_unavailable此模型暫時容量不足,請稍後重試;Retry-After 標頭會告知等待秒數。
詳細錯誤代碼 API 請求失敗時,error.code 會告訴你更具體的原因。即使兩個錯誤都是 HTTP 400,處理方式也可能不同:例如 unknown_model 表示模型名稱有誤,image_too_large 則表示圖片太大。請依下表找到原因與對應的處理方向。
模型與端點
模型查找、生命週期、定價、模態及端點相容性錯誤。
unknown_model400
invalid_model_id400
model_not_found404
model_retired410
model_endpoint_mismatch400
embedding_on_chat_endpoint400
model_not_priced400
invalid_modality_for_model400
請求與安全
參數、上下文、工具、結構描述及內容安全拒絕。
missing_required_field400
unsupported_param400
max_tokens_invalid400
context_too_long400
tool_use_unsupported400
malformed_tool_messages400
invalid_response_format_schema400
invalid_tools_definition400
content_moderation403
content_filter403
unknown_4xx400
圖片生成與編輯
圖片輸入、multipart 編輯、輸出及圖片管線錯誤。
invalid_image_url400
input_images_not_supported400
invalid_content_type400
mask_not_supported400
unsupported_response_format400
missing_prompt400
missing_image400
too_many_images400
invalid_image_type400
image_too_large400
invalid_n400
pipeline_error502
no_images502
上游路由
經安全處理的供應商連線、驗證、限流及可用性錯誤。
upstream_unreachable502
upstream_auth_failed502
upstream_rate_limited429
capacity_unavailable429
upstream_unavailable502/503
byok_key_invalid424
內容審查 所有請求在送往模型端之前,都會先經過自動化內容審查。不符合使用規範的請求會被拒絕,不會送達模型,並回傳 403 錯誤。
會被攔截的內容類別 審查依據我們的使用規範(Acceptable Use Policy)進行,主要攔截以下類別的內容:
性剝削內容 暴力威脅 違法行為的操作指導 生物危害相關內容 403 回應格式 請求被審查攔截時,會收到以下格式的錯誤回應:
{
"error" : {
"message" : "Your prompt was blocked by content moderation." ,
"type" : "invalid_request_error" ,
"code" : "content_filter"
}
} 被攔截的請求不會計費——你不會為被拒絕的請求付費。
誤判申訴 如果你認為某次請求被誤判攔截,請聯繫支援團隊並附上請求時間與(如方便的話)request id,我們會協助複查。
隱私說明 請求會經過自動化內容審查,最新輸入的文字與圖片可能送交第三方內容安全評分服務。
判定為違規、疑似違規、接近門檻或隨機抽樣的請求,我們可能保存其全文或前段文字,供合規舉證、爭議處理與稽核之用,不承諾固定刪除期限。
其他一般成功請求不保存提示詞與回應內容;使用 ZDR 金鑰的請求不適用前兩項。
速率限制、預算與緊急煞車 這些控制可能拒絕原本有效的請求。它們與供應商錯誤不同,也需要不同的復原方式。
請求速率限制 429字串 code 或數字 code 429;請使用 Retry-After 與 X-RateLimit-* 標頭。
限流懲罰封鎖 429數字 code 429、暫時限制訊息及 Retry-After。
全域支出緊急煞車 503數字 code 503、全域支出上限訊息,以及 30 或 300 秒的 Retry-After。
組織/團隊/成員/使用者支出煞車 429數字 code 429,訊息會指出 spend circuit breaker 及受影響範圍。
帳務與預算控制 402使用上方列出的穩定帳務字串代碼。
錯誤 envelope 依端點而異。若有 error.type,請搭配 HTTP 狀態碼判斷;error.code 可能是字串或數字狀態碼,也可能省略;error.message 僅供顯示。
影片與媒體資源狀態 影片驗證通常回傳數字 code 400;工作不存在為 404、模型退役為 410、影片內容尚未完成為 409、影片 byte range 無效為 416。重試前請先輪詢至完成,或修正 Range 標頭。
重試策略 只有在不修改請求也可能恢復的錯誤才應重試。若有 Retry-After,請依指定秒數等待;否則使用帶 jitter 的指數退避。限制重試次數,也不要同時疊加 SDK 自動重試與手動重試。
可退避重試
429、502、503、504。有 Retry-After 時必須優先遵守。生成類請求若遇到結果不明的網路中斷,應先查詢原工作,避免建立第二個工作。
修正後再重試
400、401、402、403、404、409、410、413、416。請先修正請求、憑證、餘額、權限、資源狀態或 Range 標頭。
錯誤處理 Python TypeScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import random
import time
from openai import OpenAI, APIStatusError
client = OpenAI(
base_url="https://api.bazaarlink.ai/v1" ,
api_key="sk-bl-YOUR_API_KEY" ,
max_retries=0 ,
)
RETRYABLE = {429 , 502 , 503 , 504 }
for attempt in range (5 ):
try :
response = client.chat.completions.create(
model="openai/gpt-4o" ,
messages=[{"role" : "user" , "content" : "Hello!" }],
)
break
except APIStatusError as error:
if error.status_code not in RETRYABLE or attempt == 4 :
raise
retry_after = error.response.headers.get("Retry-After" )
delay = (
float (retry_after)
if retry_after
else min (8 , 0.5 * (2 ** attempt)) + random.uniform(0 , 0.25 )
)
time.sleep(delay)
⌄ 顯示全部 29 行串流錯誤格式 在任何 token 串流之前發生的錯誤,會以標準 HTTP 錯誤回應(JSON body)回傳。
串流一旦開始,HTTP 回應已經是 200。用戶端必須解析每個 SSE data frame;只要出現頂層 error,或 choices[0].finish_reason === "error",就應視為失敗且回應不完整。
若串流開始後才失敗,BazaarLink 可能送出最後一個 SSE 事件,內含頂層 error 物件,之後送出 data: [DONE]。請將此回應視為不完整,不要把部分輸出當成完成的結果。
data: {"error":{"message":"The request could not be completed.","type":"upstream_error","code":502}}
data: [DONE]
// Branch on error.code; error.type can vary by failure path.