OpenAI API 429 报错怎么解决:Too many requests 与 insufficient_quota 的区别

OpenAI API 返回 429 不一定是「请求太快」,也可能是余额用完、组织用量上限或你自己设的支出上限到了。本文按官方错误码文档教你看 error.code 分清两类 429,各自怎么处理,并给出遵守 Retry-After 的指数退避重试代码。

NNathaniel bigo··原创首发·AI 辅助撰写
10 分钟读完
资料核对于 2026-10-07 · 依据官方文档与公开资料整理 其他 账号
本文根据 OpenAI 开发者文档(Error codes、Rate limits、Spend limits)和帮助中心《Troubleshooting API rate limits and 429 errors》(2026-10-07 当天更新)整理,资料核对于 2026-10-07。

适用于谁

  • 调用 OpenAI API 时遇到 429 Too Many Requests、RateLimitError 的人;
  • 报错里带 quota、insufficient_quota 字样,明明刚开始用就被拒的人;
  • 批量跑任务、并发一高就报错,想写个靠谱重试逻辑的人。

结论先说

  1. 429 有两类,处理方法完全相反:
  • 临时限速(请求或 token 发得太快)——等一等、降速、重试就能恢复;
  • 额度 / 账单类(余额用完、用量上限、支出上限)——重试没用,必须先充值或调整上限。
  1. 怎么分:看返回体里的 error.code。官方说明额度类错误的 error.type 可能统一显示为 insufficient_quota,具体原因以 error.code 为准。
  2. 重试要讲规矩:响应头有 Retry-After 就至少等这么久;没有就用指数退避加随机抖动,并限制次数和总时长。官方 SDK 本身已会自动重试,自己再套一层要先关掉 SDK 重试。
  3. 余额为正也可能 429:速率限制、组织月度用量上限、支出上限和预付余额是互相独立的。

第一步:读懂这次是哪种 429

报错信息 / error.code属于原因怎么办
Rate limit reached for requests / tokens临时限速超过每分钟请求数(RPM)或 token 数(TPM)等限制降速,按 Retry-After 等待后重试
slow_down(type 为 rate_limit_error)临时限速流量增长太快,即使没超 RPM / TPM 也会触发先降速再逐步加量
credit_balance_exhausted额度类预付额度已用完去 Billing 充值
organization_usage_limit_exceeded额度类达到 OpenAI 给组织分配的月度用量上限在 Limits 页申请提高上限
organization_spend_limit_exceeded额度类达到你给组织设的硬性支出上限提高 / 取消上限,或等下个月重置
project_spend_limit_exceeded额度类达到项目的硬性支出上限同上,在项目设置里改

用 Python SDK 时,429 会抛出 openai.RateLimitError,可以直接读 e.code、e.type 和 e.response.headers。

临时限速:怎么降下来

  1. 先看自己的限额:开发者平台 Settings → Organization → Limits,能看到当前使用档位和各模型的限额。RPM 和 TPM 是两个独立的限制,可能只撞上其中一个。
  2. 避免突发:帮助中心提醒,限额可能按比显示周期更短的窗口执行,例如「每分钟 60 次」也可能按每秒检查。一次性并发几十个请求,平均值再低也会被拦。
  3. 限额是组织和项目共享的,不是每个人一份。同事在跑大任务、或者一个 Key 被多个程序共用,都会挤占额度。另外部分模型族共享同一份限额。
  4. 减少 token:删掉提示词里重复的上下文和示例;max_output_tokens(Chat Completions 是 max_completion_tokens)不要设得远大于实际需要——官方说明限速按这个上限和请求估算 token 数中较大的计算,推理 token 也包含在内。
  5. 不急的任务用 Batch API:批处理有独立且更高的限额,不占用同步请求的速率。
  6. 平稳加量:官方经验值是流量到每分钟 100 万输入 token 后,每 15 分钟增加不超过 50%,避免触发 slow_down。
  7. 确认请求走的是哪个组织:属于多个组织时,不同组织的档位和账单不同,检查默认组织设置或请求头里的组织 / 项目 ID。
  8. 升档:组织累计充值达到门槛后,使用档位(Build、Launch、Grow)会自动升级,限额通常更高,门槛见 Rate limits 页面。

