BazaarLinkBazaarLink
登入
文件API 參考SDK 參考Agent 應用AI Skills
章節導覽

錯誤代碼

錯誤代碼

錯誤回應格式

錯誤 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 則表示圖片太大。請依下表找到原因與對應的處理方向。

模型與端點
模型查找、生命週期、定價、模態及端點相容性錯誤。
代碼
HTTP 狀態
unknown_model400
invalid_model_id400
model_not_found404
model_retired410
model_endpoint_mismatch400
embedding_on_chat_endpoint400
model_not_priced400
invalid_modality_for_model400
請求與安全
參數、上下文、工具、結構描述及內容安全拒絕。
代碼
HTTP 狀態
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 編輯、輸出及圖片管線錯誤。
代碼
HTTP 狀態
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
上游路由
經安全處理的供應商連線、驗證、限流及可用性錯誤。
代碼
HTTP 狀態
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 金鑰的請求不適用前兩項。

速率限制、預算與緊急煞車

這些控制可能拒絕原本有效的請求。它們與供應商錯誤不同,也需要不同的復原方式。

控制機制
HTTP 狀態
辨識方式
請求速率限制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 標頭。

錯誤處理

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,  # Avoid double retries; this example handles them.
)

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)

串流錯誤格式

在任何 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.
客服
您好!有什麼可以協助?
請留下訊息,我們會盡快回覆。