Rate Limits
Rate limits are enforced per user on a rolling hourly window.
Rate limits are enforced per user on a rolling hourly window. Every successful response includes these headers:
| Header | Type | Description |
|---|---|---|
X-RateLimit-Limit | integer | Requests allowed per hour for your tier |
X-RateLimit-Remaining | integer | Requests remaining in the current window |
X-RateLimit-Reset | unix timestamp | When the rate limit window resets |
When exceeded, the API returns 429 with a Retry-After header indicating seconds until reset.
Handling 429 Responses
const res = await fetch(url, { headers });
if (res.status === 429) {
const retryAfter = parseInt(res.headers.get("Retry-After") || "60", 10);
await new Promise(r => setTimeout(r, retryAfter * 1000));
// retry the request
}Limits by Tier
| Tier | Requests per hour |
|---|---|
| Starter | 100 |
| Professional | 500 |
| Enterprise | 2,000 |