Pagination
Cursors
Lists take ?limit= and ?cursor= and answer with a meta object beside the data:
GET /v1/events?limit=2
{
"events": [
{
"v": 1,
"t": "tweet.create",
"op": "create",
"id": "tweet:2097879002992070835",
"…": "…"
},
{
"v": 1,
"t": "follow.add",
"…": "…"
}
],
"meta": {
"count": 2,
"has_more": true,
"next_cursor": "eyJpZCI6MTAxODMyLCJ0IjoiMjAyNi0wOS0xNlQwODo0MDoxMSswMDowMCJ9"
}
}Pass next_cursor back as ?cursor= for the following page; null means the end. Cursors are opaque and expire with the data they point at. Newest first for events, alphabetical for targets. The follow-list and timeline reads under Reads use X's own cursors the same way, and there count is a hint, not a promise — X decides the page size and routinely ignores small values, so a request for 5 may return 70.