指南
速率限制
了解 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 字段中:
{
"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 密钥分别适用。
触发限制时#
{
"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。
每项服务使用一个密钥#
请求速率按密钥计算,并发数则按账户计算。增加密钥数量不会增加你能同时运行的生成任务数。
有不清楚或缺少的内容?发邮件至 support@cheapergen.com——我们会认真阅读每一封邮件。