# Pagination

Cursor pagination on the three listings that can grow without bound.

Three listings can grow without bound and take a cursor: `GET /posts`, `GET /projects/:id/reports/performance` and `GET /projects/:id/radar/inspirations`. Every other listing has a fixed ceiling, by business rule or by plan, and needs no cursor.

The cursor is opaque. Do not read one or build one: pass back in `cursor` exactly what came in the `next` field of the previous response. When `next` comes back `null`, the pages are over.

```bash
curl -H "Authorization: Bearer ptr_live_..." \
  "https://api.posttar.com/v1/posts?limit=2&cursor=eyJjaGF2ZSI6IjIwMjYtMDktMTNUMDU6MTg6MDYuOTE4Njcz..."
```

> A malformed cursor is refused with `invalid_input`. It never silently falls back to page one, which would make a `while (next)` loop spin forever on the same rows.
