All pages
Reference
Rate limits & quotas
Only POST /api/v1/renders costs anything. Reads are free and uncounted against your spend cap: polling a render, downloading the file, re-downloading it a hundred times, listing media, fetching previews, checking usage. Reads are rate limited but never billed, so poll every few seconds rather than continuously: a render takes minutes, so polling harder learns nothing sooner.
| Limit | Value | Applies | Notes |
|---|---|---|---|
| Renders started per minute | 60 by default | per key, on POST /api/v1/renders | Over it is 429 rate_limit_exceeded. Your key’s actual value is on Settings → API and can be raised for you. |
| Read requests per minute | 600 by default | per key, on every GET | Polling, downloads, previews, media listing and usage share this. Deliberately far above the create limit so a caller polling several renders at once is never throttled for following the guidance on this page. Over it is 429 rate_limit_exceeded. |
| Daily spend cap | set per key | per key | A ceiling on renders started in a rolling 24-hour window, so it refills continuously rather than resetting at midnight. The render that would cross the line is the one refused, with 402 spend_cap_reached — you are never taken over the cap. |
| Render allowance | set per plan | per account | The cycle allowance shared by everything in the workspace, API and portal alike: 0 on Starter, 100 on Studio, 500 on Agency, negotiated on Custom. GET /api/v1/usage reports it. Exhausted — or never granted — is 402 quota_exceeded. |
| Caption length | 500 characters | per render | Longer is 422 validation_failed. |
| Metadata | 20 keys | per render | Scalar values only, echoed back on the render unchanged. |
| Page size | 100 max, 25 default | GET /api/v1/media | Out of range is 422 validation_failed, not a clamp. |
The two money limits are different things
They are easy to confuse and they fail differently, so it is worth being precise.
- The daily spend cap is per key, over a rolling 24 hours, and is what stops a runaway integration. Hitting it is
402 spend_cap_reached. It refills continuously rather than resetting at midnight. - The render allowance is per account, per billing cycle, and is what your plan includes. Hitting it is
402 quota_exceeded.GET /api/v1/usagereports it.
The same 402 with two different codes, which is exactly why you match on the code. Your key's live numbers are on Settings → API.
Reads are not metered
Polling, downloads, previews, media listing and usage checks cost nothing — they are metered against neither money limit. They do share a per-minute request ceiling, set far above what the guidance on this site asks for, so following it will not put you near it. Poll every few seconds anyway: a render takes minutes, so a tighter loop learns nothing sooner.