> ## Documentation Index
> Fetch the complete documentation index at: https://www.finseed.es/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagination

> How cursor-based pagination works across Finseed list endpoints.

List endpoints return one page of results at a time, ordered most recent first. Paging uses an opaque cursor rather than numeric page offsets, so results stay stable even as new records are created while you page.

## Request parameters

* **`limit`**: how many records to return in one page. Between 1 and 100, defaulting to 25.
* **`starting_after`**: a cursor. Pass the id of the last record you have seen to get the records after it. Omit it on the first request.

## Response fields

Every list response wraps its records in the same envelope:

```json theme={null}
{
  "data": [ ... ],
  "has_more": true,
  "next_cursor": "inv_clx123abc456",
  "next_url": "/v1/invoices?limit=25&starting_after=inv_clx123abc456"
}
```

* **`data`**: the records in this page.
* **`has_more`**: whether more records exist beyond this page.
* **`next_cursor`**: the cursor to pass as `starting_after` for the next page, or `null` on the last page.
* **`next_url`**: a ready-to-use relative path for the next page that already carries your current filters and limit, or `null` on the last page.

## Paging through every result

The simplest loop is to follow `next_url`. Request it as-is, and stop when it comes back `null`:

1. Make your first request with any filters you need.
2. If `next_url` is not `null`, request it to get the next page.
3. Repeat until `next_url` is `null`.

Following `next_url` keeps your filters and `limit` consistent across pages, so you never have to rebuild the query yourself.
