Rate Limits
API calls are rate-limited on two independent buckets:
| Window | Limit |
|---|---|
| Hourly | Plan's hourly quota |
| Minute | 10% of the hourly quota |
Both limits must be respected. The minute bucket prevents bursts that would otherwise consume an hour's quota in seconds.
Plan quotas
| Plan | Calls / hour | Calls / minute |
|---|---|---|
| Starter | 1,000 | 100 |
| Team | 2,500 | 250 |
| Business | 5,000 | 500 |
| Enterprise | Custom | Custom |
Per-key overrides are available for specific integration workloads — contact support.
Response headers
Every authenticated response includes:
X-RateLimit-Limit: <current bucket's capacity>
X-RateLimit-Remaining: <tokens left>
X-RateLimit-Reset: <unix timestamp when the bucket refills>
X-RateLimit-Scope: ok | hour | minute
Exceeded
When you exceed either bucket, the server returns HTTP 429 Too Many Requests:
HTTP/1.1 429 Rate limit exceeded (minute)
Retry-After: 1
The response body is the plain-text error message. Wait at least Retry-After seconds before retrying. Good clients implement exponential backoff after repeated 429s.
Implementation details
Rate limiting is a leaky-token bucket per API key. Tokens refill continuously: the hourly bucket refills at hourlyLimit / 3600 tokens per second, the minute bucket at minuteLimit / 60. A burst of 100 calls on a Starter plan will drain the minute bucket immediately and must then wait ~0.6s between further calls.