Limits

The rate allowed per key, the headers that announce it, what to do when you exceed it and the API's other limits.

API documentationGuides · Limits

Rate per key

Each key gets 120 calls per minute. The window is the calendar minute, in UTC: the counter starts again from zero at the beginning of each minute.

  • Every call with a key counts as one call, including those that return an empty page. Two exceptions: asking the AI for a draft, POST /v1/reviews/{reviewId}/reply-drafts, counts as 5, and sending a test event, POST /v1/webhook-endpoints/{endpointId}/test, as 10.
  • GET /v1/health and GET /v1/openapi.json need no key and do not count.
  • A key that exceeds its limit does not penalize the account's other keys. Give each integration its own key.

Beyond the limit, the API answers 429 rate_limited, with no effect on your data.

Rate headers

Responses to admitted calls and 429 responses carry the state of the current minute:

HeaderValue
RateLimit-LimitNumber of calls allowed per minute for the key.
RateLimit-RemainingNumber of calls left in the current minute.
RateLimit-ResetNumber of seconds until the next minute.
Retry-AfterOn a 429 or 503 response: number of seconds to wait before sending the request again.
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json; charset=utf-8
RateLimit-Limit: 120
RateLimit-Remaining: 0
RateLimit-Reset: 17
Retry-After: 17
X-Request-Id: req_Qm9uam91ciBNYSBCZWxsZQ

These headers may be missing, for instance on an authentication error: do not assume they are always there. GET /v1/me also returns the key's limit in rateLimit (limit calls per window of windowSeconds seconds).

Good practices

  • Honor Retry-After before sending a refused request again.
  • Spread your calls over the minute rather than firing them all in a burst.
  • On a 503 service_unavailable response, wait for the given delay, then increase the wait after each new failure.
  • Read the limit from the headers or from GET /v1/me rather than hard-coding it: it may be raised.

Other limits

LimitValue
Active keys per account10
Items per list pagefrom 1 to 100, 25 by default
Statistics period366 days with a daily step, 10 years with a monthly step, last 30 days by default
Request body size, for operations that accept one1 MiB, 413 payload_too_large beyond
Call history shown in the app14 days
Idempotency key255 characters, kept for 24 hours
Webhook endpoints per account10, disabled ones included
Response expected from an endpoint2xx status within 10 seconds
Retention of events and deliveries30 days

Two operations also have their own limit: promo code redemption limits attempts per key, against guessing codes, and publishing on Google limits the writes of each location. Beyond it, they also answer 429 rate_limited, with Retry-After.

These values may be raised without notice: raising a limit is never a breaking change.

Updated on October 25, 2026