HRouter

API 429 报错:限流、额度用完、API_KEY_QUOTA_EXHAUSTED 怎么解决

HTTP 429 表示请求被限制了。在 HRouter 里 429 有四种不同的来源:Key 自己的额度用完、订阅额度用完、连续填错 Key 被临时限制,以及上游暂时没有可用容量。它们的处理方式完全不同,先看错误码再动手。

错误码速查

错误码 / 类型 返回信息 原因 怎么处理
API_KEY_QUOTA_EXHAUSTED API key 额度已用完 这个 Key 设置了额度上限,已用完 调高或取消这个 Key 的额度限制
USAGE_LIMIT_EXCEEDED 日、周或月额度超限 订阅类分组的周期额度用完 等周期重置,或换分组
INVALID_AUTH_RATE_LIMITED Too many invalid authentication attempts 短时间内多次使用错误的 Key 先修正 Key,稍后再试
rate_limit_error All available accounts are currently rate-limited 可服务该模型的通道暂时都在限流 稍后重试,或降低并发

API_KEY_QUOTA_EXHAUSTED:Key 额度用完

创建 Key 时可以设置 额度限制,限制这一个 Key 最多能消费多少金额。用完之后,这个 Key 会返回 429,账户里还有余额也一样。

  1. 打开 API 密钥,找到这个 Key,查看额度限制和已用额度。
  2. 编辑 Key,调高额度;不需要限制时设为 0,0 表示不设上限(不是免费调用)。
  3. 保存后重试,不需要重建 Key,也不用改工具配置。

这种情况和账户余额不足不同:余额不足是 403,见 余额不足。

USAGE_LIMIT_EXCEEDED:订阅额度用完

订阅类分组按日、周或月设置额度。超过后返回 429,周期重置后恢复。到 订阅 页面查看当前周期的用量和重置时间。需要立刻使用的话,可以换到按量计费的分组,见 如何选择 Key 分组。

INVALID_AUTH_RATE_LIMITED:填错 Key 被临时限制

在短时间内反复使用错误的 Key 发起请求,会被临时拦截一段时间。先别重试:

  1. 按 API 401 报错 找到 Key 错在哪里并修正。
  2. 停止自动重试的脚本,等几分钟。
  3. 用修正后的 Key 重新请求。

rate_limit_error:上游暂时限流

返回 “All available accounts are currently rate-limited” 说明:分组里能处理这个模型的通道都在冷却中,不是你的 Key 出了问题。

  • 稍后重试:通常等待几十秒到几分钟会恢复。
  • 降低并发:同时发很多请求容易触发,改成排队执行。
  • 指数退避重试:失败后等 1 秒、2 秒、4 秒再试,不要立刻连续重试。
  • 换一个模型:同一系列的其他模型可能有空闲容量,见 编程场景怎么选模型。
  • 如果持续出现,到 服务状态 看是否有已知故障。

Codex 里看到 “exceeded retry limit, last status: 429”

Codex 会自动重试,重试多次仍失败后只显示最后一个状态码,不展示原因。真正的原因在 429 的响应内容里,用 curl 直接请求一次看错误码,再按上表处理,见 Codex 常见问题。

区分 429 和 404

如果同样是“重试没有用”的情况,注意区分:model_not_found 返回的是 404,重试永远不会成功,必须改配置,见 model_not_found。429 通常是暂时的。

一个最小验证

curl -i https://hrouter.net/v1/models \
  -H "Authorization: Bearer $HROUTER_API_KEY"

返回 200,说明 Key 本身没问题;再看是额度类还是限流类问题。响应体里的错误码就是答案。

相关阅读