额度 / 账单类:重试前先处理

  • 余额用完:到 Settings → Billing 购买额度,几分钟后余额更新再试。注意自动充值失败时会收到邮件,余额耗尽后调用就会停止。
  • 用量上限:在 Limits 页申请更高的已批准用量上限,或联系官方支持。
  • 支出上限:有权限的人去组织或项目的 Limits 里提高或取消硬上限;不改的话下个月自动重置。修改生效需要一点时间。

预付额度、自动充值和支出上限的设置方法,详见 /guides/openai-api-pricing-billing。

带 Retry-After 的指数退避示例(Python)

下面的代码只对临时限速和 5xx 重试,遇到额度类 429 直接抛出:

python
import random
import time

import openai
from openai import OpenAI

client = OpenAI(max_retries=0)  # 由下面的函数统一重试,避免与 SDK 自带重试叠加

BILLING_CODES = {
    "credit_balance_exhausted",
    "organization_usage_limit_exceeded",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
}

def create_with_backoff(max_attempts=6, base_delay=1.0, max_delay=60.0, **kwargs):
    for attempt in range(1, max_attempts + 1):
        try:
            return client.responses.create(**kwargs)
        except (openai.RateLimitError, openai.InternalServerError) as e:
            if e.code in BILLING_CODES or e.type == "insufficient_quota":
                raise  # 余额 / 限额问题,重试没有用
            if attempt == max_attempts:
                raise
            try:
                delay = float(e.response.headers.get("retry-after"))
            except (TypeError, ValueError):
                delay = min(max_delay, base_delay * 2 ** (attempt - 1))
            if delay > max_delay:
                raise  # 服务器要求等太久,改为稍后再处理,不要提前重试
            time.sleep(delay + random.uniform(0, 1))  # 加随机抖动,避免多个客户端同时重试

resp = create_with_backoff(model="gpt-6-astra", input="用一句话介绍你自己。")
print(resp.output_text)

要点说明:

  • 官方 Python SDK 默认会对 429、5xx 和连接错误自动重试 2 次;如果像上面这样自己管重试,就把 max_retries 设为 0,或者把 SDK 的重试次数算进总预算,避免请求次数成倍放大;
  • 失败的请求同样计入每分钟限额,无间隔地连续重发只会让情况更糟;
  • 流式请求已经开始输出后中断的,不要自动重放,以免重复内容。

别和 503 搞混

503 + server_is_overloaded 表示模型暂时过载,不是你的问题。同样按 Retry-After 等待后重试;持续出现就去 status.openai.com 看有没有故障。Python 里 429 抛 RateLimitError,503 抛 InternalServerError,两个都要处理。

常见问题

Q:新注册就 429,余额显示有钱也不行?

先看 error.code。如果是 credit_balance_exhausted,说明预付额度为 0 或刚充值还没到账;如果是限速类,看 Limits 页当前档位的限额是不是太低。

Q:我有 ChatGPT Plus,为什么 API 还说额度不足?

ChatGPT 订阅和 API 是两套独立计费,Plus 不包含 API 额度。开通 API 计费见 /guides/openai-api-key。

Q:联系官方支持要准备什么?

完整的报错信息和错误码、相关的 request ID、出错时间(带时区)、Limits 页显示的限额,以及你已经尝试过的步骤。不要附上 API Key。

Q:怎么看是不是我这边的网络问题?

帮助中心建议在 Service Health(服务健康)面板按单个模型、服务档位和项目筛选,打开 HTTP Requests 看各状态码的数量;客户端报错但面板里没有对应记录,说明请求很可能根本没到达 OpenAI。

参考资料

  • OpenAI 开发者文档:Error codes — https://developers.openai.com/api/docs/guides/error-codes
  • OpenAI 开发者文档:Rate limits — https://developers.openai.com/api/docs/guides/rate-limits
  • OpenAI 帮助中心:Troubleshooting API rate limits and 429 errors — https://help.openai.com/en/articles/5955604
  • OpenAI 开发者文档:Spend limits — https://developers.openai.com/api/docs/guides/spend-limits
  • OpenAI 帮助中心:Setting up and managing prepaid API billing — https://help.openai.com/en/articles/8264644-setting-up-and-managing-prepaid-api-billing
  • OpenAI 帮助中心:Troubleshooting API errors and latency — https://help.openai.com/en/articles/1000499-troubleshooting-api-errors-and-latency
  • openai-python 官方仓库 README(Retries、Handling errors)— https://github.com/openai/openai-python
  • OpenAI 开发者文档:Batch API — https://developers.openai.com/api/docs/guides/batch
  • OpenAI Status — https://status.openai.com/
