Rate limits

Understand the request limits applied to your team.

The API is rate-limited on a per-endpoint, per-hour basis. Limits apply per team, so all API keys belonging to your team share the same limit for each endpoint. Limits are generous for typical usage but exist to protect the platform from abuse.

Default limits

Endpoint groupLimit
POST /v1/tools/* (all generation endpoints)500 requests/hour
GET /v1/tools/executions/{id}5,000 requests/hour
POST /v1/tools/executions/{id}/cancel250 requests/hour
GET /v1/files, GET /v1/files/{id}50,000 requests/hour
POST /v1/files/{id}/hydrate2,500 requests/hour
POST /v1/files/upload500 requests/hour
POST /v1/files/search500 requests/hour
GET /v1/resources/*2,500 requests/hour
GET /v1/webhooks/endpoints500 requests/hour
POST /v1/webhooks/endpoints10 requests/hour
DELETE /v1/webhooks/endpoints/{id}10 requests/hour
POST /v1/workflows/* (all start endpoints)500 requests/hour
GET /v1/workflows/runs/{id}5,000 requests/hour
POST /v1/workflows/runs/{id}/cancel250 requests/hour
GET /v1/projects, GET /v1/projects/{id}2,500 requests/hour
POST /v1/projects/{id}/export500 requests/hour
GET /v1/projects/{id}/exports/{exportId}5,000 requests/hour
POST /v1/projects/{id}/remix500 requests/hour
GET /v1/projects/{id}/remix-actions5,000 requests/hour

These limits apply per team (shared across all of your team’s API keys). If you need higher limits for your use case, contact us at [email protected].

Response headers

Every response includes rate limit headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the window resets

Handling 429 responses

When you exceed the limit, the API returns 429 Too Many Requests.

Best practices:

  • Back off exponentially. Wait 1s, then 2s, then 4s, etc.
  • Use webhooks instead of polling. If you’re hitting limits on GET /v1/tools/executions/{id}, switch to webhooks so you don’t need to poll at all.
  • Cache resource lists. Avatar presenters and TTS voices change infrequently. Cache the response and refresh every few hours rather than on every request.