List endpoints use cursor-based pagination. Results are returned in stable order, and you page through them using a cursor rather than an offset.
Response Structure
Every paginated response includes these fields:
{
"object": "list",
"has_more": true,
"next_cursor": "txn_h8i9j0k1l2m3n4",
"data": [...]
}
| Field | Type | Description |
|---|
object | string | Always "list" |
has_more | boolean | true if more results exist beyond this page |
next_cursor | string | The cursor to pass as starting_after for the next page. Only present when has_more is true |
data | array | The array of results |
Parameters
Number of results per page. Minimum 1, maximum 500.
A cursor for pagination. Pass the next_cursor value from the previous response to fetch the next page.
Paginated Endpoints
Example
Fetch the first page of transactions:
curl "https://app.finta.com/api/v1/transactions?limit=100" \
-H "Authorization: Bearer finta_your_key_here"
If has_more is true, use next_cursor to get the next page:
curl "https://app.finta.com/api/v1/transactions?limit=100&starting_after=txn_h8i9j0k1l2m3n4" \
-H "Authorization: Bearer finta_your_key_here"
Fetching All Pages
cursor=""
while true; do
if [ -z "$cursor" ]; then
response=$(curl -s "https://app.finta.com/api/v1/transactions?limit=500" \
-H "Authorization: Bearer finta_your_key_here")
else
response=$(curl -s "https://app.finta.com/api/v1/transactions?limit=500&starting_after=$cursor" \
-H "Authorization: Bearer finta_your_key_here")
fi
# Process the data in this page
echo "$response" | jq '.data'
has_more=$(echo "$response" | jq -r '.has_more')
if [ "$has_more" != "true" ]; then
break
fi
cursor=$(echo "$response" | jq -r '.next_cursor')
done
Use larger limit values (up to 500) to reduce the total number of requests, especially if you are syncing all data.