AI 接口常见错误码
调用 OpenAI 兼容接口时,状态码只说明这一跳发生了什么。网关、上游、客户端都可能改写它,所以先看状态码,再看响应体里的 code / message。
| 状态码 | 含义 | 常见原因 |
|---|---|---|
| 200 | 请求被接受 | 不代表内容一定有用。流式响应可能在 200 之后中途断开 |
| 400 | 请求不合法 | 缺字段、模型名不对、参数类型错 |
| 401 | 未认证 | 密钥缺失、过期或写错。接口是通的,只是没放行 |
| 403 | 已认证但被拒绝 | 密钥没有该模型或该接口的权限 |
| 404 | 路径或模型不存在 | URL 错了,或这个模型没有被发布到当前实例 |
| 429 | 限流 | 请求次数或 token 额度用完。这是明确的限流,不要和 499 混 |
| 499 | 客户端断开 | 调用方自己取消了连接:超时、点了停止、页面刷新。不是上游拒绝 |
| 500 | 网关内部错误 | 网关自己处理失败,不一定是上游挂了 |
| 502 | 上游不可用 | 上游连上了,但没有返回可用结果 |
| 503 | 上游暂时异常 | 上游明确返回暂不可用,过一会儿可能恢复 |
| 504 | 网关等待超时 | 上游太慢,网关先放弃了 |
几个容易看错的
- 401 不是模型坏了。 它只说明密钥没通过。换一把有效密钥再判断模型。
- 404 要分两种。 一种是地址写错;一种是模型在目录里存在,但当前实例没有把它暴露出来。
- 429 才是限流。 响应头里的「剩余额度」是配额信息,不是本次失败的原因。
- 499 是调用方取消。 后面如果跟着
context canceled,就是网关发现客户端已经断开,于是停止这次请求。上游若真的限流,返回的是 429。 - 200 加空内容,仍然是失败。 流式接口可能先返回 200,再在第一个有效数据之前断开。