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

# Pagination & rate limits

> How list endpoints paginate, and how often you can call the API

## Pagination

Every list endpoint (`GET /members`, `GET /events`, etc.) is cursor-paginated — not page-number pagination. A cursor points at a specific row, so "give me everything after this" stays correct even if rows are added or removed between calls, which page numbers can't guarantee.

### Request

| Query param | Default | Notes |
| - | - | - |
| `limit` | 25 | Max 100. Anything higher is silently capped. |
| `cursor` | *(none)* | Omit on the first request. Pass back the `next_cursor` from the previous response to get the next page. |

### Response

```json theme={null}
{
  "data": [ ... ],
  "pagination": {
    "next_cursor": "MTIz",
    "has_more": true
  }
}
```

Keep requesting with the returned `next_cursor` until `has_more` is `false`. A `next_cursor` of `null` means you're on the last page.

<Tip>
  Treat a cursor as opaque — don't try to construct or decode one yourself, and don't assume its format is stable.
</Tip>

## Rate limits

Each API key is limited to **120 requests per minute**. Every response carries headers showing where you stand:

```
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
```

Going over the limit returns `429` with a `Retry-After` header (seconds until the window resets):

```json theme={null}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit of 120 requests/minute exceeded"
  }
}
```


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