所有错误都使用相同的 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 响应之内报告错误:
Anthropic 端点的错误格式
章节标题“Anthropic 端点的错误格式”POST /v1/messages 以 Anthropic 的格式返回所有错误:type 为 error,错误本身在 error 中,request_id 是顶层字段。错误代码和 HTTP 状态码与下表相同。详见对话。
错误代码
章节标题“错误代码”每个代码都链接回自己的行,因此 doc_url 中的锚点(#<code>)会打开对应的条目。
| 代码 | HTTP 状态码 | 类型 | 说明 |
|---|---|---|---|
invalid_request | 400 | invalid_request_error | 请求格式有误或取值超出范围。如果有效取值已知,会列在 details.allowed 中。 |
unauthorized | 401 | authentication_error | API 密钥缺失、格式有误、未知、已被吊销或已过期。响应不会说明属于哪一种情况。 |
balance_insufficient | 402 | insufficient_balance | 可用余额低于该请求需要预留的金额。error.details.limit_source 为 balance。 |
key_limit_exceeded | 402 | insufficient_balance | 该请求会使 API 密钥超出其支出上限。error.details.limit_source 为 key,error.details.resets_at 说明计数器何时重新开始。 |
forbidden | 403 | permission_error | 访问被拒绝。文件的签名 URL 无效、被改动或已过期时,也会返回此代码。 |
account_suspended | 403 | permission_error | 账户已被停用,图像、视频和对话请求会被拒绝。请联系支持团队。余额、充值、API 密钥和任务仍可使用。 |
not_found | 404 | not_found_error | 请求的资源不存在。 |
model_not_found | 404 | not_found_error | 目录中不存在该模型 ID。对于不是文本模型的模型,对话端点也会返回此代码。 |
method_not_allowed | 405 | invalid_request_error | 该路径存在,但不支持所用的方法。Allow 头列出了支持的方法。OPTIONS 仅用于应答 CORS 预检请求。 |
idempotency_conflict | 409 | conflict_error | 该 Idempotency-Key 已被用于另一个内容不同的请求。 |
payload_too_large | 413 | invalid_request_error | 请求体超过了允许的大小。error.details.max_bytes 为大小上限。 |
content_policy_violation | 422 | content_policy_error | 模型提供方因内容拒绝了提示词、参考图像或生成的输出。该请求不会计费。 |
rate_limited | 429 | rate_limit_error | 模型提供方正在限制请求。同一地址提交的举报过多时,POST /v1/reports 也会返回该错误代码。请在 Retry-After 响应头给出的时间之后重试。 |
concurrency_limited | 429 | rate_limit_error | 模型提供方繁忙,暂时无法处理该请求。这不是对账户中任务数量的限制。请稍后重试。 |
internal_error | 500 | api_error | 我们这一侧发生了意外错误。 |
upstream_error | 502 | upstream_error | 上游提供方返回了错误。 |
upstream_unavailable | 503 | overloaded_error | 上游提供方暂时容量不足,请稍后重试。 |
webhooks_unavailable | 503 | api_error | 当前环境暂不可使用 Webhook,请稍后重试。 |
所有价格均以 USD 计价,标价已包含我们的加价。