Pagination
Every list endpoint paginates via opaque cursors. There is no
offset parameter and no total_count field — both are deliberate
omissions to keep query plans predictable as the dataset grows.
Cursor cursor cursor
The default order is (created_at DESC, id DESC) — newest first,
with id as the deterministic tiebreaker for rows that share a
millisecond. The cursor encodes that pair as base64.
How to page
Read the next_cursor field from a list response; pass it back as
?cursor=<value> on the next call to receive the next page. When
next_cursor is null, you've reached the end. The cursor is
opaque — do not parse, decode, or persist it across major API
versions. It encodes the sort tuple of the last row returned, and
nothing else.
Page size
Every list endpoint accepts ?limit=N where N is between 1 and
100, defaulting to 50. Asking for more than 100 returns a 400
with code: param_invalid_format and param: limit.
Malformed cursors
If cursor is malformed (truncated, base64-invalid, or carrying a
sort tuple incompatible with the endpoint), the API returns a 400
with code: invalid_cursor. The safe recovery is to retry without
the cursor, which restarts pagination from the first page.
See also: Errors for the full envelope shape on a bad cursor.