Rate Limits
API rate limits are applied per tenant and per IP address. When you exceed the limit, the API returns 429 Too Many Requests.
Per-tenant
Limits are scoped to your tenant and subscription plan
Sliding window
1-minute window with burst allowance for spikes
Headers included
Every response includes X-RateLimit-* headers
Limits by Plan
Rate limits vary by subscription tier. Higher plans include more requests per minute and a larger burst allowance.
| Plan | Rate Limit | Window | Burst |
|---|---|---|---|
| Free | 60 req | 1 minute | 10 |
| Starter | 300 req | 1 minute | 30 |
| Pro | 1,000 req | 1 minute | 100 |
| Team | 5,000 req | 1 minute | 500 |
| Enterprise | Custom | Custom | Custom |
Monthly API Call Limits
In addition to per-minute rate limits, API key usage is tracked against a monthly quota. When the monthly limit is reached, all API key requests return 429 until the next billing cycle.
| Plan | Monthly API Calls |
|---|---|
| Free | 1,000 |
| Starter | 10,000 |
| Pro | 100,000 |
| Team | 500,000 |
| Enterprise | Custom |
Usage headers
X-API-Usage-Current and X-API-Usage-Limit headers to track your monthly consumption.Rate Limit Headers
Every response includes rate limit headers so you can monitor your usage and implement backoff logic.
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 1738942060| Header | Description |
|---|---|
| X-RateLimit-Limit | Maximum requests allowed in the current window |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | Unix timestamp when the window resets |
Rate limit headers
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.429 Too Many Requests
When you exceed the rate limit, the API returns 429 with a JSON body indicating when you can retry.
{
"success": false,
"status": 429,
"message": "Rate limit exceeded. Try again after the window resets.",
"retryAfter": 42,
"meta": {
"timestamp": "2026-02-08T12:00:00.000Z",
"version": "v1"
}
}Exponential backoff
X-RateLimit-Reset or the response retryAfter field) before retrying. Implement exponential backoff for sustained high-volume usage.Best Practices
- Monitor
X-RateLimit-Remainingand throttle requests before hitting the limit - Use batch endpoints where available to reduce request count
- Cache responses when appropriate (e.g. plans, configuration)
- Implement exponential backoff with jitter when retrying after 429
- Contact support for custom limits on Enterprise plans