错误
Tokener.ai 模型 API 的错误响应格式与错误码。
模型 API 的每个响应——无论成功或出错——都带有 x-request-id 与 request-id
响应头(req_<32 位十六进制字符>)。联系支持时请附上该值。
非流式错误
出错时返回非 2xx 的 HTTP 状态码与 JSON 响应体,格式与请求所用协议一致。
OpenAI 形态的路径(/models、/models/user、/chat/completions、
/embeddings、/responses):
{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"param": null,
"code": "invalid_api_key"
}
}Anthropic 形态的路径(/messages):
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key."
},
"request_id": "req_1f2e3d4c5b6a7988a1b2c3d4e5f60718"
}模型拒绝可识别的参数时,HTTP 400 保留 invalid_request,并在 error.param 中标明参数。例如:
{
"error": {
"message": "Invalid value for parameter 'temperature'.",
"type": "invalid_request_error",
"param": "temperature",
"code": "invalid_request"
}
}不支持的字段使用 This model does not support parameter 'store'.。
不兼容的组合使用 Parameters 'tools' and 'reasoning_effort' cannot be used together with this model.。
对于可识别的采样限制,消息说明接受条件:
Parameter 'temperature' must be 1 unless 'reasoning_effort' is 'none' with this model.。
单个采样参数受限时,error.param 保留该参数名。Chat 限制同时列出 logprobs、top_p 和 top_logprobs 时,error.param 指向推理强度字段,消息列出这三个参数。
可识别的错误可以列出支持的值或改正方法,例如
This model does not support forced 'tool_choice'. Use 'auto'.。
模型选择错误标明 model;工具历史错误在 Chat/Messages 中标明 messages,
在 Responses 中标明 input。格式类型被拒时,Chat 标明 response_format,
Responses 标明 text.format。这些提示说明拒绝原因,不会修改请求参数。
Responses 错误使用 reasoning.effort、text.format 等公开字段路径。
Anthropic 错误在 error.message 中标明参数,不增加 param 字段。
Messages 错误点名可识别的原生字段(如 output_config.effort),并将 stop 映射为 stop_sequences。
被拒的组合涉及来源不明的 effort 字段时,保留组合冲突含义并点名可识别的原生控制参数,不猜测 effort 字段。
后端能确定原生推理字段时,组合错误会点名两个原生字段。
错误仅指向有歧义或 OpenAI 专用字段时,保留 Invalid request.。
无法安全识别参数时,param 保持 null,消息保持 Invalid request.。消息不会包含后端细节。
即使设置 stream:true,流开始前的拒绝也使用此 HTTP 合同;流开始后的错误仍使用下方通用 SSE 合同。
模型不支持存储、缓存管理或安全归因时,可以忽略这些字段:store、prompt_cache_key、
prompt_cache_retention 和 safety_identifier。不提供响应存储的模型会同时忽略 store:true
和 store:false。这类字段不改变输出内容、格式或工具行为。其他不支持的生成控制、非法值或
非法组合仍会失败。未来新增的未知字段仍可能返回 HTTP 400。
流式错误
当 stream: true 且错误发生在流已经开始之后,错误会以一个 SSE 帧的形式出现,
而不是 HTTP 错误状态码。根据路径不同,共有三种形态:
/chat/completions(OpenAI Chat Completions):
data: {"error":{"message":"Upstream request failed.","type":"upstream_error","param":null,"code":"provider_error"}}
/messages(Anthropic Messages):
event: error
data: {"type":"error","error":{"type":"api_error","message":"Upstream request failed."},"request_id":"req_1f2e3d4c5b6a7988a1b2c3d4e5f60718"}
/responses(OpenAI Responses):
event: error
data: {"type":"error","code":"provider_error","message":"Upstream request failed.","param":null}
错误码
code(OpenAI 形态)与 error.type(Anthropic 形态)是稳定的,可安全用于
分支判断;message 文本不是——它可能随时变化,不作兼容承诺。
| HTTP 状态码 | code | OpenAI type | Anthropic type | 含义 |
|---|---|---|---|---|
| 400 | invalid_request | invalid_request_error | invalid_request_error | 请求格式有误 |
| 401 | invalid_api_key | authentication_error | authentication_error | API 密钥缺失或无效 |
| 402 | insufficient_credits | billing_error | billing_error | 预付余额不足 |
| 403 | permission_denied | permission_error | permission_error | 密钥无权访问该模型或路径 |
| 404 | route_not_found | invalid_request_error | not_found_error | 未知路径 |
| 404 | model_not_found | invalid_request_error | not_found_error | 模型 id 不存在 |
| 405 | method_not_allowed | invalid_request_error | invalid_request_error | 该路径不支持此 HTTP 方法 |
| 413 | request_too_large | invalid_request_error | request_too_large | 请求体超出大小限制 |
| 429 | rate_limit_exceeded | rate_limit_error | rate_limit_error | 请求过多,参见 retry-after 响应头 |
| 502 | provider_error | upstream_error | api_error | 上游 provider 请求失败 |
| 503 | overloaded | service_unavailable_error | overloaded_error | Gateway 并发处理已达上限,请稍后重试 |
| 503 | gateway_unavailable | service_unavailable_error | api_error | 无法连接上游 |
| 504 | upstream_timeout | timeout_error | api_error | 请求上传或上游响应超时 |
请用顶层 model 字段选择模型。通过 extra_body.model、models 或 route
选择上游模型的请求会返回 HTTP 400(invalid_request)。此规则也适用于
extra_body 内的 models 和 route、提供方或部署选择字段、api_key 或
extra_headers 中的 Authorization 等提供方凭据,以及回退模型列表。
SDK 建议
根据 code / error.type 与 HTTP 状态码做分支判断,不要依赖 message。
4xx 一般不应重试(429 除外,可在 retry-after 之后重试),5xx
(502/503/504)可带退避重试。