reference / Rate Limits

Rate Limits

What the headers say, what 429 means, and the Retry-After dance.

tiers#

A house sliding window, per IP, per minute. The IP reads cf-connecting-ip first (tunnel-authoritative), the last XFF hop as fallback:

  • anonymous — 120/min on every v1 read lane
  • API key — 600/min with a registered bearer

bucket topology#

One shared sliding bucket per IP covers all the v1 read lanes — index, post, search, latest, changelog draw from the same v1:<ip> bucket, so spending it in one lane spends it everywhere. The tier comes from the bearer alone: a malformed or wrong-length Authorization header never errors — it silently rides the anonymous tier. Send nothing rather than something broken.

the site lanes have their own#

  • chat 10/h · session 30/min · OTP 3/10min

what the headers say#

Every v1 response carries x-ratelimit-limit and x-ratelimit-remaining for your tier. Cross the line and:

429
HTTP/1.1 429 Too Many Requests
retry-after: 42
x-ratelimit-limit: 120
x-ratelimit-remaining: 0

{"error":"rate_limited","retryAfter":42}

content-type: application/json — never an HTML error page

the retry-after dance#

Sleep for retry-after seconds, then continue — the window slides, no debt accumulates. Back off on 429 and you will essentially never see a second one.

was this page helpful?
nextErrors & Receipts