Limits
Only the last three are machine-readable —
GET /v1/capabilities exposes them under
rate_limits as the auth_sync, render_submit, and task_submit scopes. The two
signup limits are documented here only.
Workspace-level monthly quotas (applies to the free plan):
Previews (
POST /v1/preview, and any is_preview job) are never metered, and only
completed renders count toward the cap. There is no quota on AI tasks.
Rate limit headers
When a limit is exceeded, the API returns 429 Too Many Requests:Quota exceeded
When the free-plan render-time cap is exhausted,POST /v1/renders returns
402 Payment Required with code: quota_exceeded — not 429. It is a monthly cap,
not a rate limit: do not retry it with backoff.
Best practices
- Retry
429with exponential backoff; never retry402 quota_exceededthat way — it clears on the monthly reset, not on a delay. - Use idempotency keys to safely retry without double-submitting.
- For agent workflows, use the
batch-tasksAgent Skill to submit multiple tasks concurrently without hitting per-request limits. - Subscribe to webhooks instead of polling to avoid unnecessary GET requests.

