GoodPut AI

错误码与限流

两种协议下的错误结构、错误码对照、重试建议与限流策略。

错误按你调用的协议返回:OpenAI 兼容接口(/v1/chat/completions/v1/responses/v1/embeddings/v1/videos 等)按 OpenAI 的定义,Anthropic 兼容接口(/v1/messages)按 Anthropic 的定义。官方 SDK 可以直接按各自的异常类处理。

错误结构

OpenAI 兼容接口

{
  "error": {
    "message": "Your organization's balance is used up — top up in the console to continue; retrying will not help(组织余额已用完,请在控制台充值后继续;重试无效)",
    "type": "insufficient_quota",
    "param": null,
    "code": "credit_balance_exhausted",
    "goodput_reason": "balance_exhausted",
    "goodput_scope": "org"
  }
}

Anthropic 兼容接口/v1/messages/v1/messages/count_tokens):

{
  "type": "error",
  "error": {
    "type": "billing_error",
    "message": "Your organization's balance is used up — …(组织余额已用完…)",
    "goodput_reason": "balance_exhausted",
    "goodput_scope": "org"
  },
  "request_id": "5b1d…"
}
字段说明
error.type / error.code与 OpenAI、Anthropic 官方取值一致,官方 SDK 按它们抛对应的异常
error.goodput_reason拒绝原因,两种协议下取值相同,适合跨协议统一处理(见下表)
error.goodput_scope额度类错误撞的是哪一层(见额度类错误
error.message中英双语说明,供人排查,不要用于程序判断

错误码对照

状态码goodput_reasonOpenAI type / codeAnthropic error.type常见原因处理建议
400invalid_requestinvalid_request_errorinvalid_request_error请求体不合法:缺 model / messages、参数取值不合法按错误信息修正请求
400unsupported_optioninvalid_request_error / unsupported_valueinvalid_request_error模型不提供请求的选项,如视频模型没有该分辨率档位按错误信息里列出的可用值修改
400context_length_exceededinvalid_request_error / context_length_exceededinvalid_request_error(message 以 prompt is too long 开头)输入超出模型上下文窗口精简输入或换更大窗口的模型
400content_policyinvalid_request_error / content_policy_violationinvalid_request_error内容被安全策略拦截调整输入
401authentication_failedinvalid_request_error / invalid_api_keyauthentication_error未携带 Key,或 Key 无效、已删除、已过期、已被停用检查 Authorization: Bearer(或 x-api-key)头
403permission_deniedinvalid_request_error / permission_deniedpermission_errorKey 无权访问该资源检查 Key 的权限设置
404model_not_foundinvalid_request_error / model_not_foundnot_found_error模型 ID 不存在、未上架、未对你的账户开通,或该模型不支持这个接口对照模型库确认模型 ID;ID 无误请联系客服开通
404not_foundinvalid_request_error / not_foundnot_found_error请求的资源不存在,如视频任务 ID检查 ID
409conflictinvalid_request_error / conflictconflict_error与资源当前状态冲突,如视频还没生成完就下载等状态变化后再请求
413request_too_largeinvalid_request_error / request_too_largerequest_too_large请求体字节数超过上限缩小请求体
429balance_exhaustedinsufficient_quota / credit_balance_exhaustedbilling_error余额用完,含欠费冻结充值后自动恢复,无需重建 Key;重试无效
429spend_limit_reachedinsufficient_quota / 见额度类错误billing_errorKey、团队、成员或套餐的额度到顶(余额可能还有)调高对应额度,或等额度刷新;重试无效
429rate_limitedrate_limit_error / rate_limit_exceededrate_limit_error请求频率、token 速率或并发超限retry-after 头等待后重试
500internal_errorserver_errorapi_error平台内部错误稍后重试
502upstream_errorserver_errorapi_error上游模型服务出错稍后重试;可配置 fallbacks 自动降级
503overloadedservice_unavailable_error / server_is_overloaded—(见下一行)模型当前负载过高、暂无可用容量retry-after 头等待后重试
529overloadedoverloaded_error同上(Anthropic 协议用 529)同上
503internal_errorserver_errorapi_error服务暂时不可用稍后重试
504upstream_timeoutserver_error / timeouttimeout_error上游模型超时重试;长输出建议使用流式

余额用完返回 429,不是 402。 429 也用于限流,请按 goodput_reason(或 OpenAI 的 code、Anthropic 的 error.type)区分:余额和额度类错误重试无效,限流可以按 retry-after 重试。

额度类错误

balance_exhaustedspend_limit_reached 的区别在于钱是不是真的没了:前者是付款方(个人账户或组织)的余额用完,后者是某一层设定的上限到了、余额可能还有。goodput_scope 说明撞的是哪一层:

goodput_scope含义OpenAI code
org组织余额用完credit_balance_exhausted
account个人账户余额用完credit_balance_exhausted
key这把 Key 的额度上限api_key_spend_limit_exceeded
team / project团队或项目的额度上限project_spend_limit_exceeded
member你在该团队的成员额度member_spend_limit_exceeded
subscription套餐额度subscription_quota_exceeded
user组织内成员个人的额度上限spend_limit_exceeded
end_user你为终端用户(请求里的 user 字段)设的额度上限spend_limit_exceeded
tag按标签设的额度上限spend_limit_exceeded

重试建议

错误响应会带上重试相关的头,官方 SDK 会自动遵守:

  • x-should-retry: false:重试没有意义(参数错、Key 无效、余额或额度用完等)。官方 OpenAI / Anthropic SDK 看到它就不会自动重试。
  • retry-after:限流、过载时建议等待的秒数。
可重试不可重试
rate_limitedoverloadedupstream_timeoutupstream_errorinternal_error其余所有 goodput_reason,包括余额和额度类的 429

跨模型容灾建议直接用请求级 fallbacks 参数,由网关自动完成切换。

流式请求中的错误

  • 还没有输出任何内容就失败时,返回的是普通的错误响应(真实状态码 + 上面的 JSON 结构)。
  • 已经开始输出后才失败时,HTTP 状态码已是 200,错误以一个事件发出:OpenAI 兼容接口是 data: {"error": {…}},Anthropic 兼容接口是 event: error + 上面的 Anthropic 结构。官方 SDK 都会把它转成异常。

限流策略

限流按账户与项目层级设定(请求频率与 token 速率双维度)。组织管理员可在控制台为项目配置独立限速。

企业客户可联系我们申请提额或独享配额。

报障时提供什么

每个错误响应都带请求 ID:响应头 x-goodput-request-id(OpenAI 兼容接口另有 x-request-id,Anthropic 兼容接口另有 request-id,body 里也有 request_id)。它和控制台「调用日志」里的 request_id 是同一个(见用量与调用日志)。报障时连同时间点、模型 ID 一起提供给支持人员,可以最快定位问题。

本页目录