# Get events

Get all events.

The response includes events in every non-deleted lifecycle state (ACTIVE, INACTIVE, CANCELLED, COMPLETED);
apply state filtering client-side if you only want bookable events.

Results are ordered by session start time. Each event is returned once,
positioned by its earliest session that matches the from/to window.

Endpoint: GET /v1/events
Security: OAuth2

## Query parameters:

  - `cursor` (string)
    Pagination cursor for fetching the next page of results.
Omit or pass an empty string to start from the beginning of the list.

  - `limit` (integer)
    Maximum number of items to return per page.
Defaults to 100, maximum 500.

  - `from` (string)
    Filter events with a session starting on or after this local date-time (inclusive).
ISO 8601 date-time without a timezone offset (e.g. 2025-01-15T09:00:00).

The value is matched against each session's local start_time.
An event is returned when any of its sessions starts within the requested window.
    Example: "2025-01-15T09:00:00"

  - `to` (string)
    Filter events with a session starting before this local date-time (exclusive).
ISO 8601 date-time without a timezone offset (e.g. 2025-01-15T18:00:00).

The value is matched against each session's local start_time.
An event is returned when any of its sessions starts within the requested window.
    Example: "2025-01-15T18:00:00"

  - `experience_id` (string)
    Restrict the result to events of a single experience.
The filter strictly scopes results — no events from other experiences are returned.

## Response 200 fields (application/json):

  - `next` (string)
    Cursor for the next page of results.
An empty string or absent value indicates the end of the list.

  - `items` (array)

  - `items.id` (string, required)
    The unique identifier of the event.

  - `items.state` (string, required)
    The lifecycle state of the event.

- ACTIVE — bookable; the default operational state.
- INACTIVE — not currently bookable. Can transition back to ACTIVE.
- CANCELLED — terminal. The event was cancelled and cannot be made bookable again.
- COMPLETED — terminal. The event's sessions have all elapsed.
- UNKNOWN — defensive default; should not appear on a correctly configured event.
    Enum: "ACTIVE", "INACTIVE", "CANCELLED", "COMPLETED", "UNKNOWN"

  - `items.visibility` (string, required)
    Who can discover the event.

- PUBLIC — discoverable through public listings and search.
- PRIVATE — accessible only via direct link or referral; not publicly discoverable.
- UNKNOWN — defensive default; should not appear on a correctly configured event.
    Enum: "PUBLIC", "PRIVATE", "UNKNOWN"

  - `items.experience_id` (string, required)
    The unique identifier of the experience this event is an instance of.

  - `items.capacity` (object, required)
    The seat capacity of the event.
Capacity is shared across all sessions: a single booking that attends every session counts once against reserved.

  - `items.capacity.total` (integer, required)
    The total number of seats available for the event, across all sessions combined.

  - `items.capacity.reserved` (integer, required)
    The number of seats currently reserved.

  - `items.sessions` (array, required)
    The sessions that make up the event, in chronological order.

An event has between 1 and 50 sessions; multi-session events are booked together as a single reservation that covers every session.

  - `items.sessions.id` (string, required)
    The unique identifier of the session within the event.

  - `items.sessions.start_time` (string, required)
    The session's start time in the location's local time, expressed without a UTC offset (ISO 8601 YYYY-MM-DDTHH:mm:ss).

Times are stored as local time so that scheduled events stay anchored to their wall-clock time across daylight-saving transitions and timezone-database updates.
To compute the absolute instant, combine this value with the session's timezone.
    Example: "2024-01-15T10:00:00"

  - `items.sessions.end_time` (string, required)
    The session's end time in the location's local time, expressed without a UTC offset (ISO 8601 YYYY-MM-DDTHH:mm:ss).

See start_time for the rationale on local-time storage and how to combine it with timezone to derive a UTC instant.
    Example: "2024-01-15T12:00:00"

  - `items.sessions.timezone` (string, required)
    The IANA time zone the session takes place in.
Combine with start_time/end_time to derive UTC instants.
    Example: "Europe/Copenhagen"

  - `items.sessions.location_id` (string, required)
    The unique identifier of the location where the session takes place.

  - `items.sessions.languages` (array, required)
    Lowercase ISO 639-1 codes for the languages spoken during the session.
This is metadata for display and filtering only — it does not gate booking eligibility.
    Example: ["en"]

  - `items.created_at` (string, required)
    The date and time when the event was created.

  - `items.updated_at` (string, required)
    The date and time when the event was last updated.

  - `items.metadata` (object)
    Free-form key-value pairs attached by the integrator.

## Response 400 fields (application/json):

  - `message` (string, required)

  - `code` (string, required)


