限流

每个 API Key 的请求频率限制、每个账号的并发任务上限、请求大小限制和任务时限。

限流用于保证所有用户的服务响应。超出限制时返回 429 rate_limited,并带有 Retry-After 响应头(秒)。

请求频率

范围限制适用接口
每个 API Key5 次 / 秒POST /v1/tasks
每个 API Key20 次 / 秒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
metadata16 个键,JSON 后 2 KB
Idempotency-Key255 个字符
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 使用,重试就不会产生重复任务。