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

# List events

> List events on your Luma calendar with luma.events.list(), returning a paginated response of event entries with optional filters and pagination.

<Badge color="purple">SDK</Badge> `luma.events.list(params?: EventListParams): Promise<ListResponse<EventListEntry>>`

Returns a paginated list of events on your calendar.

<RequestExample>
  ```typescript Example theme={null}
  import { Luma } from "@alhwyn/luma";

  const luma = new Luma(process.env.LUMA_API_KEY!);
  const { data, hasMore, nextCursor } = await luma.events.list({
    pagination_limit: 20,
  });

  for (const event of data) {
    console.log(event.name);
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": [
      {
        "api_id": "evt-abc123",
        "name": "SDK test event",
        "start_at": "2026-07-01T18:00:00.000Z",
        "end_at": "2026-07-01T20:00:00.000Z",
        "timezone": "America/Los_Angeles"
      }
    ],
    "hasMore": true,
    "nextCursor": "cursor_xyz789"
  }
  ```
</ResponseExample>

### Parameters

<ParamField path="params" type="EventListParams">
  Optional pagination and filter options. See the [official Luma API docs](https://docs.luma.com) for available fields.
</ParamField>

See [Client — List responses](/client#list-responses) for the shared pagination shape.

### Pagination

List methods are cursor-based. Read one page, then pass `nextCursor` as `pagination_cursor` to fetch the next page.

**First page:**

```typescript theme={null}
const page = await luma.events.list({ pagination_limit: 50 });

for (const event of page.data) {
  console.log(event.name);
}
```

**Next page** (when `page.hasMore` is true and `page.nextCursor` is set):

```typescript theme={null}
const nextPage = await luma.events.list({
  pagination_limit: 50,
  pagination_cursor: page.nextCursor!,
});

for (const event of nextPage.data) {
  console.log(event.name);
}
```

Repeat with each page's `nextCursor` until `hasMore` is false. The same pattern applies to `events.guests.list`, `events.ticketTypes.list`, and `webhooks.list`.

### Test it

```typescript theme={null}
import { Luma } from "@alhwyn/luma";

const luma = new Luma(process.env.LUMA_API_KEY!);
const { data } = await luma.events.list({ pagination_limit: 5 });
console.log(data.map((e) => e.name ?? e.api_id));
```
