Knowing where you stand
Every response on/v1/* carries the standard RateLimit headers, a 304 Not Modified
included, so you can slow down before you are refused rather than after:
remaining is what is left in the current window. reset is the seconds until it refills.
/health and /openapi.json are unmetered and carry none of these headers.
Being refused
Over budget, the API answers429:
reset seconds and retry. A request refused for a bad key costs nothing against the
budget, because the budget is keyed to the key itself.
Staying under it
Caching is worth doing, but it does not stretch this budget. Responses on/v1/* carry an
ETag, and sending If-None-Match gets you a 304 Not Modified for anything you already hold,
saving the bandwidth and the parsing. It does not save a request: a conditional request is
counted before the 304 is produced, so it costs exactly as much of the 300-per-minute budget
as a full 200 would.
To stay under the limit, make fewer requests. Poll less often, or ask for a wider page with a
larger limit instead of paging through many small ones.