rate

API 429 报错:限流、额度不足还是中转上游异常

HTTP 429 不只表示请求太快,也可能是账户额度、项目限额,或中转站上游账号池暂时不可用,需要结合 error.code、响应头和故障范围判断

429rate_limitrate_limit_exceededtoo many requests

可能原因

HTTP 429 不只表示请求太快,也可能是账户额度、项目限额,或中转站上游账号池暂时不可用,需要结合 error.code、响应头和故障范围判断

建议处理方式

  1. 先保存脱敏后的响应体、error.code 和 Retry-After
  2. 额度错误不要盲目重试;限流错误按响应头退避并降低并发
  3. 对比同一 Key 的其它模型或端点,判断是账户问题还是中转路由问题

相关工具

429 / TRIAGE

429 是一个判断入口,不是唯一结论

先不要连续重试。保存脱敏后的响应体、error.code、Retry-After、请求 ID、失败模型,以及同一 Key 调用其它模型是否正常,再判断故障层级

01

先定位故障发生在哪一层

01

请求压力层

同一个 Key 低并发正常、突发请求失败,并出现 rate_limit_exceeded、Retry-After 或限速响应头

降低并发,并按 Retry-After 等待
02

账户与项目层

insufficient_quota、billing_hard_limit_reached 等信号通常指向余额、消费上限或项目额度

检查账单和额度,不要盲目重试
03

中转上游层

只有某个模型或路由失败、多人同时失败,或中转返回没有可用上游账号,需要站点侧确认

换模型对照,再联系中转站
02

重试前先读懂响应信号

观察到的信号更可能的原因下一步
error.code = rate_limit_exceeded请求频率或 Token 速率受限遵循 Retry-After,降低并发并做有上限的退避
error.code = insufficient_quota余额、预算或项目额度不足检查账单或项目限额,重复请求不会恢复额度
一个模型失败,另一个正常模型路由或中转上游渠道异常查询可用模型列表,对照失败路由
所有模型和 Key 都失败中转网关或共享上游故障运行连接诊断,并查看站点状态
03

最小 OpenAI 兼容请求

使用占位符并把真实 Key 留在本机。加上 -i 查看响应头,排查时先移除历史消息和非必要参数

BASE_URL="https://your-api.example/v1"
API_KEY="your-local-key"

curl -i "$BASE_URL/chat/completions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model-id",
    "messages": [{"role":"user","content":"Reply OK"}],
    "max_tokens": 8,
    "stream": false
  }'
04

只保存这些信息,不要保存密钥

  • HTTP 状态码和响应时间
  • error.type、error.code 与脱敏后的 message
  • Retry-After 和请求 ID 响应头
  • 模型 ID、端点路径和 UTC 时间
05

这个 429 应该重试吗

可以,但要有上限

响应给出限流信号和 Retry-After,或者降低并发后请求恢复。按响应头等待,并仅做少量有上限的重试

不应该

响应包含 insufficient_quota、billing、Key 无效或权限不足。先修复账户和访问条件

先做对照

中转返回的信息模糊或为自定义格式。先用同一 Key 测另一个模型,再运行连接诊断

官方参考资料

OpenAI API 错误码DeepSeek API 错误码