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

# Pagination

> Paging through search results and through your ledger and requests.

Lists come one page at a time, with a cursor to the next page. Searches and your account's lists page the same way, with one difference in the name of the page size.

## Search results

People search, company search, a company's people and saved-search runs take a `limit` (how many records the page holds) and answer with `pagination.nextCursor`:

```json theme={null}
{
  "data": [ ... ],
  "pagination": { "nextCursor": "c2Nyb2xsXzI", "total": 1246 },
  "filters": { "job_title_levels": ["director"], "job_title_role": ["operations"] }
}
```

For the next page, send the **same search** with the cursor. A search by `query` is answered with the `filters` it was turned into, so send those `filters` with the cursor rather than the query:

```json theme={null}
{
  "filters": { "job_title_levels": ["director"], "job_title_role": ["operations"] },
  "cursor": "c2Nyb2xsXzI",
  "limit": 25
}
```

* **Only a missing `nextCursor` marks the end.** A page can hold fewer records than `limit`, because a record the data providers repeat is dropped.
* **`total` is an estimate** of everyone matching, on the first page of a people search on people filters only. Keep it from the first page.
* **Each page is charged for its own records**, so a smaller `limit` spends less per call. See [Pricing and billing](https://docs.outbound.dev/billing.md).
* A cursor sent with a different search answers `422` with `search_changed`, and one this API never issued answers `422` with `invalid_cursor`.

## Your ledger and requests

`GET /v1/wallet/transactions` and `GET /v1/requests` take a `pageSize` and a `cursor`, and answer with `pagination.nextCursor`:

```bash theme={null}
curl "https://api.outbound.dev/v1/requests?pageSize=50&cursor=eyJ0IjoiMjAyNi0xMS0xNFQxMDowMjoxMS4wMDBaIn0" \
  -H "Authorization: Bearer $OUTBOUND_API_KEY"
```

Both list newest first. When an answer has no `nextCursor`, that was the last page.

`GET /v1/saved-searches` answers every saved search at once, and `GET /v1/usage` takes a date range instead of pages.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.