跳到主要内容

响应头与错误码

AISIX 会通过多种面向调用方的 API 格式返回响应。失败的 chat completions 请求、Anthropic 风格 messages 请求、服务提供方透传请求和 Admin 请求使用的错误信封并不相同。

本参考帮助你理解响应头、重试提示、状态码和错误字段。排查时应先确认请求的 URL 路径,再查看对应错误格式,然后判断失败来自调用方、网关侧还是上游服务提供方。

错误响应格式

请根据请求的 URL 路径识别适用的错误信封。

响应来源错误信封阅读
OpenAI 兼容代理路由,例如 /v1/chat/completions/v1/completions/v1/embeddings/v1/responses、音频、图片和 rerank{"error": {...}}OpenAI 风格代理错误
Anthropic 风格代理路由,例如 /v1/messages/v1/messages/count_tokens{"type":"error","error": {...}}Anthropic 风格代理错误
/passthrough/:provider/*rest 下的服务提供方透传路由上游服务提供方状态码和响应体透传错误
/admin/* 下的 Admin API 路由{"error_msg":"..."}Admin 错误信封

代理响应头

运行时响应头会因端点而异,不应假设每个响应头都适用于所有 /v1/* 路由。

响应头使用场景
x-aisix-call-id出现在 chat completions 响应中,用于关联一次网关调用。
x-aisix-request-id出现在 messages、responses、rerank、audio 和 passthrough 等直接透传风格端点中,用于关联被代理的请求。
x-aisix-served-by出现在成功的 chat completions 路由响应中,用于识别实际处理请求的目标模型。
x-aisix-cache出现在聊天缓存命中或未命中路径中,用于确认响应是否由网关缓存返回。
x-ratelimit-*当调用方 API Key 配置了限流时,会出现在成功的 chat completions 响应中,用于查看请求、token 和并发限制状态。
Retry-After当网关能够给出重试提示时,会出现在限流、预算和所有候选不可用的拒绝响应中;当 AISIX 能解析上游 429 的重试提示时,也会透出该响应头。调用方可据此判断重试时间。

代理状态码

当错误信封包含 error type 时,应优先查看它。状态码给出大类,error type 通常能标识更精确的网关状态。

状态码含义
400请求无效。
401调用方认证缺失或无效。
403该调用方 API Key 无权访问请求的模型。
404请求的模型别名未找到。
413请求体超过代理请求体大小限制。
422内容被策略拦截。
429请求触发限流或预算拒绝。
501解析出的服务提供方适配器未实现该端点。
502上游服务提供方返回服务端失败,或适配器将上游失败映射为代理错误格式。
503服务提供方适配器不可用,或所有路由候选都被运行时状态过滤。
504上游请求超时。

OpenAI 风格代理错误

AISIX 的 OpenAI 兼容代理错误使用如下信封:

{
"error": {
"message": "...",
"type": "invalid_request_error"
}
}

当 AISIX 没有对应值时,会省略 paramcode 字段。预算拒绝会在 error 对象中包含结构化预算字段,例如 scopelimit_usdspent_usdperiodretry_after_seconds

常见的 AISIX error.type 取值如下:

错误类型常见状态码含义
invalid_api_key401调用方认证缺失或无效。
permission_denied403调用方 API Key 有效,但无权使用请求的模型,或调用方客户端 IP 不在模型的 allowed_cidrs 范围内。
model_not_found404请求的模型别名未配置。
invalid_request_error400413请求体或端点使用方式无效。过大的 OpenAI 风格请求会返回该错误类型和 413 状态码。
provider_unavailable503选中的上游服务提供方适配器无法完成请求。
all_candidates_unavailable503所有路由候选都被过滤或不可用。
content_filter422请求或响应被策略拦截。
billing_error429请求被计费或预算状态拒绝。
rate_limit_exceeded429请求超过已配置的限流规则。
not_implemented501解析出的服务提供方适配器未实现该端点。
timeout504上游请求超时。
upstream_error不固定,上游服务端失败通常为 502上游服务提供方返回错误,AISIX 将其渲染为代理错误格式。

上游服务提供方错误

OpenAI 风格路由会通过同一错误信封渲染上游服务提供方失败,但 AISIX 不一定原样返回上游响应。

上游 4xx 响应会保留客户端可见的 HTTP 类别。原生 OpenAI 上游错误可以保留 OpenAI 风格字段。跨服务提供方上游错误会使用 upstream_error,并可能包含更具体的 error.code,例如限流、权限或模型未找到代码。

上游 5xx 响应通常会返回 502。AISIX 不暴露上游 5xx 响应体,因为其中可能包含服务提供方账号、基础设施或私有诊断信息。

Anthropic 风格代理错误

POST /v1/messagesPOST /v1/messages/count_tokens 使用 Anthropic 风格错误信封:

{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "..."
}
}

Anthropic 信封会省略 OpenAI 信封可能携带的 paramcode 字段。

嵌套的 error.type 遵循与 Anthropic SDK 兼容的状态映射:

状态码Anthropic error.type
400 or 422invalid_request_error
401authentication_error
403permission_error
404not_found_error
408timeout_error
413request_too_large
429rate_limit_error
503overloaded_error
其它状态码api_error

AISIX 保留 408 映射以兼容 Anthropic SDK。网关侧产生的超时通常会通过服务提供方错误处理暴露,而不是作为原生 408 响应返回。

示例参见 Anthropic 风格 Messages API

透传错误

ANY /passthrough/:provider/*rest 会在完成代理认证和服务提供方解析后,原样转发上游服务提供方的状态码和响应体。参见服务提供方透传

Admin 错误信封

Admin API 使用如下错误信封:

{
"error_msg": "..."
}

Admin 状态码如下:

状态码含义
400Admin 请求载荷无效。
401Admin 认证缺失或无效。
404资源未找到。
409资源冲突,例如唯一字段重复。
500网关侧 Admin API 失败。