Rate Limits
Understand API rate limits, response headers, and strategies for handling rate-limited requests.
Rate limits protect the API from excessive usage and ensure fair access for all users.
Limits by Plan
| Plan | Requests/min | Requests/day | Burst |
|---|---|---|---|
| Free | 60 | 10,000 | 10/sec |
| Pro | 300 | 100,000 | 50/sec |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers
Every API response includes rate limit headers:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 295
X-RateLimit-Reset: 1709294400
| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests allowed per window |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp when the limit resets |
Handling Rate Limits
When you exceed the rate limit, you’ll receive a 429 Too Many Requests response:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"status": 429,
"retry_after": 30
}
}
Retry Strategy
Implement exponential backoff with jitter:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status !== 429) return response;
const retryAfter = response.headers.get('Retry-After');
const delay = retryAfter
? parseInt(retryAfter) * 1000
: Math.min(1000 * 2 ** attempt + Math.random() * 1000, 30000);
await new Promise((resolve) => setTimeout(resolve, delay));
}
throw new Error('Max retries exceeded');
}
Best Practices
- Cache responses — Reduce unnecessary API calls
- Use webhooks — Subscribe to events instead of polling
- Batch requests — Combine multiple operations where possible
- Implement backoff — Use exponential backoff with jitter
- Monitor usage — Track rate limit headers in your application
Requesting Higher Limits
If you need higher rate limits, contact our team:
- Upgrade to Pro or Enterprise plan
- Request temporary limit increases for migrations
- Contact support for custom arrangements
Last updated: February 15, 2026
Edit this page on GitHub
Was this page helpful?
Thanks for your feedback!