Skip to main content
Every GET endpoint that returns a collection paginates with opaque cursors. There are no page numbers, no offsets, no totals — cursors are forward-only pointers into the result set.

Parameters

ParameterTypeDefaultMaxDescription
limitinteger20100Items per page.
cursorstringOpaque cursor from a previous response. Omit to start from the beginning.

Response envelope

{
  "data": [
    { "id": "pay_abc123", "status": "completed", "amount": "500.00" },
    { "id": "pay_def456", "status": "processing", "amount": "1200.00" }
  ],
  "has_more": true,
  "next_cursor": "eyJpZCI6InBheV9kZWY0NTYifQ"
}
FieldDescription
dataArray of results for this page.
has_moretrue if more results exist beyond this page.
next_cursorCursor to pass in the next request. Present only when has_more is true.
The last page omits next_cursor and sets has_more to false:
{
  "data": [
    { "id": "pay_xyz789", "status": "completed", "amount": "300.00" }
  ],
  "has_more": false
}

Iterating through pages

# First page
curl "https://api.antonpayments.dev/v1/payouts?limit=100" \
  -H "Authorization: Bearer ak_test_..."

# Subsequent page — pass next_cursor from the prior response as cursor
curl "https://api.antonpayments.dev/v1/payouts?limit=100&cursor=eyJpZCI6InBheV9kZWY0NTYifQ" \
  -H "Authorization: Bearer ak_test_..."

Rules

Set limit=100 to minimize round trips when fetching large result sets.
has_more is the only correct termination signal. Don’t compare len(data) to limit — the last page may be full.
Treat cursor values as opaque strings. Do not parse, modify, or construct them. Always pass the exact next_cursor value returned by the API.
Cursor values remain valid indefinitely. You can store a cursor and resume pagination later — useful for long-running exports.