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

# Pagination

> Cursor-based pagination contract

List endpoints use cursor-based pagination.

## Contract

* Response includes `next_cursor`
* `next_cursor = null` means no more pages
* Cursor is opaque: treat as a token, do not parse

## Max page size

* `GET /v1/permits/search`: `limit` max is `100` (default `25`)
* `GET /v1/signals/geo/search`: `limit` max is `100` (default `25`)
* `GET /v1/signals/permit/leads`: `limit` max is `100` (default `25`)

## Endpoints with cursor pagination

* `GET /v1/permits/search`
* `GET /v1/signals/geo/search`
* `GET /v1/signals/permit/leads`

For `GET /v1/signals/geo/search`, the cursor order is `score DESC, signal_key ASC, geo_id ASC`.

## Example

First page:

```bash theme={null}
curl -sS -G "$BASE_URL/v1/signals/permit/leads" \
  -H "X-API-Key: $API_KEY" \
  --data-urlencode "geo_id=$GEO_ID" \
  --data-urlencode "limit=25"
```

Next page:

```bash theme={null}
curl -sS -G "$BASE_URL/v1/signals/permit/leads" \
  -H "X-API-Key: $API_KEY" \
  --data-urlencode "geo_id=$GEO_ID" \
  --data-urlencode "limit=25" \
  --data-urlencode "cursor=NEXT_CURSOR"
```
