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/healthandGET /v1/openapi.jsonneed 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:
| Header | Value |
|---|---|
RateLimit-Limit | Number of calls allowed per minute for the key. |
RateLimit-Remaining | Number of calls left in the current minute. |
RateLimit-Reset | Number of seconds until the next minute. |
Retry-After | On 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-Afterbefore sending a refused request again. - Spread your calls over the minute rather than firing them all in a burst.
- On a
503 service_unavailableresponse, wait for the given delay, then increase the wait after each new failure. - Read the limit from the headers or from
GET /v1/merather than hard-coding it: it may be raised.
Other limits
| Limit | Value |
|---|---|
| Active keys per account | 10 |
| Items per list page | from 1 to 100, 25 by default |
| Statistics period | 366 days with a daily step, 10 years with a monthly step, last 30 days by default |
| Request body size, for operations that accept one | 1 MiB, 413 payload_too_large beyond |
| Call history shown in the app | 14 days |
| Idempotency key | 255 characters, kept for 24 hours |
| Webhook endpoints per account | 10, disabled ones included |
| Response expected from an endpoint | 2xx status within 10 seconds |
| Retention of events and deliveries | 30 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

