Pagination
List endpoints return one page at a time:
{ "data": [ { "id": "ct_01J9Z8X7W6V5T4S3R2Q1P0N9M8" } ], "nextCursor": "eyJQSyI6..." }nextCursor is null on the last page. Cursors are opaque: pass them back exactly as you got them, with the same filters.
Read every page
Section titled “Read every page”Set the page size with limit, from 1 to 500 (default 100):
curl "$BASE/contacts?status=subscribed&limit=2" -H "Authorization: Bearer $KEY"Then ask for the next page with the cursor you got:
curl "$BASE/contacts?status=subscribed&limit=2&cursor=<nextCursor>" -H "Authorization: Bearer $KEY"Repeat until nextCursor is null. A page can hold fewer items than limit even when more pages follow, so stop on null, not on a short page.
Check it worked: the second page holds different contacts from the first.
Endpoints that page
Section titled “Endpoints that page”GET /contactsGET /segmentsGET /templatesGET /templates/{id}/versionsGET /campaignsGET /campaigns/{id}/recipientsGET /importsGET /exportsGET /keys
An invalid cursor gives 422 validation_failed.
To get everything in one file instead, use an export.