Rate Limiting and Quotas
Rate Limiting and Quotas
All API endpoints enforce rate limits to ensure fair usage and platform stability. Rate limits are applied per API key and vary by your subscription tier.
Quota Tiers
Each plan includes a baseline request quota. Requests beyond the quota are rejected until the rate window resets.
| Tier | Requests / minute | Requests / day | Burst limit |
|---|---|---|---|
| Free | 60 | 10,000 | 10 |
| Pro | 300 | 100,000 | 50 |
| Enterprise | 1,200 | Unlimited | 200 |
Burst limits define the maximum number of requests allowed in a single second. Exceeding the burst limit returns a 429 Too Many Requests response even if the per-minute quota has not been reached.
Rate Limit Headers
Every API response includes headers that report your current rate limit status:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 247
X-RateLimit-Reset: 1706140800
Retry-After: 32
X-RateLimit-Limit— Maximum requests allowed in the current window.X-RateLimit-Remaining— Requests remaining before throttling.X-RateLimit-Reset— Unix timestamp when the window resets.Retry-After— Seconds to wait before retrying (only present on 429 responses).
Exponential Backoff
When you receive a 429 response, implement exponential backoff with jitter. A recommended strategy:
const backoff = (attempt: number): number => {
const base = Math.min(1000 * Math.pow(2, attempt), 32000);
const jitter = Math.random() * base * 0.5;
return base + jitter;
};
Start with a 1-second delay, doubling on each retry up to a maximum of 32 seconds. Adding random jitter prevents thundering-herd problems when multiple clients retry simultaneously.
If you consistently hit rate limits, consider batching requests using the bulk endpoints or upgrading to a higher tier. Contact support for custom rate limit arrangements on Enterprise plans.
Peer-reviewed and accepted for publication. Supplementary data available via linked endpoints.