All list endpoints in the Infinia API use cursor-based pagination. This ensures consistent performance and reliable results regardless of how much data your account accumulates over time.
How it works
Instead of navigating by page number, you receive a next_cursor value in each response. Pass it back in your next request to get the following page of results. When next_cursor is null, you've reached the end.
Request parameters
| Parameter | Type | Default | Max | Description |
|---|---|---|---|---|
limit | integer | 50 | 100 | Number of records to return |
cursor | string | — | — | Cursor from the previous response's next_cursor |
Response fields
| Field | Type | Description |
|---|---|---|
data | array | The list of records for this page |
next_cursor | string | null | Pass this as cursor in your next request. null means there are no more pages |
has_more | boolean | true if there are additional pages available, false if this is the last page |
Example
First request — no cursor needed
curl --request GET \
--url "https://app2test.infiniaweb.com/infinia_api/v1/payments/?limit=50" \
--header "Authorization: Basic $(echo -n 'your_secret_id:your_secret_password' | base64)"Response
{
"data": [...],
"next_cursor": "eyJpZCI6IDEyMzR9",
"has_more": true
}Next page — pass the cursor
curl --request GET \
--url "https://app2test.infiniaweb.com/infinia_api/v1/payments/?limit=50&cursor=eyJpZCI6IDEyMzR9" \
--header "Authorization: Basic $(echo -n 'your_secret_id:your_secret_password' | base64)"When has_more is false and next_cursor is null, you've fetched all available records.
Keeping filters consistent
The cursor encodes the position within a specific result set. You must pass the same filters on every request throughout a pagination session — changing any filter parameter mid-session will cause the cursor to be rejected or return unexpected results.
# First request
GET /payments/?limit=50&status=COMPLETED&date_from=2025-01-01T00:00:00
# Correct — same filters, adding the cursor
GET /payments/?limit=50&status=COMPLETED&date_from=2025-01-01T00:00:00&cursor=eyJpZCI6IDEyMzR9
# Wrong — filter changed mid-session
GET /payments/?limit=50&status=AWAITING&date_from=2025-01-01T00:00:00&cursor=eyJpZCI6IDEyMzR9If you need to apply different filters, start a new pagination session from the beginning without a cursor.
Migrating from page_number / page_size
If you are currently using page_number and page_size, these parameters will be disabled on July 1st. Both will continue to work until that date, but we encourage migrating as soon as possible.
| Old parameter | Replacement |
|---|---|
page_size | limit |
page_number | cursor |
The main difference is that instead of calculating which page to jump to, you follow the next_cursor from one response to the next.

