---
updatedAt: 2026-07-22T02:30:05.000Z
---

Fetch the complete documentation index at: https://docs.luma.com/llms.txt. Use this file to discover all available pages before exploring further.

# Changelog

All notable changes to the Luma Public API.

## July 2026

**Added:** `POST /v1/events/guests/update-tickets` to grant complimentary tickets or invalidate existing tickets without charging or refunding the guest.

**Changed:** Event list entries no longer include `description` and `description_md` — `GET /v1/calendars/events/list`, `GET /v1/organizations/events/list`, and the legacy `GET /v1/calendar/list-events` omit them. Fetch event descriptions with `GET /v1/events/get`.

## June 2026

**Added:** `POST /v1/calendars/contacts/block`, `POST /v1/calendars/contacts/remove`, and `POST /v1/calendars/contacts/restore` to moderate calendar contacts. Block stops someone from following your calendar or joining its events; remove opts them out of invites and newsletters but lets them follow again later; restore returns a blocked or removed contact to active. Each takes a `contact_id` (the `id` from `contacts/list`) or an `email`.

**Added:** New flat-response endpoints that return single-object fields at the top level and list results under `entries` instead of nesting them under a named key. Migrate to these for a cleaner response shape:

* `GET /v1/calendars/get` (replaces `GET /v1/calendar/get`)
* `GET /v1/events/guests/get` (replaces `GET /v1/event/get-guest`)
* `GET /v1/users/get-self` (replaces `GET /v1/user/get-self`)
* `GET /v1/events/ticket-types/list` (replaces `GET /v1/event/ticket-types/list`; entries are now under `entries`)
* `GET /v1/events/ticket-types/get` (replaces `GET /v1/event/ticket-types/get`)
* `POST /v1/events/ticket-types/create` (replaces `POST /v1/event/ticket-types/create`)
* `POST /v1/events/ticket-types/update` (replaces `POST /v1/event/ticket-types/update`)
* `POST /v1/events/coupons/create` (replaces `POST /v1/event/create-coupon`)
* `POST /v1/calendars/coupons/create` (replaces `POST /v1/calendar/coupons/create`)
* `GET /v1/events/get` (replaces `GET /v1/event/get`; hosts are now returned on the event object)
* `GET /v1/events/guests/list` (replaces `GET /v1/event/get-guests`; entries no longer include the deprecated nested `guest` copy)
* `GET /v1/calendars/events/list` (replaces `GET /v1/calendar/list-events`; entries no longer include the deprecated nested `event` copy)
* `POST /v1/events/create` (replaces `POST /v1/event/create`)
* `POST /v1/events/update` (replaces `POST /v1/event/update`)
* `POST /v1/events/cancel/request` and `POST /v1/events/cancel` (replace the `/v1/event/cancel/*` equivalents)
* `GET /v2/webhooks/get`, `POST /v2/webhooks/create`, `POST /v2/webhooks/update` (replace the `/v1/webhooks/*` equivalents)
* `POST /v2/organizations/calendars/create` (replaces `POST /v1/organizations/calendars/create`)
* `GET /v1/events/coupons/list` (replaces `GET /v1/event/coupons`) and `POST /v1/events/coupons/update` (replaces `POST /v1/event/update-coupon`)
* `GET /v1/calendars/coupons/list` (replaces `GET /v1/calendar/coupons`) and `POST /v1/calendars/coupons/update` (replaces `POST /v1/calendar/coupons/update`)
* `POST /v1/events/guests/add` (replaces `POST /v1/event/add-guests`)
* `POST /v1/events/guests/update-status` (replaces `POST /v1/event/update-guest-status`; takes a single `guest_id` — guest ID, ticket key, guest key, or email — instead of the `guest` object)
* `POST /v1/events/guests/send-invites` (replaces `POST /v1/event/send-invites`)
* `POST /v1/events/hosts/add`, `POST /v1/events/hosts/update`, `POST /v1/events/hosts/remove` (replace the `/v1/event/hosts/*` equivalents)
* `POST /v1/events/ticket-types/delete` (replaces `POST /v1/event/ticket-types/delete`)
* `GET /v1/calendars/events/lookup`, `POST /v1/calendars/events/add`, `POST /v1/calendars/events/approve`, and `POST /v1/calendars/events/reject` (replace the `/v1/calendar/{lookup,add,approve,reject}-event` equivalents)
* `/v1/calendars/event-tags/` `create`, `update`, `delete`, `apply`, `unapply`, and `list` (replace the `/v1/calendar/event-tags/*` equivalents; `create` returns `id`, `update`/`delete` take `tag_id`, `apply`/`unapply` take `event_ids`, and list entries drop the deprecated `api_id`)
* `GET /v1/calendars/admins/list` (replaces `GET /v1/calendar/admins/list`; entries drop the deprecated `api_id`)
* `GET /v1/entities/lookup` (replaces `GET /v1/entity/lookup`; the entity drops the deprecated `api_id`)

