Rate limits & quotas
How per-second limits and monthly quotas work, and how to build well-behaved clients.
Two independent controls apply to every API key:
- Rate limit — sustained requests per second, enforced as a token bucket with burst capacity equal to your plan's rate. Short bursts up to the limit are fine; sustained excess is rejected.
- Monthly quota — total successful requests per calendar month, shared across all APIs. Quotas reset on the first of the month at 00:00 UTC.
Plan limits
This table is generated from the same configuration the gateway enforces:
| Plan | Requests / month | Sustained rate | Burst |
|---|---|---|---|
| Free | 1,000 | 2 req/s | 2 requests |
| Starter | 50,000 | 5 req/s | 5 requests |
| Growth | 250,000 | 15 req/s | 15 requests |
| Scale | 1,000,000 | 50 req/s | 50 requests |
| Enterprise | Custom | Custom | Custom |
Response headers
Every rate-limited response — success or rejection — carries the current state:
x-ratelimit-limit: 15 ← plan's sustained requests/second
x-ratelimit-remaining: 14 ← tokens left in the bucket right now
x-ratelimit-reset: 1785503186 ← epoch seconds when the bucket refills
x-quota-limit: 250000 ← monthly quota
x-quota-remaining: 249862 ← requests left this month
x-quota-reset: 1785542400 ← epoch seconds at the next monthly resetWhen you exceed a limit
| Exceeded | Response | What to do |
|---|---|---|
| Requests/second | 429 RATE_LIMIT_EXCEEDED + Retry-After | Wait Retry-After seconds, then retry |
| Monthly quota | 429 QUOTA_EXCEEDED + Retry-After | Upgrade the plan, or wait for the reset |
There are no automatic overage charges — when a quota is exhausted, requests are simply rejected until you upgrade or the month rolls over.
Client best practices
- Watch
x-ratelimit-remainingand pace proactively instead of reacting to 429s. - On
429, sleep exactlyRetry-Afterseconds — it is calculated, not a guess. - Add jitter when many workers share one key, so refilled tokens are not consumed in a stampede.
- Alert your team when
x-quota-remainingdrops below ~10% — before production traffic stalls.