OpenAI 帮助中心写得很直白:429 可能是限流,也可能是预付余额用尽,或碰到了花费 / 用量上限。 先看响应里的 error.code。很多账单类错误的 error.type 仍是 insufficient_quota,只看 type 会误判。

先读这一张表
| error.code 或原文 | 含义 | 重试有没有用 |
|---|---|---|
| Rate limit reached for requests / tokens | 这一分钟的 RPM 或 TPM 打满 | 有。放慢,遵守 Retry-After |
credit_balance_exhausted |
预付 credits 为 0 | 没有。先充值 |
organization_usage_limit_exceeded |
组织碰到 OpenAI 批的用量上限 | 没有。申请提额或等周期 |
organization_spend_limit_exceeded |
组织自己设的花费硬顶 | 没有。改或取消硬顶 |
project_spend_limit_exceeded |
当前项目的花费硬顶 | 没有。改项目限额,或换项目 |
官方原文:账单、花费、配额类错误,重试不能恢复访问;先改余额或限额。改硬顶有时不会立刻生效。
「Billing 里明明有钱」
仍然 429 时,按这个顺序对:
- 完整 JSON,不要只看 HTTP 状态码。
- 是不是绑错了 Organization / Project。Key 是项目级的,控制台看着有余额的那个组织,未必是这把 Key 所属的组织。
- 有没有单独的 Hard Limit / 项目花费上限。余额 > 0 也会被硬顶拦住。
- 刚充值等几分钟再打。
- 程序实际用的 Key:环境变量、.env、CI 密钥,经常不是你刚复制的那一把。
网页版 Plus 不是这张表
ChatGPT 网页提示用量用尽、要等几个小时,那是订阅产品的窗口限额,不是 API 的 429。去 platform.openai.com 充 API 余额,救不了 chatgpt.com 的 5 小时窗口;反过来也一样。
限流怎么处理
- 读
Retry-After或x-ratelimit-reset-*,不要固定 sleep 1 秒狂打。 - 指数退避加抖动,避免所有客户端同一秒重试。
- 降并发、缩短上下文、能批处理就批处理。
- 确认自己的用量层级(tier)。官方 RPM/TPM 按层级走,不是「付了费就没有分钟级上限」。

AI故障手册