CheaperGen

指南

速率限制

了解 CheaperGen 的速率和并发限制、429 rate_limited 响应的含义,以及如何安全地退避重试并提升吞吐量。

两项限制让所有人的响应时间保持稳定:经过身份验证的请求受 请求速率 限制,同时运行的生成任务数量受 并发数 限制。超出请求速率时,请求会收到 429 rate_limited,不会扣款。超出并发限制时不会拒绝:生成任务会在你账户的队列中等待,你的任一任务完成后它就立即开始。

默认限制#

限制项默认值适用范围
请求速率每秒 10 个请求,突发时最多 20 个按 API 密钥(或已登录会话)计算,适用于所有需要身份验证的端点,包括提交任务、轮询、列出任务和上传文件。
并发生成任务数同时运行 20 个按整个账户计算,涵盖所有密钥和 Studio。已完成的生成任务和在队列中等待的任务不计入。
排队最多为你并发上限的 10 倍超出并发上限的生成任务在这里等待,按先到先得的顺序开始。
公开端点合理使用GET /models、GET /models/{id} 和 POST /quote 均已缓存;请勿在短时间内反复轮询。

请求速率采用令牌桶算法:可一次发送最多 20 个请求,容量以每秒 10 个请求的速度恢复。稳定低于每秒 10 个请求不会触发限制。

队列#

  • 超出并发上限的生成任务照常受理:你会立即拿到它的 id,费用照常从余额中冻结,状态为 queued。你的任一生成任务完成后,它会自动开始,先提交的先开始。
  • 等待时间不计入生成任务的时限:排队中的任务不会因为等待而失败或超时。
  • 仍在队列中等待的生成任务可以随时取消(POST /generations/{id}/cancel)或删除,冻结的费用会立即退还。任务开始后,按常规的取消规则处理。
  • 你的队列最多容纳并发上限 10 倍的任务(新账户为 200 个)。超出后,请求会收到 429 rate_limited,不会创建任务,也不会扣款。
  • 每个账户都有自己的队列,等待中的生成任务不占用算力:队列再长也不会耽误其他账户的生成任务。

查看你的限额#

上表是默认值。你账户自己的限额以及当前进行中的生成数量,可以在 控制面板 → 设置 查看,也会出现在 GET /api/v1/account(以及 MCP 工具 get_account)返回的 limits 字段中:

GET /api/v1/account
{
  "object": "account",
  "balance_usd": 42.5,
  "limits": {
    "unlimited": false,
    "concurrent_generations": 20,
    "in_flight": 3,
    "requests_per_second": 10,
    "burst": 20,
    "tier": null
  }
}

concurrent_generations 是可同时运行的生成数量上限(超出的在队列中等待),in_flight 是当前进行中的数量(含排队中的);requests_per_second 和 burst 是请求速率和突发量,账户和每个 API 密钥分别适用。

触发限制时#

429 Too Many Requests
{
  "error": {
    "code": "rate_limited",
    "message": "Your queue is full: 200 generations are already waiting for your 20 concurrent slots (up to 200 can wait). Nothing was submitted or charged. Retry when some have finished (webhook_url tells you when), or cancel queued ones; GET /api/v1/account shows your limits. For a higher limit, contact us: contact@cheapergen.com."
  }
}

每个 429 响应都带有 Retry-After 响应头(需等待的秒数)。如果是触及了某项限额,错误信息会写明该限额;如果是队列已满,还会写明正在等待的生成数量。

  • 请求速率: 稍等片刻,再以指数退避并加入随机抖动的方式重试(可以从等待约一秒开始)。参见 安全地重试。
  • 队列已满: 只有在你的队列已满时,才会因并发返回 429。等部分生成任务完成(webhook_url 会通知你),或取消排队中的任务,再提交新任务。

如何避免触发限制#

使用 Webhook,避免频繁轮询#

每秒轮询数十个任务会迅速耗尽请求额度。提交时传入 webhook_url,让我们主动通知你,详情见 Webhooks。如果仍要轮询,视频任务间隔请延长至 5–10 秒。

在你自己的服务中排队提交任务#

短时间的突发提交没有问题:队列会接住它们。如果批量任务超过队列容量,请把待处理的任务留在你这边,在生成任务完成时再提交(Webhooks 会通知你),这样就不会遇到队列已满的 429。

每项服务使用一个密钥#

请求速率按密钥计算,并发数则按账户计算。增加密钥数量不会增加你能同时运行的生成任务数。

需要更高吞吐量?

企业方案支持更高的请求速率和并发数,并可根据流量峰值配置专属算力。联系销售,或发邮件至 contact@cheapergen.com。

有不清楚或缺少的内容?发邮件至 support@cheapergen.com——我们会认真阅读每一封邮件。