Rate limiting
Limits apply per organization. Exceeding them returns a 429 with the standard error envelope.
Limits
| Scope | Per minute | Per hour |
|---|---|---|
| All v1 endpoints (default) | 120 | 3,000 |
Both windows apply at the same time, counted across all API keys of your organization.
Avoid polling where you can
The recommended way to track runs is webhooks: final completion and review cancellation events are pushed to your endpoint, so most integrations never need to poll for final output — and never touch these limits for that stage.
If you do fall back to polling, use GET /transformations/{id} sparingly. It returns the current lifecycle state, failure payload, progress counters, review state, and fresh download URLs when output is available.
Handling 429 responses
A rate-limited request receives a 429 with the standard error envelope. Treat it as a signal to back off — exponential backoff with jitter works well. Spread bulk imports over time instead of bursting hundreds of runs at once.