Skip to main content
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": [...]
}
FieldTypeDescription
objectstringAlways "list"
has_morebooleantrue if more results exist beyond this page
next_cursorstringThe cursor to pass as starting_after for the next page. Only present when has_more is true
dataarrayThe array of results

Parameters

limit
integer
default:"100"
Number of results per page. Minimum 1, maximum 500.
starting_after
string
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.