错误码
遇到报错时,先看 HTTP 状态码,再对照下表定位原因。
错误响应格式
不同协议的错误 JSON 结构略有差异,都包含 message 描述:
OpenAI / 本站通用
{
"error": {
"message": "Invalid token",
"type": "authentication_error"
}
}
Anthropic
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "model is required"
}
}
状态码对照
| 状态码 | 含义 | 怎么解决 |
|---|---|---|
400 | 请求格式错误、缺少参数,或该模型当前无可用渠道 | 检查 JSON 与必填参数(Anthropic 必须带 max_tokens);模型无渠道就换模型或稍后重试 |
401 | Key 缺失或无效(Invalid token) | 到控制台「API 密钥」重新复制当前有效 Key,确认 sk- 开头、前后无空格 |
402 | 余额不足,或该 Key 额度用尽 | 控制台「钱包」充值,或调高该 Key 的额度 |
403 | 模型被禁用、不在该 Key 的白名单内,或客户端类型不匹配 | 检查 Key 的「可用模型」设置,或换一个不限模型的 Key |
404 | 端点或模型不存在 | 核对 Base URL(/v1 是否该带)与模型 ID 拼写 |
405 | HTTP 方法不支持 | 确认使用 POST(/v1/models 用 GET) |
429 | 触发限流,或分组下所有渠道都在限流 | 读响应头 Retry-After 等待后重试;换分组或模型;代码里做指数退避 |
500 | 服务内部错误 | 稍后重试 |
502 | 上游响应异常 | 稍后重试,做有限次退避 |
503 | 服务暂时不可用(渠道因限流 / 过载等原因全部失败) | 等待 1–2 分钟重试;本站已配置分组互备,会自动切换链路 |
529 | 上游模型服务过载 | 等待片刻重试,或换用其他模型 |
最常遇到的三个问题
① 401 Invalid token
- Key 复制不完整、前后带空格或换行;
- 用了已删除的旧 Key(控制台删过 Key 后,客户端配置必须同步更新);
- 请求头写法不对:OpenAI 用
Authorization: Bearer sk-xxx,Anthropic 用x-api-key: sk-xxx。
② JSON Parse error / invalid request body
- 多为手改配置文件时引号未闭合、多写逗号导致;
- 建议改用 配置生成器,粘贴 Key 一键生成合法配置;
- Anthropic 协议别忘了
max_tokens。
③ 503 / 529 上游过载
- 这是上游模型服务临时不可用,不是你的配置问题;
- 等 1–2 分钟重试,或换一个模型;
- 客户端做有限次退避重试,避免故障期间重复消费。
推荐的退避重试写法(Python)
import time, requests
def call_with_retry(url, headers, data, max_retries=3):
for i in range(max_retries):
resp = requests.post(url, headers=headers, json=data)
if resp.status_code in (429, 500, 502, 503, 529):
wait = int(resp.headers.get("Retry-After", 5))
time.sleep(wait)
continue
return resp
raise RuntimeError("max retries exceeded")
连接失败 / Connection Refused
- 确认用
https://而不是http://; - 确认 Base URL 后缀与协议匹配(Anthropic 不带
/v1,OpenAI 带/v1,Gemini 用/v1beta); - 检查本机网络 / 代理设置。
还是解决不了?
联系客服微信 ccc19cc19,把这几项一起发过来能大幅加快排查:
- 模型 ID、使用的分组
- 客户端与协议(Claude Code / Codex / OpenAI SDK …)
- 完整报错信息与请求时间(用于按日志定位)