Docs / Getting started

Rate limits and errors

Request limits, the 429 response, and the shape of every error.

Limits

WhoRequests per minuteContributions per hour
No key120, per addressnone
User key600200 submissions and photo uploads
Bot or admin key6,000unlimited

Over the limit, the API answers 429 with a Retry-After header in seconds. Wait that long and try again.

Errors

Every error is JSON with a plain-English error:

{ "error": "Item not found" }

Validation errors add details, one entry per problem:

{
  "error": "Invalid request",
  "details": [{ "path": "/payload/data/min_players", "message": "Invalid input: expected number" }]
}
StatusMeaning
400The request is malformed; see details
401The request needs a key: contributing, or a photo without its signed link
403The key may not do this (for example, admin functions)
404Nothing at that id or slug. Merged items redirect to the survivor instead
409A conflict, such as an email that is already taken
413A photo over the size limit
429Rate limited; see Retry-After

Be a good client

  • Cache responses. Items change rarely; updated_at tells you when.
  • Page with limit (up to 200) and offset.
  • Poll GET /v1/events?after=<id> for changes instead of re-reading everything. See History.
  • Send a User-Agent that names your app, so we can reach you if something goes wrong.