429 Too Many Requests 和 insufficient_quota 怎么区分

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

对照图:左侧 rate_limit_reached 可重试,右侧 insufficient_quota 和各类限额必须先改账单

先读这一张表

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 时,按这个顺序对:

  1. 完整 JSON,不要只看 HTTP 状态码。
  2. 是不是绑错了 Organization / Project。Key 是项目级的,控制台看着有余额的那个组织,未必是这把 Key 所属的组织。
  3. 有没有单独的 Hard Limit / 项目花费上限。余额 > 0 也会被硬顶拦住。
  4. 刚充值等几分钟再打。
  5. 程序实际用的 Key:环境变量、.env、CI 密钥,经常不是你刚复制的那一把。

网页版 Plus 不是这张表

ChatGPT 网页提示用量用尽、要等几个小时,那是订阅产品的窗口限额,不是 API 的 429。去 platform.openai.com 充 API 余额,救不了 chatgpt.com 的 5 小时窗口;反过来也一样。

限流怎么处理

  • Retry-Afterx-ratelimit-reset-*,不要固定 sleep 1 秒狂打。
  • 指数退避加抖动,避免所有客户端同一秒重试。
  • 降并发、缩短上下文、能批处理就批处理。
  • 确认自己的用量层级(tier)。官方 RPM/TPM 按层级走,不是「付了费就没有分钟级上限」。

参考

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