Rate Limits
Limits by tier
Section titled “Limits by tier”| Tier | Requests/min | Requests/month | Max perPage |
|---|---|---|---|
| Free | 10 | 100 | 10 |
| Starter | 30 | 5,000 | 50 |
| Pro | 60 | 25,000 | 500 |
| Business | 120 | 100,000 | 500 |
Response headers
Section titled “Response headers”Every response includes rate limit and quota headers:
X-RateLimit-Limit: 60X-RateLimit-Remaining: 58X-RateLimit-Reset: 1708012800X-Quota-Limit: 25000X-Quota-Used: 142X-Quota-Remaining: 24858X-Quota-Overage-Limit: 50000X-Request-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests per minute for your tier |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
X-Quota-Limit | Included monthly quota (base plan) |
X-Quota-Used | Requests used this month |
X-Quota-Remaining | Requests remaining in base quota (can be 0 during overage) |
X-Quota-Overage-Limit | Hard limit including overage headroom (paid tiers only) |
X-Request-Id | Unique request ID for log correlation |
X-Quota-Overage-Limit is only present for paid tiers. When X-Quota-Used exceeds X-Quota-Limit, you are in the overage zone — requests continue but incur per-request charges. Requests are blocked at the hard limit. See Pricing for overage rates.
Handling 429 responses
Section titled “Handling 429 responses”When you exceed the rate limit, the API returns a 429 status with a Retry-After header:
{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Rate limit exceeded. Retry after 32 seconds.", "status": 429, "retryAfter": 32 }}Best practices:
- Read the
Retry-Afterheader and wait before retrying - Implement exponential backoff for repeated 429s
- Use the SDK, which handles retries automatically
Quota exceeded
Section titled “Quota exceeded”Paid tiers have overage headroom — requests continue past the base quota and are billed at your tier’s overage rate, up to the overage cap. Once the hard limit is reached:
{ "error": { "code": "QUOTA_EXCEEDED", "message": "Monthly quota of 5000 requests plus overage cap exceeded. Resets on the 1st of next month.", "status": 429 }}Free-tier users are blocked at 100 requests with no overage:
{ "error": { "code": "QUOTA_EXCEEDED", "message": "Monthly quota of 100 requests exceeded. Resets on the 1st of next month.", "status": 429 }}Quotas reset on the 1st of each month. Check your current usage with the X-Quota-* response headers included on every API response.