Reference
Rate limits
60 requests a minute and 200 generations an hour per key; 20 running at once.
Limits
| Limit | Per key | Counts |
|---|---|---|
| Requests | 60 per minute | Every API call |
| Generations | 200 per hour (API keys) · 20 per hour (connector keys) | Calls that create videos or images (POST /jobs, /images, regenerate, extend…) |
| Running at once | 20 per account | Generations in progress at the same time (429 concurrency_limit) |
On top of that, up to 20 generations can run at the same time per account (429 concurrency_limit, see Pricing & billing). Need more? Email support@joinqulture.com.
Headers
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per minute (60). |
X-RateLimit-Remaining | Requests left in this minute. |
X-RateLimit-Reset | Unix time when the minute resets. |
X-RateLimit-Generations-Remaining | Generations left this hour (on create calls). |
Retry-After | Seconds to wait (on 429). |
Handling 429
When you go over, you get 429 rate_limited with Retry-After. Wait that many seconds and retry:
async function withRetry(doRequest) {
for (let attempt = 0; attempt < 5; attempt++) {
const res = await doRequest();
if (res.status !== 429) return res;
const wait = Number(res.headers.get("Retry-After") ?? 5);
await new Promise((r) => setTimeout(r, wait * 1000));
}
throw new Error("still rate limited");
}