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.
客服
您好!有什么可以协助?
请留下消息,我们会尽快回复。
错误代码 | BazaarLink