Pagination

Walk any list endpoint with cursor-based pages.

Every list endpoint returns the Stripe list envelope:

1{
2 "object": "list",
3 "url": "/v1/payment_intents",
4 "has_more": true,
5 "data": [ { "id": "pi_...", "object": "payment_intent" } ]
6}
  • data — up to limit objects.
  • has_more — whether more objects exist beyond this page.
  • url — the canonical path of the list.

Cursor parameters

ParameterTypeMeaning
limitinteger, 1–100Page size.
starting_afterobject idReturn objects after this id — the cursor for paging forward.
ending_beforeobject idReturn objects before this id — the cursor for paging backward.

To page forward: request a page, then pass the id of the last object in data as starting_after, and repeat until has_more is false.

$curl -G https://api.fluveo.dev/v1/payment_intents \
> -u sk_test_123: \
> -d limit=100
$
$# next page: cursor = id of the last object in data
$curl -G https://api.fluveo.dev/v1/payment_intents \
> -u sk_test_123: \
> -d limit=100 \
> -d starting_after=pi_3Nk8AzB2xQRH9Jf
$# repeat until has_more is false

Prefer starting_after everywhere. Backward pagination with ending_before is not yet supported on some list endpoints — currently the Refunds and Charges lists — where it returns a 400 invalid_request_error. Forward pagination with starting_after works on every list endpoint.

Cursors are merchant-scoped: an unknown or cross-merchant cursor returns invalid_request_error and never leaks another merchant’s rows.

For a complete worked example — including the SDK auto-paging helpers that manage the cursor for you — see the paginate balance transactions cookbook.