Skip to main content
List endpoints return a page of results and an opaque cursor:
Pass it back as cursor for the next page:
next_cursor is null on the last page. That — not an empty data array — is how you know you are done.

Why cursors, not page numbers

Offset paging drifts. If ten contacts are created while you walk page 3 to page 4, offset paging shows you rows twice and skips others. A cursor is anchored to a row, so a page boundary stays put no matter what is written underneath it. It also stays fast. ?page=5000 makes the database count through everything before it; a cursor does not.

Limits

limit accepts 1–100 and defaults to 25. Values outside the range are clamped, not rejected.

Walking every page

Treat the cursor as opaque. It encodes ordering internals and its format is not part of the API contract — do not parse it or construct one yourself.

Exceptions

Two endpoints are page-numbered rather than cursor-paged, because their result sets are small and bounded by how many customers you have: GET /v1/platform/customers and GET /v1/platform/setup-links:
Everything else under /v1 uses cursors.