The new endpoints also drop the deprecated compatibility fields from their responses — `api_id` (use `id`), `user_api_id`, `calendar_api_id`, `zoom_meeting_url`, `geo_latitude`/`geo_longitude`, and the guest-level `event_ticket`, `custom_source`, and `checked_in_at`. Use the current field names instead (e.g. `coordinate`, `event_tickets`, per-ticket `checked_in_at`).

The replaced endpoints keep working and still return their original nested shape (e.g. `{ event, hosts }`, `{ calendar }`, `{ guest }`, `{ ticket_type }`, `{ webhook }`, `{ coupon }`, `{ user }`) including the deprecated fields, but are no longer listed in the docs. New integrations should use the endpoints above.

## May 2026

**Changed:** Renamed calendar people endpoints to contacts: `GET /v1/calendars/contacts/list`, `POST /v1/calendars/contacts/import`, and contact tag endpoints under `/v1/calendars/contact-tags/`.

**Changed:** The new contact routes use cleaned fields like `contacts`, `tags`, `membership_status`, `tag_id`, and `user_ids`; contact tag creation now returns `id`. Old people/person-tag paths still work with their old parameter names for backwards compatibility.

**Changed:** Simplified ticket type schemas for `GET /v1/event/ticket-types/list`, `GET /v1/event/ticket-types/get`, `POST /v1/event/ticket-types/create`, and `POST /v1/event/ticket-types/update`. Ticket type responses now document `id` as the identifier and `type` as `free` or `paid`. Responses still include the deprecated `api_id` field for backwards compatibility, but new integrations should use `id`.

## April 2026

**Changed:** Flattened paginated list entries for `GET /v1/calendar/list-events` and `GET /v1/event/get-guests`. Event and guest fields now appear at the top level of each entry instead of being nested under an `event` / `guest` key. The nested objects are still returned for backwards compatibility but are deprecated — new integrations should read fields directly off the entry.

**Changed:** Standardized identifier naming across all endpoints. Request parameters now use `event_id` instead of `event_api_id` (and similarly for other entities like `event_ticket_type_id`). Response objects now return `id` instead of `api_id`. The old names are still accepted/returned but deprecated.

## March 2026

**Added:** `utm_source` field on the Guest object, replacing `custom_source` (which is now deprecated). Contains the UTM source parameter captured when the guest registered.

**Added:** `GET /v1/calendar/get` endpoint to retrieve info about the calendar associated with your API key.

## February 2026

**Added:** Two-step event cancellation via `POST /v1/event/cancel/request` and `POST /v1/event/cancel`. Returns guest count and whether the event has paid guests before confirming, with optional refunds for paid events.

**Added:** `POST /v1/event/hosts/update` and `POST /v1/event/hosts/remove` endpoints for managing event hosts. The existing add-host endpoint is now also available at `POST /v1/event/hosts/create`.

**Added:** Event tag management endpoints: `POST /v1/calendar/event-tags/create`, `POST /v1/calendar/event-tags/update`, `POST /v1/calendar/event-tags/delete`, `POST /v1/calendar/event-tags/apply`, and `POST /v1/calendar/event-tags/unapply`.

## January 2026

**Added:** `terms` registration question type for events. Supports both markdown content (`content_md`) and link-based terms.

**Added:** `skip_payment` flag on `POST /v1/memberships/members/add` to add members to paid tiers without requiring payment through Luma.

**Added:** `suppress_notifications` parameter on `POST /v1/event/update` to update an event without notifying guests.

## December 2025

**Added:** Webhook management endpoints: `POST /v1/webhooks/create`, `POST /v1/webhooks/update`, and `POST /v1/webhooks/delete`.

**Added:** Membership management endpoints: `GET /v1/memberships/tiers/list`, `POST /v1/memberships/members/add`, and `POST /v1/memberships/members/update-status`.