需要开通或续费?ChatGPT Plus 充值 →

Nathaniel 的更多内容

  1. 01

    NotebookLM 免费版限制有哪些:笔记本和来源上限、5 小时用量限额与用量查询

    NotebookLM(现名 Gemini Notebook)免费版每天能用多少?2026 年 9 月起个人账号改为按算力计的用量限额。本文按官方帮助讲清免费与各付费档的笔记本数、来源数、限额倍数、刷新规则、用量查询和「稍后生成」。

    Gemini0
  2. 02

    Kimi Code怎么用:CLI安装、登录、常用命令与额度规则

    Kimi Code 是什么、CLI 怎么安装和登录、额度怎么算?本文按官方文档讲清三种产品形态、各系统安装命令、/login 两种登录方式、常用斜杠命令与快捷键、5 小时窗口与月额度规则和常见报错。

    Kimi0
  3. 03

    ElevenLabs 怎么用:文字转语音入门、中文配音、模型与参数怎么调、声音克隆须知

    ElevenLabs 怎么用、支持中文吗?本文按官方文档讲清文字转语音的四步操作、选声音和选模型哪个更重要、稳定度与相似度等参数怎么调、停顿和情绪怎么控制、声音克隆的录音要求与授权确认,以及免费额度和商用许可。

    其他 AI 工具0
  4. 04

    Claude 账号被封(This organization has been disabled)怎么办:官方申诉流程

    Claude 提示账号被停用、「This organization has been disabled」是什么原因?本文按官方帮助中心整理:封号的官方理由、怎么提交申诉、被封后还能导出数据或删除账号、组织被暂停怎么申请复查、订阅和退款怎么处理,以及 Claude Code 里同名报错的另一种原因。

    Claude0
  5. 05

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  6. 06

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0

同产品的其他教程

  1. 01

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  2. 02

    如何让大模型稳定输出 JSON:结构化输出、JSON 模式与提示词写法(OpenAI / Claude)

    怎么让大模型稳定输出 JSON?本文按 OpenAI 和 Anthropic 官方文档讲清只靠提示词、JSON 模式、结构化输出三种做法的可靠程度,两家的写法与 Schema 限制,以及拒答和截断两种例外。

    ChatGPTClaude0
  3. 03

    提示词里的角色设定有用吗:「你是一位专家」该怎么写才有效(官方文档怎么说)

    提示词开头写「你是一位资深专家」到底有没有用?本文按 Anthropic、OpenAI、Google 官方文档讲清角色设定管什么、不管什么,一句话角色和详细人设各自适合什么场景,角色应该放在哪里,以及比「你是专家」更有效的四个写法。

    ChatGPTClaude0
  4. 04

    OpenAI API 价格怎么看、余额怎么查:按 token 计费、用量与预付额度

    OpenAI API 按 token 计费,价格页上的 input、cached input、output、Batch、Flex、Fast 分别是什么意思?余额在哪里看、自动充值怎么关、额度会不会过期、怎么设支出上限?本文按官方价格页和帮助中心逐项讲清,不列具体单价,以官方页面为准。

    ChatGPT0
  5. 05

    AI 写小红书、公众号内容的流程,以及 AI 生成内容怎么标识(标识办法要点)

    用 AI 写小红书文案、公众号文章要不要标注 AI 生成?按国家网信办等四部门《人工智能生成合成内容标识办法》原文讲清显式与隐式标识、发布者的声明义务、不能删除水印;并给出从选题到发布的六步写作流程和发布前自查表。

    ChatGPT其他 AI 工具0
  6. 06

    OpenAI Agents SDK 教程:安装、第一个智能体、工具与多智能体交接(Python)

    OpenAI Agents SDK 是什么、怎么上手?按官方 README 和 Quickstart 讲清安装命令、设置 API Key、十行代码跑起第一个智能体、给它加函数工具、用 handoffs 做多智能体分工、在 Trace viewer 里看调用过程,以及它的核心概念各是什么。

    ChatGPT其他 AI 工具0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~