核心结论
429 Too Many Requests 表示请求在一段时间内超出了服务允许的频率或用量。网页端多为账号在当前周期内用量达到上限,等待重置即可;API 端要区分速率限制和额度不足,查看响应头中的剩余额度与重试时间,并在程序中加入退避重试;如果刚打开页面就报 429,可能是共享出口 IP 被限流,应换到更干净的固定节点。
问题现象
HTTP 429 状态码的标准含义是“Too Many Requests”,即请求过多。AI 服务中常见的表现形式有:
- ChatGPT 网页提示请求过多、稍后再试,或显示“Too many requests in 1 hour”一类的提示;
- Claude 网页提示已达到当前用量上限,并显示额度的重置时间;
- OpenAI API 返回
429,错误码为rate_limit_exceeded或insufficient_quota; - Anthropic API 返回
429,错误类型为rate_limit_error; - Gemini API 返回
429,状态为RESOURCE_EXHAUSTED; - Claude Code、Codex 等工具在执行中提示被限流,自动等待后重试。
429 和“地区不支持”是两类问题:429 说明服务已经接受了你的访问,只是限制了频率或用量;地区问题通常是 403 或明确的地区提示,排查方法见 Region Not Supported 怎么办。
可能原因
| 原因 | 判断方法 | 解决方法 |
|---|---|---|
| 账号在当前周期用量达到上限 | 网页提示中带有重置时间,或账号设置中显示用量已满 | 等待重置,或按官方方案调整订阅 |
| API 速率限制(每分钟请求数或 token 数) | 响应头中剩余请求数或 token 数为 0 | 降低并发,加入退避重试,申请更高额度 |
| API 额度或余额不足 | 错误码为 insufficient_quota 或提示余额不足 |
在官方控制台检查账单与用量上限 |
| 共享出口 IP 被按 IP 限流 | 刚打开页面就提示,换网络后正常 | 换更干净的固定节点,避免高度共享的出口 |
| 程序或扩展重复发送请求 | 日志中短时间内有大量重复请求 | 修复重试逻辑,关闭可疑扩展和多余标签页 |
| 频繁切换节点导致会话异常 | 自动测速分组不停切换出口 | 为 AI 服务固定节点,关闭自动切换 |
限流是怎么计算的
AI 服务的限流通常同时存在几个维度:按账号统计的用量上限(例如网页端的对话额度)、按 API 组织或密钥统计的每分钟请求数与 token 数,以及为防止滥用而按来源 IP 做的频率控制。前两种与网络环境无关,换节点没有意义;最后一种与出口 IP 有关,当一个节点 IP 被大量用户同时用来访问同一服务时,更容易触发。
因此排查 429 的第一步,是判断它属于“账号 / API 维度”还是“IP 维度”。
| 使用方式 | 最常见的限流维度 | 处理重点 |
|---|---|---|
| ChatGPT、Claude 网页或客户端 | 账号在当前周期内的用量额度 | 看提示中的重置时间,等待或调整订阅方案 |
| 官方 API 直接调用 | 组织或密钥的每分钟请求数、token 数与总额度 | 读响应头,控制并发,处理账单 |
| Claude Code、Codex 等编程工具 | 所登录账号的套餐用量或所用 API 的速率等级 | 拆分任务,降低并发,查看工具内的用量提示 |
| 刚打开页面就报错 | 来源 IP 的访问频率 | 固定节点,换更干净的出口 |
网页端的额度一般按一段时间滚动重置,等待是最直接的办法;API 与编程工具则更多取决于你的请求方式,改善代码或使用习惯往往比换网络有效得多。
快速自查
- 看错误提示中是否带有重置时间或额度字样:有的话基本是账号用量问题;
- API 用户登录官方控制台,检查用量、余额与速率等级;
- 关闭浏览器中与 AI 相关的扩展,只保留一个标签页再试;
- 检查客户端是否把 AI 服务放在了“自动选择”或“负载均衡”分组;
- 用手机流量或另一个节点访问,对比是否仍然报 429。
逐步排查
-
确认当前出口 IP 与地区。 浏览器与终端分别检查,确保走的是同一个固定节点:
# Windows PowerShell curl.exe -s https://www.cloudflare.com/cdn-cgi/trace# macOS / Linux curl -s https://www.cloudflare.com/cdn-cgi/trace记下
ip=与loc=。如果多次执行 IP 在变化,说明出口在自动切换,先固定节点。 -
查看 API 响应头中的限流信息。 发送一个最小请求并只输出响应头。下面以 Anthropic API 为例,模型名替换为你实际使用的模型,端口以客户端设置为准:
'{"model":"MODEL_NAME","max_tokens":1,"messages":[{"role":"user","content":"hi"}]}' | Set-Content -Encoding ascii body.json curl.exe -s -D - -o NUL https://api.anthropic.com/v1/messages -x http://127.0.0.1:7897 -H "x-api-key: $env:ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" --data "@body.json" | Select-String "HTTP/|ratelimit|retry-after"curl -s -D - -o /dev/null https://api.anthropic.com/v1/messages -x http://127.0.0.1:7897 \ -H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" \ -d '{"model":"MODEL_NAME","max_tokens":1,"messages":[{"role":"user","content":"hi"}]}' | grep -iE "HTTP/|ratelimit|retry-after"Anthropic 的响应头以
anthropic-ratelimit-开头,OpenAI 的以x-ratelimit-开头,retry-after表示建议等待的秒数。字段名称与是否返回以各服务官方文档为准。API 密钥请通过环境变量读取,不要写进脚本或截图。 -
区分速率限制与额度不足。 剩余请求数或 token 数为 0,是速率限制,等待重置并降低并发即可;错误信息为额度或余额不足,需要去控制台处理账单,重试不会有任何效果。
-
在程序中加入退避重试。 遇到 429 时不要立即重试,而是按
retry-after或指数退避等待,避免重试本身加剧限流:import time, random def call_with_backoff(send, max_retries=5): for attempt in range(max_retries): resp = send() if resp.status_code != 429: return resp wait = float(resp.headers.get("retry-after", 2 ** attempt)) time.sleep(wait + random.uniform(0, 1)) return resp官方 SDK 通常已内置重试机制,可在其配置中调整重试次数,具体以 SDK 文档为准。
-
排除 IP 维度的限流。 如果账号与 API 用量都正常,而刚打开页面就报 429,换到另一个同地区、不同 IP 的节点对比。换节点后恢复,说明原节点出口被大量共享或信誉较差,IP 质量的判断方法见 IP 纯净度是什么。
-
固定节点,不要频繁切换。 为 AI 服务单独建立手动分组,长期使用同一个稳定出口。频繁切换地区不仅无助于解决 429,还可能引发人机验证,参见人机验证无限循环怎么解决。
注意事项
- 不要用多个账号轮换或脚本批量请求来绕开限流,这违反大多数 AI 服务的使用条款;
- AI 编程工具在大型任务中会连续发送大量请求,遇到限流时适当拆分任务、降低并发;
- 共享 API 密钥给多人使用时,所有人的请求会计入同一个额度,容易意外触发限流。
仍然无法解决
- 在官方状态页确认服务是否有故障,例如
status.anthropic.com、status.openai.com; - API 用户按官方流程申请提升速率等级,或联系官方支持说明用量需求;
- 如果多个机场节点都频繁触发 IP 维度的限流,可以考虑换用 IP 质量更好的服务,参考 AI 稳定机场推荐。
请遵守当地法律法规与服务条款,合理使用 AI 服务。
相关问题
常见问题
429 错误是账号被封了吗?
不是。429 是限流提示,意思是请求太频繁或本周期用量已满,等待一段时间或降低请求频率后通常会自动恢复。账号被封或受限一般会有明确的账号类提示或 403 错误。
我明明没怎么用,为什么也提示请求过多?
常见原因有两个:一是你使用的出口 IP 被很多人共享,服务按 IP 统计时把其他人的请求也算了进来;二是浏览器扩展、多个标签页或后台脚本在持续发送请求。换一个固定、干净的节点,并关闭相关扩展后再试。
API 返回 429 但提示 insufficient_quota 是什么意思?
这表示账户额度或余额不足,而不是请求太快。需要在官方控制台检查账单、余额和用量上限,重试不会解决问题。
换节点能解决 429 吗?
只有在限流是按 IP 计算、且当前 IP 被大量共享时才有帮助。如果是账号用量或 API 额度达到上限,换节点无效,频繁换节点反而可能触发额外的风控验证。
Claude API 返回 529 和 429 有什么区别?
429 表示你的请求超出了限额;529 表示服务端暂时过载,与你的用量无关。529 等待片刻重试即可,具体含义以官方文档为准。
本文最后更新于 。网络服务与 AI 平台政策变化较快,如发现信息过时,欢迎通过联系我们反馈。