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

# Pagination

> How list endpoints paginate with limit, cursor and next_cursor, and the pagination errors.

Every response with `object: "list"` paginates the same way.

| Name | In | Description |
| :- | :- | :- |
| `limit` | Request | 1 to 100 objects per page, default 30. Higher values are clamped, and an endpoint can state its own bounds |
| `cursor` | Request | The `next_cursor` of the previous response. Omit it on the first page |
| `next_cursor` | Response | Token for the next page. `null` on the last page |

Repeat the request with the same parameters plus `cursor` until `next_cursor` is `null`, and do not stop on a short or empty page. Results are newest first, with no backward paging.

```json List response theme={"system"}
{
  "object": "list",
  "url": "/events",
  "next_cursor": "djF8ZXZ0fGE5ZjN8NjYxNjc3ODdjMTY1MmIzZmJlYmE1ZjAy",
  "data": [
    {
      "id": "evt_66167787c1652b3fbeba5f01",
      "object": "event",
      "type": "device.settings.update",
      "data": {
        "device_id": "dev_63a6087272941ef077a8fd3e"
      },
      "time_created": "2026-07-08T11:25:39Z"
    }
  ]
}
```

A cursor is opaque and does not expire. It is bound to its endpoint and query parameters, except `limit`, and a walk excludes objects created after it started.

## Errors

| Error | Cause |
| :- | :- |
| `400` `cursor_invalid` | The cursor is malformed, from another endpoint, or reused with different parameters. Restart from the first page |
| `400` `pagination_params_invalid` | `limit` is not an integer, or is below 1 |


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