状态码 429限流(429)Claude CodeCodex CLIopencodeClineSDK / curl 直接调用

报 429 rate limit exceeded / concurrency limit exceeded 怎么解决

报错原文
API Error: 429 {"type":"error","error":{"type":"rate_limit_error","message":"API Key request rate exceeded"}}

CCSub 的 429 分三种:API Key request rate exceeded(每把 Key 每分钟请求数超了,默认 60 次)、API Key token rate exceeded(自定义 Token 速率超了)、User concurrency limit exceeded(账号同时进行的请求超过上限,默认 10 个)。原因不同,解法也不同。

3 步解决

  1. 1

    看 message 是哪一种限制

    API Key request rate exceeded 是这把 Key 每分钟请求数超了;API Key token rate exceeded 是你给这把 Key 设的 Token 速率超了;User concurrency limit exceeded 是整个账号同时在等待响应的请求太多。

  2. 2

    速率类:到 Keys 页面调整这把 Key

    控制台 API Keys 页面编辑这把 Key,在「速率限制」里打开自定义,把每分钟请求数调高;Token 速率留空表示不限。也可以给不同工具、不同项目各建一把 Key,每把 Key 单独计数。

  3. 3

    并发类:减少同时进行的请求

    少开几个同时运行的 Claude Code / Codex 会话,减少并行的子代理或批量脚本的并发数。并发上限按账号计算,账号下所有 Key 共用,多建 Key 不能解决;确实需要更高并发可以联系客服说明使用场景。

同一个问题的其他写法

  • {"type":"error","error":{"type":"concurrency_limit_error","message":"User concurrency limit exceeded"}}
  • {"type":"error","error":{"type":"rate_limit_error","message":"API Key token rate exceeded"}}
  • exceeded retry limit, last status: 429 Too Many Requests

三种 429 的区别

CCSub 在转发请求之前会依次做三项检查,任何一项不通过都返回 HTTP 429:

  • API Key request rate exceeded:限制的是单把 Key 每分钟的请求次数,默认 60 次 / 分钟,可以自己在 Keys 页面调整。
  • API Key token rate exceeded:限制的是单把 Key 每分钟的 Token 速率,默认不限,只有你自己设置过才会出现。
  • User concurrency limit exceeded:限制的是整个账号同时进行的请求数,默认 10 个,用户自己不能调整。

前两种的 error.type 是 rate_limit_error,第三种是 concurrency_limit_error。

每分钟请求数超了

计数方式是固定的 60 秒窗口:从这把 Key 的第一个请求开始算,60 秒内超过上限的请求直接返回 429,下一个窗口重新计数。Claude Code 一次操作除了主对话,还会发生成标题、后台小任务等额外请求;opencode、Cline 这类工具在执行工具调用时请求也很密集,默认的 60 次在高强度使用时可能不够。

处理方法:

  1. 打开控制台的 API Keys,编辑这把 Key,在「速率限制」里打开「自定义速率限制」,调高「每分钟请求数(req/min)」。
  2. 不同工具、不同项目分别用不同的 Key。速率是按 Key 单独计算的,分开后互不影响,也方便在使用记录里按 Key 看用量。
  3. 自己写的批量脚本,给请求加上间隔或排队,收到 429 后等几秒再重试,不要立即重发。

Token 速率超了

只有你在 Keys 页面给这把 Key 设置过 Token 速率时才会出现。要注意它的计算方式:每个请求按请求体里声明的 max_tokens 累加,而不是实际消耗的 Token。Claude Code 每个请求的 max_tokens 常常是几万,如果你设了一个十几万的 Token 速率,每分钟可能只够几次请求。不需要限制的话,把 Token 速率留空即可。

账号并发超了

并发统计的是同一个账号下、同时在等待上游开始返回结果的请求数(非流式请求要等到完整结果返回)。账号下所有 Key 共用这个上限,所以多建 Key 不能绕开。容易撞到的场景:

  • 同时开了好几个 Claude Code 或 Codex 窗口,每个都在跑任务;
  • Claude Code 一次派出很多个并行子代理;
  • 批量脚本、评测脚本用高并发打接口。

处理方法是降低并发:少开几个同时运行的会话,批量任务把并发数调到 10 以下。如果你的业务确实需要更高的并发,可以发邮件联系客服说明使用场景。

不同工具里长什么样

  • Claude Code 会先自动重试,界面显示 Retrying in Ns · attempt x/10,重试耗尽后才显示 API Error: 429 ...。
  • Codex 重试耗尽后显示 exceeded retry limit, last status: 429 Too Many Requests。
  • 自己写代码:根据 error.type 区分,rate_limit_error 可以等到下一分钟再发,concurrency_limit_error 要等手上已有的请求返回后再发新请求。

常见问题

默认限制是多少?

每把 Key 默认每分钟 60 次请求,按 60 秒的固定窗口计数;Token 速率默认不限。每个账号默认最多 10 个请求同时在等待上游响应。

Claude Code 会自动重试 429 吗?

会。Claude Code 对临时性的 429 默认最多重试 10 次,界面上会显示 Retrying in Ns · attempt x/10。重试都失败后才把错误显示出来,所以看到报错时往往已经持续超限了一段时间。

我设了 Token 速率限制,为什么请求很少也报 token rate exceeded?

Token 速率按每个请求里声明的 max_tokens 累加,而不是按实际消耗。Claude Code 这类工具每个请求的 max_tokens 往往是几万,几次请求就能用完一个不大的 Token 速率额度。不需要的话把 Token 速率留空即可。

429 会扣费吗?

不会。限流在转发给模型之前就返回,不计费。

还是不行?

还没有 CCSub 账号?

注册后在控制台创建 API Key,填进 Claude Code、Codex 等工具即可使用,按实际用量计费。