Using APIs
Rate limits and quotas
Per-second limits, monthly quotas, overage and the rate-limit headers.
Every plan comes with two limits. The quota is how many requests you can make per billing month. The rate limit is how many requests you can make per second.
Monthly quota
Your quota starts fresh at the beginning of each billing period, on the same day of the month you subscribed. What happens when you reach it depends on the plan:
| Plan type | When the quota is used up |
|---|---|
| Hard limit | Further requests are rejected with 429 QUOTA_EXCEEDED until the next period starts, or until you switch to a bigger plan. |
| Overage | Requests keep working. Each extra request is charged at the plan's overage price and added to your next invoice. |
The Pricing tab shows which type each plan is ("Hard limit", or the price per extra request).
Rate limit
If a plan has a rate limit (for example 5 requests per second) and you go over it, the extra requests are rejected with 429 RATE_LIMITED. Slow down and retry after a moment. These requests don't count towards your quota.
Concurrent requests
Some plans also limit how many requests you can have in flight at the same time. If you start more than that, the extra ones are rejected with 429 TOO_MANY_CONCURRENT_REQUESTS. Wait for earlier requests to finish.
Calls that don't count
Requests rejected by the rate limit don't count towards your quota. Neither do calls that never got an answer from the provider's server, because it was unreachable or timed out (502 BAD_GATEWAY).
Checking your limits
Every successful response includes these headers:
| Header | Meaning |
|---|---|
X-RateLimit-Quota-Limit | Your plan's requests per month |
X-RateLimit-Quota-Remaining | Requests left this period |
X-RateLimit-Quota-Reset | Seconds until your quota resets |
X-RateLimit-Requests-Limit | Requests allowed per second (only on plans with a rate limit) |
X-RateLimit-Requests-Remaining | Requests left in the current second |
X-RateLimit-Requests-Reset | Seconds until the per-second window resets |
You can also see your usage in Console → Billing → Usage and on each subscription's page. A Limit reached badge appears when a hard-limit plan's quota is exhausted.
Handling 429 responses well
- Read the
...-Remainingheaders and slow down before you hit zero. - When you get
429 RATE_LIMITED, wait at least the number of seconds inX-RateLimit-Requests-Resetbefore retrying, and use exponential back-off. - When you get
429 QUOTA_EXCEEDED, retrying won't help until the next period. Switch to a bigger plan for immediate access.
Something unclear or missing? Email [email protected].