限流
每个 API Key 的请求频率限制、每个账号的并发任务上限、请求大小限制和任务时限。
限流用于保证所有用户的服务响应。超出限制时返回 429 rate_limited,并带有 Retry-After 响应头(秒)。
请求频率
| 范围 | 限制 | 适用接口 |
|---|---|---|
| 每个 API Key | 5 次 / 秒 | POST /v1/tasks |
| 每个 API Key | 20 次 / 秒 | GET /v1/tasks、GET /v1/tasks/{id}、GET /v1/balance |
| 每个 IP 地址 | 50 次 / 秒 | 所有 /v1 接口,包括 GET /v1/models |
限制按 1 秒窗口计算。
并发任务
每个账号最多同时有 20 个进行中的任务(queued 或 processing),所有 API Key 和 Playground 合并计算。超出时返回 429 rate_limited,Retry-After: 10。请等部分任务完成后重试。
如需更高额度,请联系客服。
大小限制
| 项目 | 限制 |
|---|---|
| 请求体 | 64 KB |
metadata | 16 个键,JSON 后 2 KB |
Idempotency-Key | 255 个字符 |
URL(callback_url、image_urls) | 每个 2,048 个字符 |
image_urls 数量 | 因模型而异,见模型 |
| 提示词长度 | 因模型而异,见模型 |
时间限制
| 项目 | 限制 |
|---|---|
| 图像任务 | 从 created_at 起 15 分钟,超时以 timeout 失败并退款 |
| 视频任务 | 从 created_at 起 45 分钟,超时以 timeout 失败并退款 |
| 结果文件 | 完成后保存 30 天(expires_at) |
| Webhook 响应 | 10 秒;超时后重试,共 5 次 |
Idempotency-Key 有效期 | 24 小时 |
处理 429
Node.js
async function withRetry(fn, attempts = 5) {
for (let i = 0; ; i++) {
const resp = await fn();
if (resp.status !== 429 && resp.status !== 503) return resp;
if (i >= attempts - 1) return resp;
const wait = Number(resp.headers.get('retry-after')) || 2 ** i;
await new Promise((r) => setTimeout(r, wait * 1000 + Math.random() * 250));
}
}创建任务时配合 Idempotency-Key 使用,重试就不会产生重复任务。