Rate Limits
Understand API rate limits and how to handle them.
Rate Limits
Rate limits protect the API from abuse and ensure fair usage.
Default Limits
| Limit Type | Default |
|---|---|
| Requests per minute | 60 |
| Concurrent runs | 10 |
Rate Limit Headers
Every response includes rate limit information:
http
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1704067200Handling 429 Errors
When rate limited, you'll receive:
json
{
"error": "Too many requests",
"message": "Rate limit exceeded. Try again in 30 seconds.",
"retry_after": 30
}Best Practices
1. Implement exponential backoff:
typescript
async function retryWithBackoff(fn: () => PromiseResponse>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fn();
if (response.status !== 429) return response;
const retryAfter = parseInt(response.headers.get('Retry-After') || '1');
await new Promise(r => setTimeout(r, retryAfter * 1000 * Math.pow(2, i)));
}
throw new Error('Max retries exceeded');
}2. Check remaining quota before making requests
3. Use webhooks instead of polling to reduce requests
4. Contact support if you need higher limits