next_cursor and a has_more flag. To read everything, pass next_cursor back as the cursor query param and repeat until has_more is false.
This applies to every list endpoint:
GET /clients, GET /clients/{id}/connections, GET /accounts, GET /accounts/{id}/transactions, GET /accounts/{id}/statements, and GET /webhooks/subscriptions.The response envelope
| Field | Meaning |
|---|---|
data | The items on this page. |
next_cursor | Opaque token. Pass it as cursor to fetch the next page. null (or absent) when has_more is false. |
has_more | true if more items exist beyond this page. |
Request params
| Param | Default | Notes |
|---|---|---|
limit | 100 | Items per page, 1–500. Values above 500 are capped, not rejected. |
cursor | — | The next_cursor from the previous response. Omit for the first page. |
400 invalid_request.
Loop until done
Python
Ordering and stability
Transactions are returned most-recently-recorded first (by internal sequence), which is stable and complete for paging through the whole set. It is not a strict chronological sort — to bound results by transaction date, use thefrom and to query params (they combine with pagination).
The cursor uses keyset (seek) pagination, so it stays correct even as rows are added or removed between pages — you won’t skip or double-count the remaining items.