# Lists

```json title="Response"
{
  "object": "list",
  "data": [{ "object": "case", "id": "cse_..." }],
  "hasMore": true,
  "nextCursor": "eyJ..."
}
```


Pass `nextCursor` as `cursor` to get the next page. `limit` goes from 1 to 100 and defaults to 20. Lists are newest first unless the route says otherwise. The stages of a pipeline come in funnel order, from `position` 0 up.

A cursor only works with the filters it came from. A cursor with other filters, or one that is malformed, answers `400 invalid_cursor`. Treat cursors as opaque.

The SDK pages for you:

```ts title="Node.js"
for await (const kase of lelemon.cases.list({ query: { status: 'open' } })) {
  console.log(kase.id);
}

const firstHundred = await lelemon.cases.list({ query: { status: 'open' } }).toArray({ max: 100 });
```


The fixed catalogs paginate like any other list, with the same `limit` (20 by default, 100 at most) and `cursor`: `GET /v2/scopes`, `GET /v2/event-types` and `GET /v2/models`. The first page does not hold all of them. Follow `nextCursor` until `hasMore` is `false` before you decide that a scope, an event type or a model does not exist.
