Skip to main content

API Rate-limit

Rate-limit HTTP headers​

Two windows are enforced on every request — a per-second burst and a daily quota — and both are reported on every response, successful or throttled.

Standard fields​

The API implements the IETF RateLimit header fields. These are the fields to build your client on:

Field nameDescription
RateLimit-PolicyThe quotas the API enforces: q requests per w seconds, for each named window. Constant across responses.
RateLimitWhat is left of each window right now: r requests remaining, t seconds until that window resets.
RateLimit-Policy: "burst";q=10;w=1, "daily";q=50000;w=86400
RateLimit: "burst";r=7;t=1, "daily";r=49873;t=3421

t is a relative number of seconds, not a timestamp, so it requires no clock synchronisation between your client and our servers.

RateLimit-Policy always lists every enforced window. RateLimit only lists the windows that were actually evaluated for that request: when the burst window is exhausted the daily window is not measured, so it is absent.

Legacy fields​

The following headers predate the standard ones and are kept for backward compatibility. They only ever describe one window — the daily one on a success, the exhausted one on a 429:

Header nameDescription
X-Rate-Limit-LimitThe maximum number of requests permitted in that window.
X-Rate-Limit-RemainingThe number of requests remaining in that window. Always 0 on a 429.
X-Rate-Limit-ResetThe time at which that window resets, in UTC epoch seconds. Absent on a 429.

Prefer RateLimit over these: it is unambiguous about which window it describes.

Handling a 429​

Once a window is exhausted the API answers 429 Too Many Requests and adds Retry-After:

Header nameDescription
Retry-AfterHow long to wait before making a follow-up request, as a number of seconds (RFC 9110). Only sent on a 429.

Retry-After takes precedence over anything you compute from RateLimit. A throttled response looks like this:

HTTP/1.1 429 Too Many Requests
Retry-After: 3421
RateLimit-Policy: "burst";q=10;w=1, "daily";q=50000;w=86400
RateLimit: "burst";r=9;t=1, "daily";r=0;t=3421
X-Rate-Limit-Limit: 50000
X-Rate-Limit-Remaining: 0

Rate-limit tresholds​

Request byWindow time
10Requests by second
50 000Requests by day