Limits
Limits apply per account. All the keys on one account share them.
Rate limits
Section titled “Rate limits”| Endpoint | Per minute | Per hour | Per day |
|---|---|---|---|
POST /v1/render |
3 | 30 | 100 |
POST /api/webhooks/hooks |
10 | 60 | 200 |
Every render also counts toward the account’s overall render limit of 5 per minute, 60 per hour and 300 per day. That limit is shared with renders started in the app, so a busy team in the app leaves less room for the API.
Requests are counted in fixed windows of one minute, one hour and one day. When you go over,
you get 429 with code: "RATE_LIMITED" and the number of seconds to wait, in retryAfter
or details.retryAfter:
{ "error": "Rate limit exceeded", "retryAfter": 37, "code": "RATE_LIMITED" }GET /v1/me and GET /v1/job/{id} have no rate limit today. Poll a job every few seconds,
not in a tight loop, or use webhooks instead.
Concurrent renders
Section titled “Concurrent renders”Your plan sets how many renders can run at the same time. Renders started in the app count
too. When every slot is busy, POST /v1/render returns 429 with code: "CONCURRENT_LIMIT".
Nothing is queued for you: wait for a running job to finish, then send the request again.
Credits and usage
Section titled “Credits and usage”- Each render spends credits from the account’s balance. If there are not enough, the
render is refused with
402(NO_CREDITSorINSUFFICIENT_CREDITS) before it starts. - One render cannot cost more than a fixed per-render limit. A render over it is refused
with
413 REQUEST_COST_TOO_HIGH. Use fewer scenes, shorter scenes or a lowerquality. - Each plan has a monthly usage limit. When it is reached, renders are refused with
402 ABUSE_CAP_EXCEEDEDuntil the month resets or the plan changes. - Each plan has a storage allowance for finished videos. When the library is full, renders
are refused with
402 STORAGE_FULL.
See Account and billing for your plan’s allowances.
Request limits
Section titled “Request limits”For POST /v1/render:
| Field | Limit |
|---|---|
brief |
1 to 4,000 characters |
scene_plan |
1 to 12 scenes |
scene prompt |
1 to 2,000 characters |
scene script |
up to 2,000 characters |
scene duration |
3 to 10 seconds |
duration_sec |
5 to 120 seconds |
title |
up to 200 characters |
brand_name |
up to 80 characters |
category |
up to 60 characters |
language |
2 to 10 characters |
brand_colors |
up to 12 colours, 32 characters each |
brand_logo_url, product_image_url |
up to 5,000,000 characters (enough for a data URI) |
Idempotency-Key header |
first 80 characters are used |
For webhooks:
| Item | Limit |
|---|---|
| Webhooks per account | 25 |
webhook_url |
up to 2,000 characters, public http(s) only |
description |
up to 200 characters |
Time limits
Section titled “Time limits”| Step | Limit | What happens |
|---|---|---|
Planning from a brief |
about 60 seconds | 502 PLAN_FAILED, planning credits refunded. |
| A render | about 1 hour | The job is marked failed and its credits are refunded. |
| A webhook delivery | 10 seconds per attempt | The delivery is retried, up to 3 attempts. |