Pagination
Most list endpoints support pagination to efficiently retrieve large datasets. The API uses two pagination strategies depending on the endpoint.
Offset-Based Pagination
Used by endpoints like GET /v1/numbers, GET /v1/conversations, and GET /v1/agents.
Response format
hasMore—trueif more results are available beyond the current page.total— Total number of items (may be cached and may not be present on every endpoint). UsehasMorefor traversal.
Not every endpoint uses this envelope: master webhook deliveries return {items, total, offset, limit}, and per-agent delivery history returns an array. Consult the endpoint reference before writing a shared pagination helper.
Cursor-Based Pagination
Used by message endpoints like GET /v1/numbers/:id/messages. Cursors are ISO 8601 timestamps, not message IDs. Results are newest first. Supply before to page backward or after to fetch newer messages; do not supply both. The comparisons are strict. A timestamp is not a unique message cursor, so this interface cannot guarantee a lossless export when a page boundary splits messages sharing the exact same timestamp.
Always check hasMore before fetching the next page. Use cursor-based pagination (before/after) for time-ordered data — it is more efficient than offset-based pagination for large datasets.

