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');
}