Documentation
Rate limits & usage
Two limits apply to your account, both based on your subscription plan:
- A monthly generation quota that resets at the start of your billing period.
- A per-minute request limit on how often you can call the rendering endpoints.
| Plan | Generations/month | Requests/minute |
|---|---|---|
| Free | 50 | 15 |
| Starter | 2,000 | 60 |
| Pro | 5,000 | 150 |
Both limits apply to every endpoint that renders an image: POST /api/generate, POST /api/hooks/render, and a fresh (uncached) GET /api/render.
What doesn't count toward your limit
Cached responses never count toward either limit, on any endpoint. A render is only billed and rate limited the first time it's produced; repeat requests for the same template, layers, dimensions, and format are served from cache for free.GET /api/render is billed to the template owner
The public, unauthenticated/api/render endpoint is not exempt from rate limits. A
fresh render on that endpoint counts against the monthly quota and per-minute limit of the
**template's owner**, the account that created the template, not the caller. If you embed a
template publicly and it gets popular, its owner's plan is what determines how much headroom you
have.429 responses
When either limit is exceeded, the endpoint returns HTTP 429 with a JSON body and a Retry-After header:
- Per-minute limit exceeded: the body includes
limitandretryAfter(seconds until the current one-minute window frees up). - Monthly quota exceeded: the body includes
limit,used,remaining, andretryAfter(seconds until your billing period resets).
In both cases, the Retry-After header mirrors the body’s retryAfter value in seconds.