Skip to main content
The API uses two pagination styles. Each endpoint commits to one — the choice reflects the underlying query, not a preference. Don’t try to pass both. Every list response uses the field name items for the array.

Page-based

Used for stable, count-bounded lists where you want to jump to a page or show a total count.
Response:
Endpoints that use this:
  • GET /merchant/users
  • GET /market/search
  • GET /market/prices — also accepts limit=-1 to return the whole catalog in one response
  • GET /market/items/{itemId}/listings

Cursor-based

Used for trade and ledger lists where rows arrive over time and you want to walk backwards from “now” without total counts.
Response:
Send nextCursor from the previous response as cursor to fetch the next page. Stop when it comes back null.
Endpoints that use this:
  • GET /merchant/trades, GET /merchant/users/{id}/trades
  • GET /merchant/ledger, GET /merchant/users/{id}/ledger
  • GET /user/wallet/ledger
  • GET /market/transactions

Why two styles

Trade lists grow continuously; using a page index would mean a new trade arriving between requests pushes everything down by one. The cursor is a trade ID — it doesn’t drift.

Limits

All pagination endpoints accept limit between 1 and 100. The default is 25 unless documented otherwise. Send a sane upper bound; don’t paginate the whole list in one request unless the dataset is small.