Pagination
Get started
Cursors, not page numbers. A list returns data and a next_cursor ; pass the cursor back to continue. A null cursor means you have the last page.
limit 1–100, defaults to 25. A larger page is one request, not one operation — reads are never billed. cursor Opaque. Pass it back verbatim; do not parse it, build one, or store one for later — a cursor is valid for the query that produced it. next_cursor Null on the last page. Stop on null, never on an empty data array.
Walking every page
cURL
curl "$SIDAXIS_BASE/mandates?status=active&limit=50" \ -H "Authorization: Bearer $SIDAXIS_API_KEY" curl "$SIDAXIS_BASE/mandates?status=active&limit=50&cursor=eyJpZCI6Im1uZF85ZjQx" \ -H "Authorization: Bearer $SIDAXIS_API_KEY"
Node
async function* allMandates(params) { let cursor = null; do { const qs = new URLSearchParams({ ...params, limit: 100, ...(cursor && { cursor }) }); const page = await sidaxisGet(`/mandates?${qs}`); yield* page.data; cursor = page.next_cursor; // stop on null, not on an empty page } while (cursor); } for await (const mandate of allMandates({ status: "active" })) { await reconcile(mandate); }
While you are paging, the data moves
Lists are ordered newest first and the cursor is stable, so you will not see the same mandate twice. But a mandate created after you started will not appear, and one that expires mid-walk still reads with the status it had when its page was built. For a state you are about to act on, read the resource: GET /mandates/{id} and the check endpoint are always authoritative.
See also List mandates → Rate limits →