Cursor pagination
Used byGET /v1/results, GET /result-webhooks/deliveries, GET /campaigns/{id}/api-logs and
GET /credits/ledger.
The response contains
items and nextCursor. When nextCursor is null there are no more pages.
Treat cursors as opaque strings and don’t build them yourself.
Offset pagination
Used by most other paginated lists, for exampleGET /calls, GET /campaigns/{id}/leads and
GET /speech/calls.
Increase
offset by limit until a page comes back with fewer than limit items. Where the endpoint returns a
total, you can also stop once offset + limit >= total.
Response shapes differ between endpoints. Some return a bare array, some wrap results with a total (for example
{ "items": [...], "total": 120 }), and GET /workflows/{id}/runs returns the total in the X-Total-Count
header. Check the endpoint’s reference page.GET /commerce/orders uses page (1-based) and limit instead of offset.
Unpaginated lists
Lists of configuration objects (agents, campaigns, phone numbers, voices, documents, dictionaries, templates, senders, workflows and similar) return every item in one response. A few endpoints return a fixed number of the most recent items and cannot be paged: for exampleGET /whatsapp/messages (up to 200) and GET /campaigns/{id}/activity (the latest 50 calls).
