Rate limits
Limits per plan
Each workspace has a per-minute budget and a burst window: at most 2× the average rate in any 10 seconds. Whichever runs out first answers 429 rate_limited with Retry-After. Your own use of the app never counts against the API budget.
| Plan | Per minute | Burst | Included / month | Jobs at once |
|---|---|---|---|---|
| Pro | 60 | 20 / 10 s | 4,000 | 2 |
| Business | 600 | 200 / 10 s | 12,000 | 5 |
| Enterprise | custom | custom | custom | custom |
Response headers
X-RateLimit-LimitRequests allowed per minute for the workspace.X-RateLimit-RemainingRequests left in the current minute.X-RateLimit-ResetSeconds until the minute window resets (not a Unix time).Retry-AfterOn every 429: seconds to wait before retrying.X-Request-IdThe request's id, also in error bodies. Quote it to support.Idempotent-Replayedtrue when the answer is a replay of an earlier request.Monthly requests
Each plan includes a number of requests per calendar month (UTC). Usage is shown in Settings → API next to the latency and error rate of the last 30 days. Going over is not refused today; we will announce any change here and in the changelog first.
Heavy work
Bulk runs and ZIP exports run in the background and share the plan's concurrent jobs; more wait in a queue. Follow them by polling or with the bulk.completed and export.completed webhooks rather than polling in a tight loop.