Skip to main content

Rate Limits

API requests are rate limited to ensure fair usage and platform stability.

Default Limits

PlanRequests per minuteRequests per day
Starter6010,000
Professional300100,000
EnterpriseCustomCustom

Rate Limit Headers

Every response includes rate limit information:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1640995200
HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRemaining requests in window
X-RateLimit-ResetUnix timestamp when limit resets

Handling Rate Limits

When you exceed the rate limit, you'll receive a 429 response:

{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"retryAfter": 30
}
}

Best Practices

  1. Implement exponential backoff when receiving 429 responses
  2. Cache responses where appropriate
  3. Use webhooks instead of polling for status updates
  4. Batch requests when possible
async function requestWithRetry(url: string, options: RequestInit, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);

if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || '30';
await sleep(parseInt(retryAfter) * 1000);
continue;
}

return response;
}
throw new Error('Max retries exceeded');
}