Skip to main content
List endpoints β€” GET /v1/payment-intents, GET /v1/reconciliation-cases, GET /v1/api-keys, GET /v1/audit-events, GET /v1/outbound-webhook-events, and similar β€” use offset-based pagination with two query parameters.

Query parameters

limit
integer
Number of items to return. Minimum 1, maximum 100. Default varies by endpoint β€” most list endpoints default to 25; GET /v1/audit-events and GET /v1/api-keys default to 50. Check the endpoint’s reference page for its exact default.
offset
integer
default:"0"
Number of items to skip from the start of the result set. Minimum 0.
curl "http://localhost:3001/v1/payment-intents?limit=25&offset=50" \
  -H "Authorization: Bearer $RECONLAYER_API_KEY"

Response shape

Every paginated list endpoint returns the same envelope:
{
  "items": [ /* page of results */ ],
  "total": 128,
  "limit": 25,
  "offset": 0
}
items
array
required
The page of results. Each item’s shape depends on the endpoint (e.g. a PaymentIntent summary, a ReconciliationCaseSummary, an ApiKeySnapshot).
total
integer
required
Total number of items matching the request’s filters, across all pages β€” not just the current page.
limit
integer
required
Echoes the limit used for this request (after defaulting).
offset
integer
required
Echoes the offset used for this request.

Traversing all pages

Increment offset by limit until offset >= total:
limit=25
offset=0

while true; do
  page=$(curl -s "http://localhost:3001/v1/payment-intents?limit=$limit&offset=$offset" \
    -H "Authorization: Bearer $RECONLAYER_API_KEY")

  echo "$page" | jq '.items[]'

  total=$(echo "$page" | jq '.total')
  offset=$((offset + limit))
  if [ "$offset" -ge "$total" ]; then
    break
  fi
done

Filtering combined with pagination

Most list endpoints accept additional filter query parameters alongside limit and offset β€” for example GET /v1/payment-intents accepts status and externalReference, and GET /v1/reconciliation-cases accepts status, reconciliationStatus, and externalReference. total reflects the count after filters are applied, so traversal logic works the same way whether or not you’re filtering.
curl "http://localhost:3001/v1/reconciliation-cases?reconciliationStatus=unreconciled&limit=25&offset=0" \
  -H "Authorization: Bearer $RECONLAYER_API_KEY"
Sending an out-of-range limit (e.g. above 100) or a negative offset returns 400 invalid_request with an issues array β€” see Errors.

Next steps