Skip to main content
List endpoints paginate. Awardee uses two styles depending on the resource: offset for catalog resources, cursor for high-volume streams. Both cap page_size/limit at 100 and default to 25.

Offset pagination

Used by catalog resources like /chatbots, /articles, /products, /objects, /qr-groups. Pages are 1-indexed. Query parameters Response envelope
total is the filtered count, so it changes when you pass query filters. Use Math.ceil(total / page_size) for the page count.
Offset pagination is not stable under concurrent inserts. If new resources are created between page fetches, you may see the same item twice (or skip one) at page boundaries. For high-mutation feeds, prefer cursor pagination — it’s stable.

Cursor pagination

Used by high-volume streams: /conversations, /conversations/{id}/messages, /qr-codes/{id}/scans, /submissions, /articles (when sorted by created_at descending), and similar feeds. Cursors are opaque base64url strings — never parse, predict, or hand-construct one. Query parameters Response envelope
When has_more is false, next_cursor is null and you’re done.

Invalid cursors

Tampered or corrupted cursors return:
Cursors are stable across deploys and signed. If a value that worked yesterday stops working, it was likely truncated in transit. Pass the entire next_cursor string verbatim, including any trailing = characters (URL-encode them — %3D).

Which style does an endpoint use?

The OpenAPI spec is authoritative. As a heuristic: anything that emits webhook events at high volume (conversation.created, qr_code.scanned, page.submission.created, etc.) uses cursor pagination. Everything else uses offset.