跳转到内容

错误

所有错误都使用相同的 JSON 响应体。失败的请求绝不会以 HTTP 200 返回。把错误放在 200 响应之内的两种情形,见响应中的错误。

{
"error": {
"message": "Model \"example/unknown\" was not found.",
"type": "not_found_error",
"code": "model_not_found",
"param": "model",
"request_id": "req_0123456789abcdef0123456789abcdef",
"doc_url": "https://example.com/docs/errors/#model_not_found"
}
}
  • message:面向人的简短说明。
  • type:错误类别。
  • code:供程序使用的稳定标识符。请根据 code 而不是 message 判断分支。
  • param:导致错误的请求参数,没有则为 null。
  • request_id:请求的 ID。联系支持时请保留它。
  • doc_url:指向本页中该代码条目的链接。
  • details:可选的机器可读补充信息。具体字段取决于错误:
    • 对于取值为固定集合的字段,details.allowed 会列出可接受的值。
    • 对于超出范围的数字,details.minimum 和 details.maximum 会给出允许的范围。
    • 对于 402,details.limit_source 为 balance 或 key。其他字段给出相关金额;如果是密钥的支出上限,还会给出周期和 details.resets_at。详见余额与 API 密钥限额。
    • 对于无法使用的参考图像 URL,details.reason 会说明原因。
    • 对于以 data URI 发送且过大的参考图像,details.max_bytes 为大小上限。
    • 对于 payload_too_large,details.max_bytes 为大小上限。
    • 当等待任务结果的请求因任务失败而失败时,details.job_id 为该任务的 ID。
    • 当请求取决于任务的状态时,例如取消已结束的任务,或下载没有文件的视频,details.status 为该任务的状态。

有两种情形会在 200 响应之内报告错误:

  • 流式对话响应在开始之后失败。错误会作为流中的一个事件到达。详见对话。
  • 失败的任务。读取任务会返回 200,任务的 error 字段与错误响应包含相同的字段。详见任务。

POST /v1/messages 以 Anthropic 的格式返回所有错误:type 为 error,错误本身在 error 中,request_id 是顶层字段。错误代码和 HTTP 状态码与下表相同。详见对话。

每个代码都链接回自己的行,因此 doc_url 中的锚点(#<code>)会打开对应的条目。

代码HTTP 状态码类型说明
invalid_request400invalid_request_error请求格式有误或取值超出范围。如果有效取值已知,会列在 details.allowed 中。
unauthorized401authentication_errorAPI 密钥缺失、格式有误、未知、已被吊销或已过期。响应不会说明属于哪一种情况。
balance_insufficient402insufficient_balance可用余额低于该请求需要预留的金额。error.details.limit_source 为 balance。
key_limit_exceeded402insufficient_balance该请求会使 API 密钥超出其支出上限。error.details.limit_source 为 key,error.details.resets_at 说明计数器何时重新开始。
forbidden403permission_error访问被拒绝。文件的签名 URL 无效、被改动或已过期时,也会返回此代码。
account_suspended403permission_error账户已被停用,图像、视频和对话请求会被拒绝。请联系支持团队。余额、充值、API 密钥和任务仍可使用。
not_found404not_found_error请求的资源不存在。
model_not_found404not_found_error目录中不存在该模型 ID。对于不是文本模型的模型,对话端点也会返回此代码。
method_not_allowed405invalid_request_error该路径存在,但不支持所用的方法。Allow 头列出了支持的方法。OPTIONS 仅用于应答 CORS 预检请求。
idempotency_conflict409conflict_error该 Idempotency-Key 已被用于另一个内容不同的请求。
payload_too_large413invalid_request_error请求体超过了允许的大小。error.details.max_bytes 为大小上限。
content_policy_violation422content_policy_error模型提供方因内容拒绝了提示词、参考图像或生成的输出。该请求不会计费。
rate_limited429rate_limit_error模型提供方正在限制请求。同一地址提交的举报过多时,POST /v1/reports 也会返回该错误代码。请在 Retry-After 响应头给出的时间之后重试。
concurrency_limited429rate_limit_error模型提供方繁忙,暂时无法处理该请求。这不是对账户中任务数量的限制。请稍后重试。
internal_error500api_error我们这一侧发生了意外错误。
upstream_error502upstream_error上游提供方返回了错误。
upstream_unavailable503overloaded_error上游提供方暂时容量不足,请稍后重试。
webhooks_unavailable503api_error当前环境暂不可使用 Webhook,请稍后重试。