Errors & limits

Everything you need to handle a failed call.

Error shape

Failures drop data and return meta instead. Check for data and you're covered. Quote the requestId if you report a problem.

{
  "meta": {
    "status": 404,
    "errors": [{ "code": 404, "message": "Post not found.", "reason": "Not Found" }],
    "requestId": "75380ae5-4ce8-4119-8f6e-cc1b9129f24c"
  }
}

Status codes

200
OK
Body is { "data": … }.
404
Not found
Missing, deleted, or not public. Deliberately indistinguishable.
429
Too many requests
Back off and retry.
500
Server error
On us. Safe to retry.

Rate limits

Per IP, per minute.

/public/posts/:id
600 req/min
/public/users/:usernameOrId
300 req/min

Caching

Both endpoints send a public Cache-Control header — 60s for posts, 5m for profiles. Respect it and you'll rarely hit a limit.