Every list endpoint is cursor-paginated. There is no offset paging and no
total count.
Stable under concurrent inserts and efficient on deep pages — the cursor
encodes a compound (sort key, id) position, so seeking is index-backed
rather than counted. Query parameters:
limit — items per page. Default 20, maximum 100.after — opaque cursor token from the previous page's nextCursor. Omit it
for the first page.Response envelope:
{
"success": true,
"data": [...],
"meta": { "limit": 20, "hasMore": true, "nextCursor": "eyJ…" }
}
Pass nextCursor back as the after query parameter to fetch the next page.
When hasMore is false, nextCursor is null and you're done. Cursors
encode ordering internally — treat them as opaque; do not parse or construct
them.
List endpoints take no sort parameters: each returns its rows in one fixed order, which the cursor follows. Each endpoint's filters are listed in the reference.