Skip to main content
The API enforces rate limits per API key to ensure fair usage and platform stability. Limits are applied on a sliding window basis.

Default limits

Limits are applied per API key, not per user. If you have multiple keys, each has its own quota.

Rate limit headers

Every response includes rate limit metadata so you can track your consumption:

Handling 429 responses

When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header:
Wait the number of seconds specified in Retry-After before retrying.

Best practices

When you receive a 429, don’t retry immediately. Wait Retry-After seconds on the first retry, then double the wait on subsequent retries up to a maximum (e.g. 60 seconds).
Cache responses that don’t change frequently - session lists, template configs, org settings. Use Cache-Control or a local TTL to avoid unnecessary requests.
Instead of making one request per resource, use list endpoints with filters and pagination. A single GET /api/sessions?limit=100 replaces 100 individual GET /api/sessions/{id} calls.
Check X-RateLimit-Remaining in responses proactively. If you are consistently running close to the limit, consider requesting a higher tier or optimizing your request patterns.