Pagination
GET /api/v1/feed is cursor-paginated.
The rules
- Omit
cursoron your first request. - Read
nextCursorandhasMorefrom the response. - If
hasMoreistrue, request again withcursor=<nextCursor>. - Stop when
hasMoreisfalse.
Cursors are opaque
A cursor is an opaque string. Never construct one yourself, never parse one, never assume
anything about its internal format. Only ever pass back a value the API itself gave you (either
an item's own cursor field, or the page's nextCursor). The internal representation may change
between API versions without notice — code that only ever round-trips a cursor value is
unaffected by that.
Page size
| Value | |
|---|---|
Default (limit omitted) |
50 |
| Maximum | 200 |
A limit above the maximum, or a malformed value, is rejected with 400 MALFORMED_REQUEST —
it is never silently clamped.
No page number
There is no "page 3" concept — only "the next page after this cursor." This is what makes pagination safe against concurrent inserts/updates elsewhere in the feed: you never skip or duplicate an item because something changed between two of your requests.