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 typeWhen the quota is used up
Hard limitFurther requests are rejected with 429 QUOTA_EXCEEDED until the next period starts, or until you switch to a bigger plan.
OverageRequests 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:

HeaderMeaning
X-RateLimit-Quota-LimitYour plan's requests per month
X-RateLimit-Quota-RemainingRequests left this period
X-RateLimit-Quota-ResetSeconds until your quota resets
X-RateLimit-Requests-LimitRequests allowed per second (only on plans with a rate limit)
X-RateLimit-Requests-RemainingRequests left in the current second
X-RateLimit-Requests-ResetSeconds 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 ...-Remaining headers and slow down before you hit zero.
  • When you get 429 RATE_LIMITED, wait at least the number of seconds in X-RateLimit-Requests-Reset before 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].