看到 429,很多人的第一反应是:等几十秒,再点一次。
这招只对一部分情况有用。现在 OpenAI API 的 429 至少要分成“请求太快”和“账户/额度限制”两大类。后者你等半小时也不会自己好。
先别猜,先看 error.code
如果你能拿到完整错误载荷,优先看 error.code 和错误文字。
OpenAI 当前列出的 429 包括:
| 典型原因 | 常见 code / 表现 | 正确动作 |
| 预付余额耗尽 | credit_balance_exhausted | 补充余额 |
| 请求速率过高 | rate limit | 降低频率,遵循 Retry-After |
| 组织支出上限 | organization_spend_limit_exceeded | 调整组织支出限制 |
| 项目支出上限 | project_spend_limit_exceeded | 调整项目限制 |
| 组织使用上限 | organization_usage_limit_exceeded | 申请更高用量上限 |
最关键的一点:余额、支出和配额类 429,不会靠不停重试恢复。
真的是 rate limit 时怎么处理
如果错误明确是 requests/tokens 速率限制,先把并发降下来。
有 Retry-After 时,至少等到它给出的时间;没有时,用指数退避,并加一点随机抖动(jitter),同时限制最大重试次数。
别写这种死循环:
失败 → 立即重试 → 失败 → 立即重试 → ...
这会让原本的限流更难恢复。
一个更稳妥的思路是:
失败↓读取 Retry-After↓降低并发↓等待↓只重试最小请求
ChatGPT 登录用户要单独看
如果你不是 API Key,而是 ChatGPT 登录,看到“使用限制”“稍后恢复”之类产品提示,就按产品界面给出的窗口处理。
不要因为它也叫“额度”或“限制”,就强行换算成 API 的 RPM、TPM。两套机制不是同一张表。
第三方 Provider 也可能返回 429
如果请求经过第三方 Base URL,429 的含义由该 Provider 决定。
这时要同时检查:
- Provider 自己的余额;
- 上游渠道状态;
- 并发限制;
- 当前模型是否受限;
- 是否存在自动重试把问题放大。
如果用 AI Code With,可以在第三方路径这一段自然承接:
- 渠道状态:https://aicodewith.ai/zh/dashboard/channels?ref=docs&src=codex-429-too-many-requests
- 模型与计费:https://aicodewith.ai/zh/dashboard/pricing?ref=docs&src=codex-429-too-many-requests
渠道切换能降低“单一渠道故障”带来的影响,但它不能保证绕过真正的上游限流、账户额度或组织限制。文章里把这点写清楚,反而比夸“自动切换什么都能解决”更可信。
一个我更推荐的排查顺序
- 保存完整 429 错误;
- 确认 ChatGPT 登录还是 API Key;
- 确认是不是第三方 Provider;
- 看 error.code;
- 如果是 rate limit,再看 Retry-After、并发和请求频率;
- 如果是余额/支出/用量上限,直接处理账户限制,不要重试;
- 只用一个最小请求验证恢复。
如果只有某一个模型失败,而其他模型正常,问题可能已经从“限流”转到模型或路由层,继续查模型 ID 和 Provider。
如果你走 AI Code With,别把“自动切渠道”当万能修复
AI Code With 的渠道页适合用来确认第三方路径里的渠道状态和模型成本,但“下一个渠道可用”不等于“所有 429 都能被绕过去”。
如果错误来自上游真实 rate limit、余额不足或组织/项目限制,仍然要按错误 code 处理。把渠道切换当作可用性手段,把 429 分类当作排错手段,两件事不要混在一起。
参考资料
- OpenAI API Error Codes — https://developers.openai.com/api/docs/guides/error-codes
- AI Code With 模型列表 — https://aicodewith.com/zh?s=r8c2y5




