pagination block on the response envelope:
pagination_key, and offset pagination with offset.
Cursor pagination (recommended)
Pass thepagination_key from the previous response as a query parameter in your next request. Keep going until has_more is false or pagination_key is null.
Cursor pagination stays fast no matter how deep you go, because the server resumes from the cursor instead of counting past the rows you skipped. Use it for any programmatic consumer: data syncs, backfills, agents, and background jobs.
Offset pagination
Some endpoints (currently the trader trades and PnL endpoints) also accept anoffset query parameter, which skips a fixed number of rows from the start of the result set.
Offset exists for one specific case: server-rendered, deep-linkable pages. An SSR page at ?page=42 can map directly to offset=4100&limit=100 and render that slice on the first request, without first replaying every page to obtain a cursor.
cURL
offset is capped at a few thousand rows (typically in the 3,000 to 5,000 range). To read past that point, or to walk the whole dataset, switch to pagination_key.
Which one to use
Cursor (pagination_key) | Offset (offset) | |
|---|---|---|
| Fetch the entire dataset | Yes | Not recommended |
| Jump to an arbitrary page | No | Yes |
| Best for | Programmatic consumers, syncs, agents | SSR pages with deep-linkable page numbers |
pagination_key. Reach for offset only when you need to render an arbitrary page directly from a URL, and even then prefer the cursor once a user is paging sequentially.
Using the TypeScript SDK? The
paginate helper handles cursor iteration for you.