The Luma connector lets your AI agent act in each user's Luma account. Each user connects their own Luma API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 74 tools.
- Tools
- 74
- What they doRead · write · destructive
- 26 · 41 · 726 read41 write7 destructive
- Users sign in with
- API key
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Luma connection
In AgentKit > Connections, create a Luma connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'luma'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Luma:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'luma_calendar_admins_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "luma"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Luma:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="luma_calendar_admins_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Luma credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolluma_calendar_admins_listList all admins for the calendar your API key is scoped to.Read-onlyList Calendar Admins
List all admins for the calendar your API key is scoped to. Returns an array of admin user entries (each with their id, name, email, and avatar) and a has_more flag. Use this to see who has admin access to manage the calendar.
Inputs
This tool takes no inputs.
luma_calendar_coupons_listList all coupons that have been created for your Luma calendar, applicable across its events.Read-onlyList Calendar Coupons
List all coupons that have been created for your Luma calendar, applicable across its events. Returns each coupon's code, discount configuration, and usage details, plus a next_cursor for pagination. Use this for calendar-wide coupons. Use luma_event_coupons_list instead for coupons scoped to a single event.
Inputs
pagination_cursorstring- Cursor for the next page of results, taken from a previous response's next_cursor field. Omit to fetch the first page.
pagination_limitnumber- Maximum number of coupons to return in this page. The server enforces its own upper bound regardless of the value passed.
luma_calendar_event_lookupCheck whether an event already exists on your Luma calendar, looking it up by its event ID or its public event URL.Read-onlyLookup Event
Check whether an event already exists on your Luma calendar, looking it up by its event ID or its public event URL. Returns the event's id, calendar submission status (approved, pending, or rejected), and who submitted it, or null if no matching event is found. Use this before submitting an event to a calendar, to avoid creating a duplicate entry. Use luma_event_get instead when you already have a confirmed event_id and want its full details, or luma_calendar_events_list to browse everything on a calendar.
Inputs
event_api_idstring- Deprecated — use event_id instead. Retained only for backward compatibility with older integrations that still send this field.
event_idstring- The Luma event ID to look up, formatted as evt- followed by an alphanumeric string. Provide this or url (or the deprecated event_api_id) to identify the event.
platformstring- Which platform to search: pass "luma" to look up a native Luma event, or "external" for an event hosted elsewhere and merely listed on this calendar. Omit to search across both.one of
externalluma urlstring- Public event page URL to look up, e.g. https://lu.ma/abc1234. Provide this or event_id (or the deprecated event_api_id) to identify the event.
luma_calendar_events_listList events managed by the Luma calendar your API key is scoped to, with date range, sort, and platform filters.Read-onlyList Events
List events managed by the Luma calendar your API key is scoped to, with date range, sort, and platform filters. Returns an array of event summaries (each with an access field) and a pagination cursor for the next page. Use this to browse a calendar's events. Use luma_event_guests_list or luma_event_guest_get for a specific event's guests, or luma_entity_lookup to resolve an event from a URL or slug instead.
Inputs
accessarray- Which access levels to include: manage (events the calendar manages) and/or view (events listed on the calendar but managed elsewhere). Defaults to manage only. Events returned with access=view have their location obfuscated to city level and omit host-only fields like meeting_url, registration_questions, and feedback_email. Private events the calendar doesn't manage are never returned.
afterstring- Only return events starting after this ISO 8601 datetime. Example: 2022-10-19T03:27:13.673Z.
beforestring- Only return events starting before this ISO 8601 datetime. Example: 2022-10-19T03:27:13.673Z.
pagination_cursorstring- Pagination cursor from the next_cursor field of a previous response, used to fetch the next page of events.
pagination_limitnumber- Number of events to return in this page. The server enforces a maximum; omit to use the server default.
platformsarray- Which event platforms to include: luma (events hosted on Luma) and/or external (events imported from elsewhere). Defaults to luma only for backwards compatibility.
sort_columnstring- Column to sort results by. Only start_at is currently supported.one of
start_at sort_directionstring- Sort direction for the sort_column value: asc, desc, asc nulls last, or desc nulls last.one of
ascdescasc nulls lastdesc nulls last statusstring- Filter by the event's calendar submission status: approved or pending. Defaults to approved.one of
approvedpendingdefaultapproved
luma_calendar_getGet the Luma calendar that your API key is scoped to.Read-onlyGet Calendar
Get the Luma calendar that your API key is scoped to. Returns the calendar's details (such as its id, name, and description). Use this to confirm which calendar your API key manages before calling other calendar, event, or tag tools.
Inputs
This tool takes no inputs.
luma_contacts_listList the contacts stored on your Luma calendar, with optional text search, tag, and membership filters.Read-onlyList Contacts
List the contacts stored on your Luma calendar, with optional text search, tag, and membership filters. Returns each contact's profile fields alongside engagement stats such as event check-in and approval counts, plus a next_cursor for pagination. Use this to browse or search your calendar's contact list. Use luma_event_guests_list instead for the guest list of one specific event, or luma_contact_tags_list to see the tags available to filter by.
Inputs
calendar_membership_tier_idstring- Restrict results to contacts who are members of this specific Calendar Membership tier. Get tier IDs from luma_membership_tiers_list.
membership_statusstring- Filter by the contact's Calendar Membership approval status. Only meaningful for calendars that use Luma Memberships; has no effect otherwise.one of
approvedpendingapproved-pending-paymentdeclined pagination_cursorstring- Cursor for the next page of results, taken from a previous response's next_cursor field. Omit to fetch the first page.
pagination_limitnumber- Maximum number of contacts to return in this page. The server enforces its own upper bound regardless of the value passed.
querystring- Free-text search over contact names and email addresses.
sort_columnstring- Column to sort results by.one of
created_atevent_checked_in_countevent_approved_countnamerevenue_usd_cents sort_directionstring- Sort order to apply to sort_column.one of
ascdescasc nulls lastdesc nulls last tagsarray- Tag names or tag IDs to filter contacts by. A contact matching ANY of the given tags is returned. Example: ["vip", "sponsor"].
luma_entity_lookupLook up a Luma event or calendar by its slug, full Luma URL, or public path such as event/evt-..., e/evt-..., or calendar/cal-....Read-onlyLookup Entity
Look up a Luma event or calendar by its slug, full Luma URL, or public path such as event/evt-..., e/evt-..., or calendar/cal-.... Returns an entity object whose type field is calendar or event, containing that resource's id, name, slug, and (for events) its start/end times, or null if nothing matches. Use this to resolve a link or slug you have into an ID before calling luma_event_get or luma_calendar_get. Any URL query parameters or fragments in the input are ignored.
Inputs
slugstringrequired- The slug, full Luma URL, or public path of the event or calendar to look up, e.g. https://lu.ma/my-event or event/evt-abc123XYZ. Any query parameters or URL fragments are ignored.
luma_event_blast_getGet full details for a single email blast by its ID.Read-onlyGet Blast
Get full details for a single email blast by its ID. Returns the blast's subject, body, audience, status, and — for sent blasts — recipient_count and email_open_count. Use this when you already have a blast ID. Use luma_event_blasts_list instead to browse all blasts sent on an event.
Inputs
blast_idstringrequired- The unique ID of the blast to retrieve, formatted as ep- followed by an alphanumeric string.
luma_event_blasts_listList the email blasts sent or scheduled to an event's guests, newest first.Read-onlyList Blasts
List the email blasts sent or scheduled to an event's guests, newest first. Returns each blast's subject, audience, and status; sent blasts also include recipient_count and email_open_count. Use this to review an event's communication history. Use luma_event_blast_get instead when you already have a single blast's ID.
Inputs
event_idstringrequired- The unique ID of the Luma event to list blasts for, formatted as evt- followed by an alphanumeric string.
luma_event_coupons_listList all coupons that have been created for a specific Luma event.Read-onlyList Event Coupons
List all coupons that have been created for a specific Luma event. Returns each coupon's code, discount configuration, and usage details, plus a next_cursor for pagination. Use this for coupons scoped to one event. Use luma_calendar_coupons_list instead for coupons that apply calendar-wide across all events.
Inputs
event_idstringrequired- The unique ID of the Luma event to list coupons for, formatted as evt- followed by an alphanumeric string.
pagination_cursorstring- Cursor for the next page of results, taken from a previous response's next_cursor field. Omit to fetch the first page.
pagination_limitnumber- Maximum number of coupons to return in this page. The server enforces its own upper bound regardless of the value passed.
luma_event_getGet full details for a single Luma event by its event ID.Read-onlyGet Event
Get full details for a single Luma event by its event ID. Returns the event's complete details, host contact info, and a guest-count breakdown by status when you manage the event; otherwise returns only the fields a public event page shows. Use this when you already have the event ID. Use luma_calendar_events_list to browse a calendar's events, or luma_calendar_event_lookup to find an event by URL or slug instead.
Inputs
event_idstringrequired- The unique ID of the Luma event to retrieve, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this value from a calendar events list or event lookup response, or from the event's Luma dashboard URL.
luma_event_guest_getGet full details for a single guest of a Luma event, looked up by guest ID, ticket key, guest key, or email.Read-onlyGet Guest
Get full details for a single guest of a Luma event, looked up by guest ID, ticket key, guest key, or email. Returns the guest's registration and ticket info, including event_ticket_orders (with coupon_info when a coupon was applied). Use this when you already have a guest identifier for a specific event. Use luma_event_guests_list to browse or filter all of an event's guests instead.
Inputs
event_idstringrequired- The unique ID of the Luma event the guest belongs to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this value from a calendar events list or event lookup response.
idstringrequired- Identifier for the guest to look up. Accepts a guest ID (starting with gst-), a ticket key, a guest key (starting with g-), or the guest's email address.
luma_event_guests_listList guests who have registered for or been invited to a Luma event, with approval-status filtering, sorting, and pagination.Read-onlyList Guests
List guests who have registered for or been invited to a Luma event, with approval-status filtering, sorting, and pagination. Returns an array of guest summaries and their event_tickets (not order-level detail like event_ticket_orders), plus a pagination cursor for the next page. Use this to browse or filter an event's guest list. Use luma_event_guest_get when you need one guest's full ticket order data, including coupon info.
Inputs
event_idstringrequired- The unique ID of the Luma event to list guests for, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this value from a calendar events list or event lookup response.
approval_statusstring- Filter guests by their registration approval status: approved, session, pending_approval, invited, declined, or waitlist.one of
approvedsessionpending_approvalinviteddeclinedwaitlist pagination_cursorstring- Pagination cursor from the next_cursor field of a previous response, used to fetch the next page of guests.
pagination_limitnumber- Number of guests to return in this page. The server enforces a maximum; omit to use the server default.
sort_columnstring- Column to sort results by: name, email, created_at, registered_at, or checked_in_at.one of
nameemailcreated_atregistered_atchecked_in_at sort_directionstring- Sort direction for the sort_column value: asc, desc, asc nulls last, or desc nulls last.one of
ascdescasc nulls lastdesc nulls last
luma_event_ticket_type_getGet full details for a single Luma event ticket type by its ID.Read-onlyGet Ticket Type
Get full details for a single Luma event ticket type by its ID. Returns the ticket type's name, price, capacity, and visibility settings. Use this when you already have a ticket type ID. Use luma_event_ticket_types_list instead to browse every ticket type on an event.
Inputs
event_ticket_type_idstringrequired- The unique ID of the ticket type to retrieve, formatted as ttype- followed by an alphanumeric string.
luma_event_ticket_types_listList all ticket types configured for a Luma event.Read-onlyList Ticket Types
List all ticket types configured for a Luma event. Returns each ticket type's name, price, capacity, and visibility settings. Use this to see every ticket type on an event. Use luma_event_ticket_type_get instead when you already have a single ticket type's ID.
Inputs
event_idstringrequired- The unique ID of the Luma event to list ticket types for, formatted as evt- followed by an alphanumeric string.
include_hiddenstring- Whether to include ticket types that are hidden from the public event page. Pass "true" to include them; omit or pass "false" to only return visible ticket types.
luma_images_searchSearch Luma's gallery of stock event cover images by keyword.Read-onlySearch Cover Images
Search Luma's gallery of stock event cover images by keyword. Returns matching image entries with their image_url, plus a next_cursor for paging through more results. Use this to find a ready-made cover image before creating or updating an event — pass the chosen image_url as the event's cover_url; gallery images don't need to be uploaded first.
Inputs
querystringrequired- Keywords to match against the gallery's image descriptions and tags. Must be a non-empty string, e.g. "dinner party" or "tech conference".
pagination_cursorstring- Cursor for the next page of results, taken from a previous response's next_cursor field. Omit to fetch the first page.
pagination_limitnumber- Maximum number of images to return in this page. The server enforces its own upper bound regardless of the value passed.
luma_membership_tiers_listList the membership tiers configured on your Luma calendar, including hidden ones.Read-onlyList Membership Tiers
List the membership tiers configured on your Luma calendar, including hidden ones. Returns each tier's name, price, and visibility (is_hidden), plus a next_cursor for pagination. Use this to see all available membership tiers, for example before adding a contact to one.
Inputs
pagination_cursorstring- Cursor for the next page of results, taken from a previous response's next_cursor field. Omit to fetch the first page.
pagination_limitnumber- Maximum number of membership tiers to return in this page. The server enforces its own upper bound regardless of the value passed.
luma_organization_admins_listList all admins for the Luma organization that owns the connected calendar.Read-onlyList Organization Admins
List all admins for the Luma organization that owns the connected calendar. Returns each admin's id, name, email, and avatar URL. Use this to see who has admin access across the organization's calendars. Use luma_organization_calendars_list or luma_organization_events_list to browse the organization's calendars or events instead.
Inputs
This tool takes no inputs.
luma_organization_calendars_listList all calendars belonging to the Luma organization that owns the connected calendar.Read-onlyList Organization Calendars
List all calendars belonging to the Luma organization that owns the connected calendar. Returns each calendar's id, name, slug, launch status, and appearance settings, paginated with a cursor. Use this to browse every calendar the organization manages. Use luma_organization_events_list to browse events across those calendars, or luma_organization_admins_list to see organization admins.
Inputs
pagination_cursorstring- Cursor for the next page of results, taken from the `next_cursor` value returned by a previous call to this tool. Leave empty to fetch the first page.
pagination_limitnumber- Maximum number of calendars to return in this page. The server enforces a maximum limit and may return fewer than requested.
luma_organization_events_listList all events across every calendar belonging to the Luma organization that owns the connected calendar.Read-onlyList Organization Events
List all events across every calendar belonging to the Luma organization that owns the connected calendar. Events appearing on multiple calendars within the organization are deduplicated. Returns each event's id, calendar id, start/end time, and other event details, paginated with a cursor. Use this to browse events organization-wide. Use luma_event_get for full details on one event once you have its id, or luma_organization_calendars_list to browse calendars instead of events.
Inputs
afterstring- Only include events starting after this ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z.
beforestring- Only include events starting before this ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z.
pagination_cursorstring- Cursor for the next page of results, taken from the `next_cursor` value returned by a previous call to this tool. Leave empty to fetch the first page.
pagination_limitnumber- Maximum number of events to return in this page. The server enforces a maximum limit and may return fewer than requested.
sort_directionstring- Sort order for results by start time: `asc` or `desc`, or `asc nulls last` / `desc nulls last` to push events without a start time to the end.one of
ascdescasc nulls lastdesc nulls last
luma_places_searchSearch Google Maps (via Luma) for a place matching an address or venue name.Read-onlySearch Places
Search Google Maps (via Luma) for a place matching an address or venue name. Returns up to 5 place candidates, each with a place_id and address details. Use this to find a place_id, then pass it as geo_address_json: {type: "google", place_id} when creating or updating a Luma event.
Inputs
querystringrequired- Address or place name to search for, e.g. "120 W 41st St, New York".
luma_user_get_selfGet the Luma user account associated with your API key.Read-onlyGet Self
Get the Luma user account associated with your API key. Returns the authenticated user's profile details, such as their id, name, email, and avatar. Use this to confirm which Luma account your API key belongs to.
Inputs
This tool takes no inputs.
luma_webhook_getGet full details about a single webhook endpoint on the connected Luma calendar by its id.Read-onlyGet Webhook
Get full details about a single webhook endpoint on the connected Luma calendar by its id. Returns the webhook's target URL, subscribed event types, status, signing secret, and creation time. Use this when you already have the webhook id. Use luma_webhooks_list to browse all webhooks and find the id first.
Inputs
idstringrequired- The unique ID of the webhook to retrieve. Get this value from a previous webhooks list response.
luma_webhooks_listList all webhook endpoints configured on the connected Luma calendar.Read-onlyList Webhooks
List all webhook endpoints configured on the connected Luma calendar. Returns each webhook's id, target URL, subscribed event types, and status, paginated with a cursor. Use this to browse existing webhooks or find a webhook's id. Use luma_webhook_get when you already have the webhook id and want its full details, including its signing secret.
Inputs
pagination_cursorstring- Cursor for the next page of results, taken from the `next_cursor` value returned by a previous call to this tool. Leave empty to fetch the first page.
pagination_limitnumber- Maximum number of webhooks to return in this page. The server enforces a maximum limit and may return fewer than requested.
luma_calendar_admin_addAdd one or more admins to a Luma calendar by email.WriteAdd Calendar Admins
Add one or more admins to a Luma calendar by email. Returns the calendar's full list of admins after the addition. Use this to grant people admin access to manage a calendar's events and settings; emails already in the admin list are skipped automatically. Use luma_calendar_admins_list to see current admins first.
- Idempotent
Inputs
emailsarrayrequired- Email addresses of the people to make calendar admins, 1 to 20 at a time. Anyone without a Luma account gets one automatically, and new admins are emailed a notification. On a Luma Plus calendar, an addition that would need an extra paid admin seat is rejected — add that admin from the Luma app instead, where the seat charge can be confirmed.
luma_calendar_coupon_createCreate a coupon that guests can apply to any event managed by a Luma calendar.WriteCreate Calendar Coupon
Create a coupon that guests can apply to any event managed by a Luma calendar. Returns nothing on success — list the calendar's coupons afterward with luma_calendar_coupons_list to confirm. Use this for a coupon valid across every event on the calendar; use luma_event_coupon_create instead to restrict a coupon, or create an unlock code, for just one event. Coupon terms can't be edited after creation — use luma_calendar_coupon_update only to change remaining uses or the validity window. Avoid reusing a code that's already active on one of the calendar's individual events.
Inputs
codestringrequired- The code guests enter on any of the calendar's event pages to apply this coupon. Not case sensitive. Maximum 20 characters.
discount_typestringrequired- Which kind of discount this coupon applies: percent for a percentage off, or amount for a fixed amount off. Determines whether percent_off or cents_off/currency is used.one of
percentamount cents_offnumber- Fixed amount off, in the smallest unit of currency (e.g. cents for usd). Required when discount_type is amount, and must be paired with currency.
currencystring- Currency the amount off (cents_off) is denominated in. Required when discount_type is amount.one of
solana_solsolana_usdcaedafnallamdangaoaarsaudawgaznbambbdbdtbgnbhdbifbmdbndbobbrlbsdbwpbynbzdcadcdfchfclpcnycopcrccveczkdjfdkkdopdzdegpetbeurfjdfkpgbpgelghsgipgmdgnfgtqgydhkdhnlhtghufidrilsinriskjmdjodjpykeskgskhrkmfkrwkwdkydkztlaklbplkrlrdlslmadmdlmgamkdmmkmntmopmurmvrmwkmxnmyrmznnadngnnionoknprnzdomrpabpenpgkphppkrplnpygqarronrsdrubrwfsarsbdscrseksgdshpslesossrdstdszlthbtjstndtoptryttdtwdtzsuahugxusduyuuzsvndvuvwstxafxcdxofxpfyerzarzmw percent_offnumber- Percentage discount, from 0 to 100. Required when discount_type is percent; ignored otherwise. Use 0 together with event_ticket_type_id to create an unlock code that doesn't change the price.
remaining_countinteger- How many times the coupon can be redeemed in total. Set to 1000000 for effectively unlimited uses; leave blank to use Luma's default.
valid_end_atstring- ISO 8601 datetime the coupon expires. Leave blank for no end date.
valid_start_atstring- ISO 8601 datetime the coupon becomes valid from. Leave blank for no start restriction.
luma_calendar_coupon_updateUpdate the remaining uses or validity window of an existing calendar-wide coupon.WriteUpdate Calendar Coupon
Update the remaining uses or validity window of an existing calendar-wide coupon. Returns nothing on success. Use this only to change remaining_count, valid_start_at, or valid_end_at — the code and discount terms can't be edited after creation. Use luma_calendar_coupon_create to make a new coupon instead, or luma_calendar_coupons_list to find the coupon's current code.
- Idempotent
Inputs
codestringrequired- The coupon code to update, exactly as guests enter it (not case sensitive).
remaining_countinteger- New total number of redemptions allowed. Set to 1000000 for effectively unlimited. Leave blank to keep the current value.
valid_end_atstring- New ISO 8601 datetime the coupon expires. Leave blank to keep the current value.
valid_start_atstring- New ISO 8601 datetime the coupon becomes valid from. Leave blank to keep the current value.
luma_calendar_event_addAdd or submit an event to your Luma calendar: either an existing Luma event by ID, or an event hosted on another platform described by URL and details.WriteAdd Calendar Event
Add or submit an event to your Luma calendar: either an existing Luma event by ID, or an event hosted on another platform described by URL and details. Returns the new calendar event's id and its status (approved or pending). Use platform "luma" with event_id for an existing Luma event; use platform "external" with url, name, start_at, duration_interval, and timezone for an event hosted elsewhere. Afterward, use luma_calendar_event_approve or luma_calendar_event_reject to act on a pending submission.
Inputs
platformstringrequired- Which kind of event to add: luma for an event that already exists on Luma (identify it with event_id), or external for an event hosted on another platform (describe it with url, name, start_at, duration_interval, and timezone).one of
lumaexternal duration_intervalstring- Duration of the external event as an ISO 8601 duration, e.g. PT2H for 2 hours. Required when platform is external; ignored otherwise.
event_idstring- ID of the existing Luma event to add to this calendar, formatted as evt- followed by an alphanumeric string. Required when platform is luma; ignored otherwise.
geo_address_jsonobject- Optional location for the external event, given as one of three address styles: a manual address string, a Google Maps place ID lookup, or a free-text search query resolved to the closest Google Maps match. Only used when platform is external. Example (manual): {"type": "manual", "address": "123 Main St, Springfield"}. Example (Google place ID): {"type": "google", "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4"}. Example (search query): {"type": "lookup", "query": "Moscone Center, San Francisco"}.
hoststring- Name of the event host to display for the external event. Only used when platform is external.
namestring- Name/title of the external event. Required when platform is external; ignored otherwise.
start_atstring- Start time of the external event, as an ISO 8601 datetime, e.g. 2025-08-06T09:00:00Z. Required when platform is external; ignored otherwise.
submission_modestring- Whether the submission is approved immediately (auto) or held for calendar admin approval (pending). Defaults to auto.one of
autopendingdefaultauto timezonestring- IANA time zone of the external event, e.g. America/New_York. Required when platform is external; ignored otherwise.
urlstring- Public URL of the external event. Required when platform is external; ignored otherwise.
luma_calendar_event_approveApprove a pending event submission on your Luma calendar.WriteApprove Calendar Event
Approve a pending event submission on your Luma calendar. Returns an empty JSON object on success; the event becomes visible on the calendar and the submitter is notified. Use luma_calendar_event_reject instead to decline a pending submission. Requires a pending calendar event submission, typically created via luma_calendar_event_add.
- Idempotent
Inputs
calendar_event_idstringrequired- ID of the calendar event submission to approve, formatted as calev- followed by an alphanumeric string. You can also pass the underlying Luma event ID (starting with evt-); Luma resolves it to the active pending submission on this calendar.
luma_calendar_event_rejectReject a pending event submission on your Luma calendar, optionally with a message explaining why.WriteReject Calendar Event
Reject a pending event submission on your Luma calendar, optionally with a message explaining why. Returns an empty JSON object on success; if the event is still pending, the submitter is notified. Use luma_calendar_event_approve instead to accept a pending submission. Requires a pending calendar event submission, typically created via luma_calendar_event_add.
- Idempotent
Inputs
calendar_event_idstringrequired- ID of the calendar event submission to reject, formatted as calev- followed by an alphanumeric string. You can also pass the underlying Luma event ID (starting with evt-); Luma resolves it to the active pending submission on this calendar.
messagestring- Optional message sent to the submitter explaining why their event submission was rejected.
luma_calendar_updateUpdate settings on an existing Luma calendar.WriteUpdate Calendar
Update settings on an existing Luma calendar. Only the fields you provide are changed; everything else stays the same. Returns the calendar's full updated details, including its name, slug, launch status, and branding and social settings. Use this to rename a calendar, change its launch status, or update its description, branding, social links, or location. Use luma_organization_calendar_create to create a new calendar instead.
Inputs
calendar_idstringrequired- The ID of the calendar to update, formatted as cal- followed by an alphanumeric string (e.g. cal-abc123XYZ). Get this value from a calendar list response or from the calendar's Luma dashboard URL.
avatar_urlstring- URL of an image already uploaded to the Luma CDN, used as the calendar's avatar. Leave blank to keep the current avatar.
descriptionstring- New short description shown on the calendar's page. Leave blank to keep the current description.
instagram_handlestring- Instagram handle or profile URL for the calendar, e.g. 'luma' or 'https://instagram.com/luma'. Leave blank to keep the current value; submit an empty string to remove it.
launch_statusstring- Calendar visibility status. `launched` makes the calendar active, `coming-soon` shows a placeholder page instead of the full calendar, and `archived` stops new follows and visitor event submissions. Leave blank to keep the current status.one of
launchedcoming-soonarchived linkedin_handlestring- LinkedIn company or profile URL for the calendar, e.g. 'https://linkedin.com/company/luma'. Leave blank to keep the current value; submit an empty string to remove it.
locationobject- The city the calendar is based in, as a JSON object. Provide {"type": "lookup", "query": "Miami Beach, FL"} to search Google Maps by name, or {"type": "google", "place_id": "<google-places-id>"} to set it from a known Google Places ID; Luma derives the calendar's timezone and coordinates from the resolved city. Leave blank to keep the current location.
namestring- New name for the calendar. Leave blank to keep the current name.
slugstring- New URL slug for the calendar page, e.g. 'my-community' becomes lu.ma/my-community. Leave blank to keep the current slug.
tiktok_handlestring- TikTok handle or profile URL for the calendar, e.g. '@luma' or 'https://tiktok.com/@luma'. Leave blank to keep the current value; submit an empty string to remove it.
tint_colorstring- New tint color for the calendar page, as a hex color code (e.g. '#E3CBEF'). Leave blank to keep the current color.
twitter_handlestring- X (Twitter) handle or profile URL for the calendar, e.g. '@luma' or 'https://x.com/luma'. Leave blank to keep the current value; submit an empty string to remove it.
websitestring- Website URL shown on the calendar page. `https://` is added automatically if missing. Leave blank to keep the current website; submit an empty string to remove it.
youtube_handlestring- YouTube handle or channel URL for the calendar, e.g. '@luma' or 'https://youtube.com/@luma'. Leave blank to keep the current value; submit an empty string to remove it.
luma_contact_blockBlock a contact so they can no longer follow your Luma calendar or join its events.WriteBlock Contact
Block a contact so they can no longer follow your Luma calendar or join its events. Returns nothing on success; the contact stops receiving your invites and newsletters until you restore them. Identify the contact with contact_id (from luma_contacts_list) or email — provide exactly one. Use luma_contact_restore to reverse this later, or luma_contact_remove to delete the contact instead of blocking them.
- Idempotent
Inputs
contact_idstring- ID of the contact to block (the id from luma_contacts_list, usually starting with usr-). Provide this or email, not both.
emailstring- Email address of the contact to block. Provide this or contact_id, not both.
luma_contact_restoreRestore a previously removed or blocked contact back to your calendar's active contacts.WriteRestore Contact
Restore a previously removed or blocked contact back to your calendar's active contacts. Returns a success confirmation once the contact is reinstated and can receive invites and newsletters again. Use this to undo luma_contact_remove or luma_contact_block. Look up the contact's contact_id or email with luma_contacts_list first.
- Idempotent
Inputs
contact_idstring- ID of the contact to restore, as returned by luma_contacts_list (usually starts with usr-). Provide this or email; at least one is required.
emailstring- Email address of the contact to restore. Provide this or contact_id; at least one is required.
luma_contact_tag_applyApply an existing contact tag to one or more calendar contacts by user ID or email.WriteApply Contact Tag
Apply an existing contact tag to one or more calendar contacts by user ID or email. Returns a success confirmation; only existing contacts are tagged, this will not create new contacts. Use this to tag contacts you already have. Use luma_contact_tag_unapply to remove the tag instead. Get the tag's ID or name from luma_contact_tags_list, and contact identifiers from luma_contacts_list.
- Idempotent
Inputs
tagstringrequired- The tag to apply, identified by its ID (e.g. tag-abc123XYZ) or by its exact name (e.g. VIP).
emailsarray- Email addresses of the contacts to tag. Provide this and/or user_ids.
user_idsarray- Contact IDs of the contacts to tag, as returned by luma_contacts_list (usually start with usr-). Provide this and/or emails.
luma_contact_tag_createCreate a new contact tag on your Luma calendar, optionally with a color.WriteCreate Contact Tag
Create a new contact tag on your Luma calendar, optionally with a color. Returns the created tag's ID, name, and color. Use this before tagging contacts with luma_contact_tag_apply. Use luma_contact_tags_list first to check whether the tag already exists.
Inputs
namestringrequired- Display name for the new contact tag.
colorstring- Color for the tag, shown in the Luma dashboard. One of cranberry, barney, red, green, blue, purple, yellow, or orange; omit or set to null to let Luma pick a default color.one of
cranberrybarneyredgreenbluepurpleyelloworange
luma_contact_tag_unapplyRemove an existing contact tag from one or more calendar contacts by user ID or email.WriteUnapply Contact Tag
Remove an existing contact tag from one or more calendar contacts by user ID or email. Returns a success confirmation; only existing contacts are affected. Use this to untag contacts. Use luma_contact_tag_apply to add the tag instead. Get the tag's ID or name from luma_contact_tags_list, and contact identifiers from luma_contacts_list.
- Idempotent
Inputs
tagstringrequired- The tag to remove, identified by its ID (e.g. tag-abc123XYZ) or by its exact name (e.g. VIP).
emailsarray- Email addresses of the contacts to untag. Provide this and/or user_ids.
user_idsarray- Contact IDs of the contacts to untag, as returned by luma_contacts_list (usually start with usr-). Provide this and/or emails.
luma_contact_tag_updateUpdate an existing contact tag's name or color.WriteUpdate Contact Tag
Update an existing contact tag's name or color. Returns the updated tag's ID, name, and color. Use this to rename or recolor a tag without changing which contacts it's applied to. Get the tag_id from luma_contact_tags_list or from luma_contact_tag_create's response.
- Idempotent
Inputs
tag_idstringrequired- ID of the contact tag to update, as returned by luma_contact_tags_list or luma_contact_tag_create (usually starts with tag-).
colorstring- New color for the tag. One of cranberry, barney, red, green, blue, purple, yellow, or orange. Omit to leave the current color unchanged.one of
cranberrybarneyredgreenbluepurpleyelloworange namestring- New display name for the tag. Omit to leave the current name unchanged.
luma_contacts_importImport contacts into a Luma calendar so you can invite them to events or send them newsletters.WriteImport Contacts
Import contacts into a Luma calendar so you can invite them to events or send them newsletters. Returns nothing on success; imported contacts then appear in luma_contacts_list. Provide an email and, optionally, a name for each contact — Luma won't overwrite a name that's already set. Apply tags to every imported contact in the same call. Get tag IDs or names to pass in tags from luma_contact_tags_list.
Inputs
contactsarrayrequired- The contacts to import, as an array of objects each with an email and, optionally, a name. Luma will not overwrite a contact's name once it has already been set. Example: [{"email": "person@example.com", "name": "Jamie Lee"}]
tagsarray- Tag IDs or tag names, from luma_contact_tags_list, to apply to every contact in this import.
luma_event_blast_createSend an email blast to an event's guests, immediately or at a scheduled time.WriteCreate Event Blast
Send an email blast to an event's guests, immediately or at a scheduled time. Returns the created blast object, with status: scheduled until it goes out. Blasts run in the background, count against the calendar's send limit, and can't be recalled once sent; sending is limited to 10 blasts per 5 minutes. Restrict recipients with recipient_groups, or omit it to reach every approved (going) guest.
Inputs
content_mdstringrequired- The message body, written in markdown. Sent as the email's content.
event_idstringrequired- ID of the event whose guests will receive the blast, formatted as evt- followed by an alphanumeric string.
recipient_groupsarray- Which guests receive the blast, as a list of recipient groups. Each group has a status of approved (going), checked_in, pending_approval, waitlist, or invited, and can optionally be limited to guests holding a specific ticket type (omit to include every ticket type for that status; can't be combined with invited, since invitees hold no tickets). Omit recipient_groups entirely to reach every approved (going) guest across all ticket types. Example: [{"status": "approved"}, {"status": "waitlist", "event_ticket_type_id": "ttype-abc123XYZ"}].
scheduled_forstring- When to send the blast, as a future ISO 8601 datetime (e.g. 2025-08-06T09:00:00Z). Omit to send immediately.
subjectstring- Email subject line, up to 200 characters. If omitted, Luma uses the default: "New message in {event name}".
luma_event_blast_updateUpdate an existing Luma email blast, changing only the fields you pass.WriteUpdate Blast
Update an existing Luma email blast, changing only the fields you pass. Returns the updated blast's id, subject, message content, recipient groups, and schedule. Use this to reschedule a blast that hasn't sent yet, or to edit its subject and message; after a blast has sent, only subject and content_md can still change. Use luma_event_blast_delete to remove a blast instead. Requires an existing blast_id from luma_event_blast_create or luma_event_blasts_list.
- Idempotent
Inputs
blast_idstringrequired- The unique ID of the blast to update, formatted as ep- followed by an alphanumeric string (e.g. ep-abc123XYZ). Get this value from a blast creation response or from luma_event_blasts_list.
content_mdstring- New message body in Markdown, sent as the email content. On a blast that has already been sent, updating this only changes the post shown on the event page — it does not resend or edit the emails already delivered.
recipient_groupsarray- New audience for the blast, as an array of recipient group objects. Only allowed for blasts that haven't been sent yet. Each object needs a status — one of approved (going to the event), checked_in, pending_approval, waitlist, or invited — and can optionally set event_ticket_type_id to reach only guests holding that specific ticket type; omit it to reach every ticket type, and don't combine it with the invited status, since invitees hold no tickets. Example: [{"status": "approved"}, {"status": "waitlist", "event_ticket_type_id": "tkt-abc123XYZ"}].
scheduled_forstring- New send time for an unsent blast, as an ISO 8601 datetime in the future (e.g. 2026-10-01T18:00:00Z). Only allowed for blasts that haven't been sent yet.
subjectstring- New email subject line, up to 200 characters. Leave blank to use the default, "New message in {event name}".
luma_event_cancel_requestRequest a short-lived token to cancel a Luma event.WriteRequest Event Cancellation
Request a short-lived token to cancel a Luma event. Returns a cancellation_token that expires in 15 minutes, whether the event has paid guests (is_paid), and its current approved guest_count. Use this as the required first step before luma_event_cancel, which needs the token to actually cancel the event. Canceling is irreversible — it deletes the event, notifies every guest, and can trigger refunds. Requires an existing event_id, such as one from luma_event_get.
Inputs
event_idstringrequired- The unique ID of the event to cancel, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ).
luma_event_coupon_createCreate a coupon that guests can apply when registering for a specific Luma event.WriteCreate Event Coupon
Create a coupon that guests can apply when registering for a specific Luma event. Returns nothing on success — list the event's coupons afterward with luma_event_coupons_list to confirm. Restrict the coupon to one ticket type with event_ticket_type_id; if that ticket type is hidden, this creates an unlock (access) code instead of a plain discount — pair it with a 0% discount to unlock the price unchanged. Use luma_calendar_coupon_create instead for a coupon valid across every event on a calendar. Requires the event ID from luma_event_get. Coupon terms can't be edited after creation — use luma_event_coupon_update only to change remaining uses or the validity window.
Inputs
codestringrequired- The code guests enter on the event page to apply this coupon. Not case sensitive. Maximum 20 characters.
discount_typestringrequired- Which kind of discount this coupon applies: percent for a percentage off, or amount for a fixed amount off. Determines whether percent_off or cents_off/currency is used.one of
percentamount event_idstringrequired- The Luma event this coupon applies to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ).
cents_offnumber- Fixed amount off, in the smallest unit of currency (e.g. cents for usd). Required when discount_type is amount, and must be paired with currency.
currencystring- Currency the amount off (cents_off) is denominated in. Required when discount_type is amount.one of
solana_solsolana_usdcaedafnallamdangaoaarsaudawgaznbambbdbdtbgnbhdbifbmdbndbobbrlbsdbwpbynbzdcadcdfchfclpcnycopcrccveczkdjfdkkdopdzdegpetbeurfjdfkpgbpgelghsgipgmdgnfgtqgydhkdhnlhtghufidrilsinriskjmdjodjpykeskgskhrkmfkrwkwdkydkztlaklbplkrlrdlslmadmdlmgamkdmmkmntmopmurmvrmwkmxnmyrmznnadngnnionoknprnzdomrpabpenpgkphppkrplnpygqarronrsdrubrwfsarsbdscrseksgdshpslesossrdstdszlthbtjstndtoptryttdtwdtzsuahugxusduyuuzsvndvuvwstxafxcdxofxpfyerzarzmw event_ticket_type_idstring- Restrict the coupon to a single ticket type, from luma_event_ticket_types_list. If that ticket type is hidden, the coupon becomes an unlock (access) code that reveals the ticket during registration instead of a plain discount.
percent_offnumber- Percentage discount, from 0 to 100. Required when discount_type is percent; ignored otherwise. Use 0 together with event_ticket_type_id to create an unlock code that doesn't change the price.
remaining_countinteger- How many times the coupon can be redeemed in total. Set to 1000000 for effectively unlimited uses; leave blank to use Luma's default.
valid_end_atstring- ISO 8601 datetime the coupon expires. Leave blank for no end date.
valid_start_atstring- ISO 8601 datetime the coupon becomes valid from. Leave blank for no start restriction.
luma_event_coupon_updateUpdate the remaining uses or validity window of an existing coupon on a Luma event.WriteUpdate Event Coupon
Update the remaining uses or validity window of an existing coupon on a Luma event. Returns nothing on success. Use this only to change remaining_count, valid_start_at, or valid_end_at — the coupon's code and discount terms can't be edited after creation. Use luma_event_coupon_create to make a new coupon instead, or luma_event_coupons_list to find the coupon's current code. Requires the event ID and the coupon's code, from when it was created with luma_event_coupon_create or from luma_event_coupons_list.
- Idempotent
Inputs
codestringrequired- The coupon code to update, exactly as guests enter it (not case sensitive).
event_idstringrequired- The Luma event the coupon belongs to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ).
remaining_countinteger- New total number of redemptions allowed. Set to 1000000 for effectively unlimited. Leave blank to keep the current value.
valid_end_atstring- New ISO 8601 datetime the coupon expires. Leave blank to keep the current value.
valid_start_atstring- New ISO 8601 datetime the coupon becomes valid from. Leave blank to keep the current value.
luma_event_createCreate a new event on the connected Luma calendar.WriteCreate Event
Create a new event on the connected Luma calendar. Returns the created event's full details, including its new event id, slug, and URL. Use this to publish a new event from scratch. Use luma_event_update to change an existing event instead, or luma_event_get to look up an event you already created.
Inputs
namestringrequired- The event's name/title, shown at the top of the event page.
start_atstringrequired- Event start time as an ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z.
timezonestringrequired- IANA timezone the event is displayed in, e.g. America/New_York. See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for valid values.
can_register_for_multiple_ticketsboolean- Whether a guest can register for multiple tickets in one registration (Group Registration). When true, each ticket counts toward max_capacity.
confirmation_email_mdstring- Your added message in the confirmation email sent when a registration is confirmed, including when you approve a guest. Supports Markdown. Leave this field out to use the default message, or pass an empty string to remove your message (guests still get the standard email).
cover_urlstring- Cover image URL for the event page. Must be an image already uploaded to the Luma CDN (URLs under https://images.lumacdn.com/...) — get one from /v1/images/create-upload-url, or pick one from Luma's cover gallery with /v1/images/search.
declined_email_mdstring- Your added message in the email sent when you decline a guest's registration. Supports Markdown. Leave this field out to use the default message, or pass an empty string to remove your message (guests still get the standard email).
description_mdstring- The event's description, formatted with Markdown. For images, upload to the Luma CDN via /v1/images/create-upload-url first and reference the returned file_url with ; image URLs must be hosted on images.lumacdn.com. Put a YouTube, Vimeo, or Loom URL on its own line to embed that video.
end_atstring- Event end time as an ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z. Leave blank to leave the end time unset.
feedback_emailobject- Settings for the post-event feedback email sent to guests, as a JSON object with an enabled flag and an optional delay (an ISO 8601 duration, default PT0M/immediately, maximum P30D; a negative duration like -PT30M sends it before the event ends, at most P1D early and never before the event starts). If not specified, the event inherits the calendar's default. Example: {"enabled": true, "delay": "P1D"}.
fontstring- Font used for the event name and headings. Setting a theme without a font applies that theme's default font. Pass null to clear the font and use the standard font. Retired fonts are no longer accepted here and existing pages using one fall back to the standard font.one of
alternatealverataavant-gardebeaufortblithecaslondegulardeparturefactoriafuturagaramondgeist-monogoogleivy-modeivy-prestomuseoneuzeitnew-spiritposterroc-groteskseasonsnprostrenuouspearl geo_address_jsonobject- In-person location for the event, as a JSON object. Use {"type": "manual", "address": "<free text>"} to store an address as-is, {"type": "google", "place_id": "<Google Places ID>"} to resolve a Google Maps place, or {"type": "lookup", "query": "<search text>"} to search Google Maps and use the top result. Leave out for online events, and don't combine with meeting_url. Example: {"type": "manual", "address": "123 Main St, San Francisco, CA"}.
location_visibilitystring- Set to guests-only to hide the precise location from people who haven't been approved yet — they'll only see the city and approximate area. Defaults to public.one of
publicguests-only max_capacitynumber- Maximum number of registrations. Once reached, the event is marked sold out and registration closes automatically — unless the event has a waitlist enabled (waitlist_status), in which case new registrations join the waitlist instead. If can_register_for_multiple_tickets is true, each ticket counts toward this cap.
meeting_urlstring- Join link for an online event (Zoom, Google Meet, etc.). Can't be combined with geo_address_json.
name_requirementstring- How to collect guest names: full-name uses a single field; first-last uses separate first and last name fields. Enabling first-last requires Luma Plus on the event's calendar.one of
full-namefirst-last pending_approval_email_mdstring- Your added message in the email sent to guests awaiting approval or on the waitlist. Supports Markdown. Leave this field out to use the default message, or pass an empty string to remove your message (guests still get the standard email).
phone_number_requirementstring- Whether guests must provide a phone number when registering: optional or required. Leave blank to not collect it.one of
optionalrequired registration_openboolean- Whether to accept registrations. Set to false to close registration so new guests can't sign up. Defaults to true.
registration_questionsarray- Custom questions asked at registration, as an array of question objects. Each question needs an id, a label, whether it's required, and a question_type (agree-check, company, github, instagram, linkedin, phone-number, select, telegram, text, twitter, url, youtube, or terms). select questions also need an options array; text questions may set multiline; terms questions need a nested terms object describing the agreement text or a link to it. Example: [{"id": "q1", "label": "What's your role?", "required": true, "question_type": "text"}].
reminders_disabledboolean- By default, Luma sends reminder emails before the event. Set to true to turn these off if you'd like more control over event communications.
show_guest_listboolean- When the guest list is shown, approved guests can see who else is going to the event.
slugstring- URL slug for the event, 3-50 characters. If the slug is aloha, the event's URL is https://luma.com/aloha. Event creation fails if the slug is already taken — check availability first with /v1/entities/lookup.
themestring- Visual theme applied to the event page. Retired themes are no longer accepted here and existing pages using one fall back to standard. Setting a theme also applies its default font unless font is set separately.one of
standardcrossdiamondfalling-leavesfireworksfloralgrain-darkgrain-lightgridbatsholiday-diwaliholiday-foliageholiday-hanukkahholiday-pieholiday-santaholiday-sweaterholiday-turkeyhypnoticcelebrate-darkcelebrate-lightcloudsimpressioniststarryaurorarain-darkrain-lightarcadeseaside-darkseaside-lightlifematrixparticles-bokehparticles-champagneplusiridescent-darkiridescent-lightpolkadotpool-darkpool-lightsnakeblockssnow-darksnow-lightspace-warsunny-shadestamagotchiwarpwavezigzag ticket_typesarray- Ticket types to create the event with, as an array of ticket type objects. When provided, these replace the default ticket and the event is created with exactly these types. When omitted, the event gets a single free ticket named Standard. Each ticket type needs a name and a type of free or paid; paid types also need cents (price in the currency's minor unit) and currency (an ISO 4217 code like usd), and require the calendar to have a connected Stripe account. Optional fields include description, require_approval, is_hidden, max_capacity, valid_start_at/valid_end_at, and pay-what-you-want pricing via is_flexible/min_cents. To change ticket types after creation, use the ticket type endpoints instead. Example: [{"name": "Standard", "type": "free"}].
tint_colorstring- Accent color for the event page, as a 3 or 6-digit hex code like #bb2dc7. The shade is adjusted as needed so text and buttons stay accessible against the background.
visibilitystring- Who can see the event page: public (anyone), members-only (only calendar members), or private (only people with the link).one of
publicmembers-onlyprivate waitlist_statusstring- Set to enabled to give the event a waitlist: once max_capacity is reached, new registrations join the waitlist instead of being turned away.one of
disabledenabled
luma_event_guest_status_updateUpdate a guest's registration status on a Luma event — approve them ("Going"), decline them, move them back to pending approval, or place them on the waitlist.WriteUpdate Guest Status
Update a guest's registration status on a Luma event — approve them ("Going"), decline them, move them back to pending approval, or place them on the waitlist. Returns the guest's updated registration details. Use this when you already know the guest's status. To send a soft invite that guests can accept themselves, use luma_event_guests_send_invites instead. Use luma_event_guest_tickets_update to add or remove tickets rather than change status.
- Idempotent
Inputs
event_idstringrequired- The unique ID of the Luma event the guest belongs to, formatted as evt- followed by an alphanumeric string.
guest_idstringrequired- Identifier for the guest whose status you're changing. Accepts a guest ID (starting with gst-), a ticket key, a guest key (starting with g-), or the guest's email address.
statusstringrequired- The new status for the guest's registration. approved means the guest is confirmed as "Going". Use declined to reject their registration, pending_approval to move them back to review, or waitlist to place them on the waitlist.one of
approveddeclinedpending_approvalwaitlist messagestring- A personal note included in the email sent to the guest about the status change. Maximum of 200 characters. Can't be combined with send_email set to false.
send_emailboolean- Whether Luma should email the guest about this status change. Defaults to true. Set to false if your own integration sends its own notifications.
should_refundboolean- If you're moving a guest who already paid to declined, waitlist, or pending_approval, whether to refund their payment. Defaults to false.
luma_event_guest_tickets_updateAdd or remove tickets on an existing guest's registration for a Luma event.WriteUpdate Guest Tickets
Add or remove tickets on an existing guest's registration for a Luma event. This is an administrative operation: added tickets are complimentary and removed tickets are simply invalidated — no payment or refund is processed, and administrative changes can exceed event or ticket-type capacity. Returns the guest's updated registration and ticket details. Use this to grant a guest extra complimentary tickets or invalidate ones they hold. You can't change tickets for a guest with a pending payment hold. Use luma_event_guest_status_update to change a guest's approval status instead.
- Idempotent
Inputs
event_idstringrequired- The unique ID of the Luma event the guest belongs to, formatted as evt- followed by an alphanumeric string.
guest_idstringrequired- Identifier for the guest whose tickets you're changing. Accepts a guest ID (starting with gst-), a ticket key, a guest key (starting with g-), or the guest's email address.
send_emailboolean- Whether Luma may email the guest about this ticket change. Defaults to true and still respects the guest's notification preferences. This only controls email — the guest still gets an in-app notification, and push follows their own preferences.
ticket_ids_to_removearray- Existing ticket IDs to invalidate (each usually starts with tkt-). Removing a ticket does not issue a refund, and at least one valid ticket must remain on the guest afterward. Leave empty to not remove any tickets.
tickets_to_addarray- Complimentary tickets to grant the guest, as an array of objects each naming an event_ticket_type_id. Each entry creates a new $0 administrative ticket, even if that ticket type is normally paid. Leave empty to not add any tickets. Example: [{"event_ticket_type_id": "ttype-abc123XYZ"}].
luma_event_guests_addAdd one or more guests to a Luma event, optionally assigning custom tickets, an approval status, and answers to registration questions.WriteAdd Guests
Add one or more guests to a Luma event, optionally assigning custom tickets, an approval status, and answers to registration questions. Returns the list of guests that will be skipped because they unsubscribed, were removed, or blocked you; everyone else is added in the background without an individual per-guest result. Use this to register guests directly with a status you choose upfront. Use luma_event_guests_send_invites to send a soft invite the guest must accept instead, or luma_event_guest_status_update to change an existing guest's status. Get event_ticket_type_id values from luma_event_ticket_types_list, and registration question IDs from the registration_questions field of luma_event_get.
Inputs
event_idstringrequired- The Luma event to add guests to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this from luma_event_get, a calendar events list, or event lookup.
guestsarrayrequired- The guests to add, as an array of objects each with an email and, optionally, a name and registration_answers. Luma will not overwrite a guest's name if one is already on file. Example: [{"email": "guest@example.com", "name": "Jamie Lee", "registration_answers": [{"question_id": "reg-abc123", "value": "Vegetarian"}]}]
approval_statusstring- Status to assign to each added guest: approved (Going), pending_approval (host review needed), or waitlist. Defaults to approved.one of
approvedpending_approvalwaitlistdefaultapproved send_emailboolean- Whether Luma emails each added guest their confirmation. Defaults to true; set to false if your integration sends its own notification.default
true ticketobject- Assign one ticket of this type to every guest in the request. Get valid IDs from luma_event_ticket_types_list. Cannot be combined with tickets. Example: {"event_ticket_type_id": "ticket-abc123"}
ticketsarray- Assign multiple tickets to every guest, one entry per ticket. Cannot be combined with ticket. Example: [{"event_ticket_type_id": "ticket-abc123"}, {"event_ticket_type_id": "ticket-def456"}]
luma_event_guests_send_invitesSend guests an invite to a Luma event by email (and SMS, if their phone number is linked to their Luma account).WriteSend Invites
Send guests an invite to a Luma event by email (and SMS, if their phone number is linked to their Luma account). Invites are sent as a soft invite guests can accept themselves, and are processed in the background. Returns the list of guests that will be skipped — for example because they unsubscribed from the calendar, were removed by an admin, or blocked the host. Use this to invite people who haven't registered yet. Use luma_event_guest_status_update to directly approve or add a guest without sending an invite first.
Inputs
event_idstringrequired- The unique ID of the Luma event to send invites for, formatted as evt- followed by an alphanumeric string.
guestsarrayrequired- The guests to invite, as an array of objects each with an email and an optional name. If a person already has a name on their Luma account, the name given here will not overwrite it. Example: [{"email": "guest@example.com", "name": "Jamie Chen"}].
messagestring- A personal message included in the invite. Maximum of 200 characters.
luma_event_host_addAdd a host — a manager or check-in staff member — to a Luma event, identified by email.WriteAdd Host
Add a host — a manager or check-in staff member — to a Luma event, identified by email. Returns nothing on success; the host then appears on the event's host list with the chosen access level. Use access_level to choose manager (full event management) or check-in (check-in only, never shown publicly) permissions. Use luma_event_host_update to change an existing host's access or visibility, or luma_event_host_remove to remove one. Requires the event ID from luma_event_get.
Inputs
emailstringrequired- Email address of the person to add as a host on this event.
event_idstringrequired- The Luma event to add the host to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this from luma_event_get.
access_levelstring- Permission level for the new host: none, check-in (check-in staff only), or manager (full access). Defaults to manager.one of
nonecheck-inmanagerdefaultmanager is_visibleboolean- Whether the host is shown publicly on the event page. Defaults to true. check-in hosts are never shown on the page — passing true here together with access_level check-in is rejected by Luma.default
true namestring- Name to display for this host if they don't already have a Luma profile. Ignored if they already have one.
luma_event_host_removeRemove a host from a Luma event by email.WriteRemove Host
Remove a host from a Luma event by email. Returns nothing on success; the host no longer appears on the event's host list or has management access. Use this once a host no longer needs manager or check-in access. Use luma_event_host_add to add them back later, or luma_event_host_update to change their access instead of removing them. The event creator cannot be removed. Requires the event ID and the host's email, both known from when the host was added with luma_event_host_add.
- Idempotent
Inputs
emailstringrequired- Email of the host to remove, exactly as it was added.
event_idstringrequired- The Luma event to remove the host from, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ).
luma_event_host_updateUpdate an existing host's access level or visibility on a Luma event.WriteUpdate Host
Update an existing host's access level or visibility on a Luma event. Returns nothing on success; the change takes effect immediately. Use this to move a host between manager and check-in access, or to show or hide them on the event page. Use luma_event_host_add to add a new host instead, or luma_event_host_remove to remove one. The event creator's access level cannot be changed. Requires the event ID and the host's email, both known from when the host was added with luma_event_host_add.
- Idempotent
Inputs
emailstringrequired- Email of the host to update, exactly as it was added.
event_idstringrequired- The Luma event the host belongs to, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ).
access_levelstring- New access level for the host: none, check-in, or manager. Omit to leave the current access level unchanged. The event creator's access level cannot be changed.one of
nonecheck-inmanager is_visibleboolean- Whether the host should be shown publicly on the event page. Omit to leave unchanged. check-in hosts are never shown — changing a host to check-in hides them, and passing true together with check-in is rejected.
luma_event_tag_applyApply a tag to one or more events on your Luma calendar.WriteApply Event Tag
Apply a tag to one or more events on your Luma calendar. Returns applied_count and skipped_count, showing how many events were tagged versus skipped because they aren't on this calendar. Use luma_event_tag_unapply to remove a tag from events instead.
- Idempotent
Inputs
event_idsarrayrequired- Array of Luma event IDs to apply the tag to. Each ID is formatted as evt- followed by an alphanumeric string. Example: ["evt-abc123XYZ", "evt-def456UVW"].
tagstringrequired- The tag to apply, given as either its tag ID (e.g. tag-123) or its tag name.
luma_event_tag_createCreate a new event tag on your Luma calendar, optionally with a color.WriteCreate Event Tag
Create a new event tag on your Luma calendar, optionally with a color. Returns the created tag's ID, name, and color. Use this before tagging events with luma_event_tag_apply. Use luma_event_tags_list first to check whether the tag already exists.
Inputs
namestringrequired- Display name for the new event tag.
colorstring- Color for the tag, shown in the Luma dashboard. One of cranberry, barney, red, green, blue, purple, yellow, or orange; omit or set to null to let Luma pick a default color.one of
cranberrybarneyredgreenbluepurpleyelloworange
luma_event_tag_unapplyRemove a tag from one or more events on your Luma calendar.WriteUnapply Event Tag
Remove a tag from one or more events on your Luma calendar. Returns removed_count and skipped_count, showing how many events had the tag removed versus skipped because they aren't on this calendar. Use luma_event_tag_apply to add a tag to events instead.
- Idempotent
Inputs
event_idsarrayrequired- Array of Luma event IDs to remove the tag from. Each ID is formatted as evt- followed by an alphanumeric string. Example: ["evt-abc123XYZ", "evt-def456UVW"].
tagstringrequired- The tag to remove, given as either its tag ID (e.g. tag-123) or its tag name.
luma_event_tag_updateUpdate an existing event tag's name or color.WriteUpdate Event Tag
Update an existing event tag's name or color. Returns the updated tag's ID, name, and color. Use this to rename or recolor a tag without changing which events it's applied to. Get the tag_id from luma_event_tags_list or from luma_event_tag_create's response.
- Idempotent
Inputs
tag_idstringrequired- ID of the event tag to update, as returned by luma_event_tags_list or luma_event_tag_create (usually starts with tag-).
colorstring- New color for the tag. One of cranberry, barney, red, green, blue, purple, yellow, or orange. Omit to leave the current color unchanged.one of
cranberrybarneyredgreenbluepurpleyelloworange namestring- New display name for the tag. Omit to leave the current name unchanged.
luma_event_ticket_type_createCreate a new ticket type for a Luma event, either free or paid.WriteCreate Ticket Type
Create a new ticket type for a Luma event, either free or paid. Returns the created ticket type object, including its id, name, price, and capacity settings. Paid ticket types (type: paid) require cents and currency to be set, and require the calendar to have a connected Stripe account. Use luma_event_ticket_type_update to change an existing ticket type, or luma_event_ticket_type_delete to remove one.
Inputs
event_idstringrequired- ID of the event to create the ticket type for, formatted as evt- followed by an alphanumeric string.
namestringrequired- Name of the ticket type, shown to guests during registration. 1 to 30 characters.
typestringrequired- Whether the ticket type is free or paid. Paid ticket types require cents and currency, and require the calendar to have a connected Stripe account.one of
freepaid centsinteger- Price in the currency's minor unit (e.g. 2500 for $25.00). Required when type is paid; ignored for free ticket types.
currencystring- ISO 4217 currency code, lowercase (e.g. usd). Required when type is paid; ignored for free ticket types.
descriptionstring- Description of the ticket type shown to guests during registration. Up to 1000 characters.
is_flexibleboolean- Pay-what-you-want pricing: if true, guests choose their own amount (at least min_cents) instead of a fixed price. Only meaningful for paid ticket types.
is_hiddenboolean- If true, hides this ticket type from the public registration page. Guests who already have a ticket of this type keep access.
max_capacitynumber- Maximum number of tickets of this type that can be sold. Omit for unlimited capacity.
min_centsinteger- Minimum amount guests must pay when is_flexible is true, in the currency's minor unit (e.g. 1000 for $10.00).
require_approvalboolean- If true, guests registering with this ticket type must be manually approved before their registration is confirmed. If omitted, Luma's default (no approval required) applies.
valid_end_atstring- When this ticket type stops being available for purchase, as an ISO 8601 datetime (e.g. 2025-08-06T09:00:00Z) or date (e.g. 2025-08-06). Omit for no end restriction.
valid_start_atstring- When this ticket type becomes available for purchase, as an ISO 8601 datetime (e.g. 2025-08-06T09:00:00Z) or date (e.g. 2025-08-06). Omit for no start restriction.
luma_event_ticket_type_updateUpdate an existing ticket type's configuration on a Luma event.WriteUpdate Ticket Type
Update an existing ticket type's configuration on a Luma event. Returns the updated ticket type object. Only include the fields you want to change; omitted fields keep their current value. Use luma_event_ticket_type_create to add a new ticket type instead, or luma_event_ticket_type_delete to remove one.
- Idempotent
Inputs
event_ticket_type_idstringrequired- ID of the ticket type to update, formatted as ttype- followed by an alphanumeric string.
centsinteger- Price in the currency's minor unit (e.g. 2500 for $25.00). Used when type is paid; ignored for free ticket types. Omit to leave unchanged.
currencystring- ISO 4217 currency code, lowercase (e.g. usd). Used when type is paid; ignored for free ticket types. Omit to leave unchanged.
descriptionstring- Description of the ticket type shown to guests during registration. Up to 1000 characters. Omit to leave unchanged.
is_flexibleboolean- Pay-what-you-want pricing: if true, guests choose their own amount (at least min_cents) instead of a fixed price. Only meaningful for paid ticket types. Omit to leave unchanged.
is_hiddenboolean- If true, hides this ticket type from the public registration page. Guests who already have a ticket of this type keep access. Omit to leave unchanged.
max_capacitynumber- Maximum number of tickets of this type that can be sold. Omit to leave unchanged.
min_centsinteger- Minimum amount guests must pay when is_flexible is true, in the currency's minor unit (e.g. 1000 for $10.00). Omit to leave unchanged.
namestring- Name of the ticket type, shown to guests during registration. 1 to 30 characters. Omit to leave unchanged.
require_approvalboolean- If true, guests registering with this ticket type must be manually approved before their registration is confirmed. Omit to leave unchanged.
typestring- Whether the ticket type is free or paid. Paid ticket types require cents and currency, and require the calendar to have a connected Stripe account. Omit to leave unchanged.one of
freepaid valid_end_atstring- When this ticket type stops being available for purchase, as an ISO 8601 datetime (e.g. 2025-08-06T09:00:00Z) or date (e.g. 2025-08-06). Omit to leave unchanged.
valid_start_atstring- When this ticket type becomes available for purchase, as an ISO 8601 datetime (e.g. 2025-08-06T09:00:00Z) or date (e.g. 2025-08-06). Omit to leave unchanged.
luma_event_updateUpdate an existing event on the connected Luma calendar.WriteUpdate Event
Update an existing event on the connected Luma calendar. Only the fields you provide are changed; everything else is left as-is. Returns the updated event's full details. Use this to change an event's name, time, location, or settings. Use luma_event_create to make a new event instead, or luma_event_get to look up an event's current details before updating it.
Inputs
event_idstringrequired- The unique ID of the Luma event to update, formatted as evt- followed by an alphanumeric string.
can_register_for_multiple_ticketsboolean- Whether a guest can register for multiple tickets in one registration (Group Registration). When true, each ticket counts toward max_capacity. Leave blank to keep the current setting.
confirmation_email_mdstring- Your added message in the confirmation email sent when a registration is confirmed, including when you approve a guest. Supports Markdown. Leave this field out to keep the current message, or pass an empty string to remove your message (guests still get the standard email).
cover_urlstring- Cover image URL for the event page. Must be an image already uploaded to the Luma CDN (URLs under https://images.lumacdn.com/...). Leave blank to keep the current cover.
declined_email_mdstring- Your added message in the email sent when you decline a guest's registration. Supports Markdown. Leave this field out to keep the current message, or pass an empty string to remove your message (guests still get the standard email).
description_mdstring- The event's description, formatted with Markdown. For images, upload to the Luma CDN via /v1/images/create-upload-url first and reference the returned file_url with ; image URLs must be hosted on images.lumacdn.com. Put a YouTube, Vimeo, or Loom URL on its own line to embed that video. Leave blank to keep the current description.
end_atstring- Event end time as an ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z. Leave blank to keep the current end time.
feedback_emailobject- Settings for the post-event feedback email sent to guests, as a JSON object with an enabled flag and an optional delay (an ISO 8601 duration, default PT0M/immediately, maximum P30D; a negative duration like -PT30M sends it before the event ends, at most P1D early and never before the event starts). Leave blank to keep the current setting. Example: {"enabled": true, "delay": "P1D"}.
fontstring- Font used for the event name and headings. Pass null to clear the font and use the standard font. Retired fonts are no longer accepted here and existing pages using one fall back to the standard font. Leave the field out to keep the current font.one of
alternatealverataavant-gardebeaufortblithecaslondegulardeparturefactoriafuturagaramondgeist-monogoogleivy-modeivy-prestomuseoneuzeitnew-spiritposterroc-groteskseasonsnprostrenuouspearl geo_address_jsonobject- In-person location for the event, as a JSON object. Use {"type": "manual", "address": "<free text>"} to store an address as-is, {"type": "google", "place_id": "<Google Places ID>"} to resolve a Google Maps place, or {"type": "lookup", "query": "<search text>"} to search Google Maps and use the top result. Don't combine with meeting_url. Leave blank to keep the current location. Example: {"type": "manual", "address": "123 Main St, San Francisco, CA"}.
location_visibilitystring- Set to guests-only to hide the precise location from people who haven't been approved yet — they'll only see the city and approximate area. Leave blank to keep the current setting.one of
publicguests-only max_capacitynumber- Maximum number of registrations. Once reached, the event is marked sold out and registration closes automatically — unless the event has a waitlist enabled (waitlist_status), in which case new registrations join the waitlist instead. Leave blank to keep the current cap.
meeting_urlstring- Join link for an online event (Zoom, Google Meet, etc.). Can't be combined with geo_address_json. Leave blank to keep the current value.
namestring- The event's name/title, shown at the top of the event page. Leave blank to keep the current name.
name_requirementstring- How to collect guest names: full-name uses a single field; first-last uses separate first and last name fields. Enabling first-last requires Luma Plus on the event's calendar. Leave blank to keep the current setting.one of
full-namefirst-last pending_approval_email_mdstring- Your added message in the email sent to guests awaiting approval or on the waitlist. Supports Markdown. Leave this field out to keep the current message, or pass an empty string to remove your message (guests still get the standard email).
phone_number_requirementstring- Whether guests must provide a phone number when registering: optional or required. Leave blank to keep the current setting.one of
optionalrequired registration_openboolean- Whether to accept registrations. Set to false to close registration so new guests can't sign up. Leave blank to keep the current setting.
registration_questionsarray- Custom questions asked at registration, as an array of question objects. Each question needs an id, a label, whether it's required, and a question_type (agree-check, company, github, instagram, linkedin, phone-number, select, telegram, text, twitter, url, youtube, or terms). select questions also need an options array; text questions may set multiline; terms questions need a nested terms object describing the agreement text or a link to it. Leave blank to keep the current questions. Example: [{"id": "q1", "label": "What's your role?", "required": true, "question_type": "text"}].
reminders_disabledboolean- By default, Luma sends reminder emails before the event. Set to true to turn these off if you'd like more control over event communications. Leave blank to keep the current setting.
show_guest_listboolean- When the guest list is shown, approved guests can see who else is going to the event. Leave blank to keep the current setting.
slugstring- URL slug for the event, 3-50 characters. If the slug is aloha, the event's URL is https://luma.com/aloha. The update fails if the slug is already taken. Leave blank to keep the current slug.
start_atstring- Event start time as an ISO 8601 datetime, e.g. 2022-10-19T03:27:13.673Z. Leave blank to keep the current start time.
suppress_emailboolean- If true, Luma will not email guests when this update changes the event's name, time, or location. Guests still get a push notification for a changed time or location.
tax_configobject- Tax added on top of ticket prices for this event only, overriding the calendar's tax setting. Only affects new purchases and requires Luma Pro on the event's calendar. Pass an object with a tax_percent (number) and a tax_name (2-30 characters), or null to go back to the calendar's own tax setting. Example: {"tax_percent": 8.5, "tax_name": "Sales Tax"}.
themestring- Visual theme applied to the event page. Retired themes are no longer accepted here and existing pages using one fall back to standard. Setting a theme also applies its default font unless font is set separately. Leave blank to keep the current theme.one of
standardcrossdiamondfalling-leavesfireworksfloralgrain-darkgrain-lightgridbatsholiday-diwaliholiday-foliageholiday-hanukkahholiday-pieholiday-santaholiday-sweaterholiday-turkeyhypnoticcelebrate-darkcelebrate-lightcloudsimpressioniststarryaurorarain-darkrain-lightarcadeseaside-darkseaside-lightlifematrixparticles-bokehparticles-champagneplusiridescent-darkiridescent-lightpolkadotpool-darkpool-lightsnakeblockssnow-darksnow-lightspace-warsunny-shadestamagotchiwarpwavezigzag timezonestring- IANA timezone the event is displayed in, e.g. America/New_York. Leave blank to keep the current timezone.
tint_colorstring- Accent color for the event page, as a 3 or 6-digit hex code like #bb2dc7. Leave blank to keep the current color.
visibilitystring- Who can see the event page: public (anyone), members-only (only calendar members), or private (only people with the link). Leave blank to keep the current setting.one of
publicmembers-onlyprivate waitlist_statusstring- Set to enabled to give the event a waitlist: once max_capacity is reached, new registrations join the waitlist instead of being turned away. Leave blank to keep the current setting.one of
disabledenabled
luma_image_upload_url_createMint a pre-signed URL for uploading an image to Luma's asset storage.WriteCreate Image Upload URL
Mint a pre-signed URL for uploading an image to Luma's asset storage. Returns upload_url (a URL to PUT your image bytes to) and file_url (the resulting public URL, which you can then reference in other Luma API calls, e.g. as an event's cover image). Use this before any call that needs an image URL: first upload your image bytes to upload_url via a separate PUT request, then pass file_url to that call.
Inputs
content_typestring- MIME type of the image you plan to upload: image/jpeg or image/png. If omitted, Luma infers the type from the uploaded bytes.one of
image/jpegimage/png
luma_membership_member_addAdd a person to a Luma membership tier by email.WriteAdd Member to Tier
Add a person to a Luma membership tier by email. Returns the new membership's ID and status (approved, pending, approved-pending-payment, or declined). Use this to enroll someone directly through the API instead of having them sign up on the calendar page; set skip_payment for paid tiers you are billing externally. Use luma_membership_member_status_update afterward to approve or decline a pending member. Requires an existing membership_tier_id from luma_membership_tiers_list.
Inputs
emailstringrequired- Email address of the person to add as a member. If no Luma account exists for this email, one may be created for them.
membership_tier_idstringrequired- The ID of the membership tier to add this person to. Get this value from luma_membership_tiers_list.
registration_answersarray- Answers to the tier's custom registration questions, needed only if the tier has any. Provide an array of answer objects — each needs question_id and label matching one of the tier's registration_questions (from luma_membership_tiers_list), a question_type that matches that question (e.g. agree-check, company, phone-number, select, terms, url, or a social-handle type like linkedin/twitter/github), and a value shaped for that type: true/false for agree-check and terms questions, a {"company", "job_title"} object for company questions, a plain string for phone-number/url/text/social questions, a single string for a single-select question, or an array of strings for a multi-select question (also set multiple to true). Example: [{"question_id": "reg-abc123", "label": "Company", "question_type": "company", "value": {"company": "Acme Inc", "job_title": "Engineer"}}].
skip_paymentboolean- Set to true for paid tiers when you are handling payment externally (outside of Luma), so no charge is attempted through Luma. Required for paid tiers unless you want Luma to attempt payment collection.
luma_membership_member_status_updateUpdate a Luma membership member's approval status.WriteUpdate Member Status
Update a Luma membership member's approval status. Returns an empty response on success. Use this to approve a pending member — which captures payment for paid tiers — or to decline one, which cancels any active subscription. Use luma_membership_member_add first to enroll a new member. Requires an existing user_id or email from a pending membership, such as one created by luma_membership_member_add.
- Idempotent
Inputs
statusstringrequired- The status to set. approved captures payment for paid tiers and grants access; declined rejects the membership and cancels any active subscription.one of
approveddeclined user_idstringrequired- The member's Luma user ID (usually starting with usr-) or their email address.
luma_organization_calendar_createCreate a new calendar within the connected Luma organization, managed by the API key's owner.WriteCreate Calendar
Create a new calendar within the connected Luma organization, managed by the API key's owner. Returns the new calendar's id, slug, launch status, and appearance and social settings. Use this to add another calendar to the organization. Use luma_calendar_update to change an existing calendar's settings instead.
Inputs
namestringrequired- Name of the new calendar.
avatar_urlstring- URL of an image already uploaded to the Luma CDN, used as the calendar's avatar. If not provided, a random default avatar is used.
descriptionstring- Short description shown on the calendar's page.
instagram_handlestring- Instagram handle or profile URL for the calendar, e.g. 'luma' or 'https://instagram.com/luma'.
launch_statusstring- Calendar visibility status. Defaults to `launched` (Active). Use `coming-soon` to show a placeholder page while you set the calendar up, or `archived` to stop new follows and visitor event submissions.one of
launchedcoming-soonarchived linkedin_handlestring- LinkedIn company or profile URL for the calendar, e.g. 'https://linkedin.com/company/luma'.
locationobject- The city the calendar is based in, as a JSON object. Provide {"type": "lookup", "query": "Miami Beach, FL"} to search Google Maps by name, or {"type": "google", "place_id": "<google-places-id>"} to set it from a known Google Places ID; Luma derives the calendar's timezone and coordinates from the resolved city.
slugstring- URL slug for the calendar page, e.g. 'my-community' becomes lu.ma/my-community. If not provided, Luma generates one from the name.
tiktok_handlestring- TikTok handle or profile URL for the calendar, e.g. '@luma' or 'https://tiktok.com/@luma'.
tint_colorstring- Tint color for the calendar page, as a hex color code (e.g. '#E3CBEF'). If not provided, a random color matching the default avatar is used.
twitter_handlestring- X (Twitter) handle or profile URL for the calendar, e.g. '@luma' or 'https://x.com/luma'.
websitestring- Website URL shown on the calendar page. `https://` is added automatically if missing.
youtube_handlestring- YouTube handle or channel URL for the calendar, e.g. '@luma' or 'https://youtube.com/@luma'.
luma_organization_event_transfer_calendarMove an event to a different managing calendar within the connected Luma organization.WriteTransfer Event Calendar
Move an event to a different managing calendar within the connected Luma organization. The event's managing calendar changes to the destination calendar you specify. Returns an empty response on success. Use this to reassign an event from one calendar to another, for example when reorganizing which calendar owns which events. Both the event and the destination calendar must belong to the organization.
Inputs
calendar_idstringrequired- The ID of the destination calendar, formatted as cal- followed by an alphanumeric string (e.g. cal-abc123XYZ). Must belong to the same organization as the event. Get this value from luma_organization_calendars_list.
event_idstringrequired- The ID of the event to transfer, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Get this value from a calendar or organization events list, or from the event's Luma dashboard URL.
luma_webhook_createCreate a new Luma webhook endpoint to receive event notifications.WriteCreate Webhook
Create a new Luma webhook endpoint to receive event notifications. Returns the created webhook's ID, URL, subscribed event types, status, and a secret used to verify incoming payloads. Use this to start receiving calendar and event notifications at your own endpoint. Use luma_webhook_update to change its event types or pause it, and luma_webhooks_list to see existing webhooks.
Inputs
event_typesarrayrequired- The event types this webhook should receive. Use ["*"] to receive every event type, or list specific ones such as event.created, guest.registered, or ticket.registered.
urlstringrequired- The HTTPS (or HTTP) URL that Luma should POST event payloads to.
luma_webhook_updateUpdate a Luma webhook's subscribed event types or its active/paused status.WriteUpdate Webhook
Update a Luma webhook's subscribed event types or its active/paused status. Returns the webhook's ID, URL, event types, status, secret, and creation time. Use this to change what events a webhook receives, or to pause it without deleting it. Use luma_webhook_delete to remove it outright. Requires an existing webhook id from luma_webhook_create or luma_webhooks_list.
- Idempotent
Inputs
idstringrequired- The unique ID of the webhook to update. Get this value from a webhook creation response or from luma_webhooks_list.
event_typesarray- New list of event types this webhook should receive, replacing the current list. Use ["*"] to receive every event type, or list specific ones such as event.created, guest.registered, or ticket.registered.
statusstring- Set to paused to temporarily stop deliveries without deleting the webhook, or active to resume them.one of
activepaused
luma_contact_removeRemove a contact from your Luma calendar by contact ID or email.DestructiveRemove Contact
Remove a contact from your Luma calendar by contact ID or email. Returns a success confirmation; the contact stops receiving invites and newsletters but keeps the ability to resubscribe on their own later. Use this for a soft removal. Use luma_contact_block instead if you also want to prevent the contact from resubscribing. Look up the contact_id with luma_contacts_list first if you don't already have the contact's email.
- Idempotent
Inputs
contact_idstring- ID of the contact to remove, as returned by luma_contacts_list (usually starts with usr-). Provide this or email; at least one is required.
emailstring- Email address of the contact to remove. Provide this or contact_id; at least one is required.
luma_contact_tag_deleteDelete a contact tag from your Luma calendar.DestructiveDelete Contact Tag
Delete a contact tag from your Luma calendar. Returns a success confirmation; the tag is removed from every contact it was applied to. Use this to permanently remove a tag. Use luma_contact_tag_unapply instead if you only want to remove the tag from specific contacts. Get the tag_id from luma_contact_tags_list.
- Idempotent
Inputs
tag_idstringrequired- ID of the contact tag to delete, as returned by luma_contact_tags_list (usually starts with tag-).
luma_event_blast_deleteDelete a Luma email blast.DestructiveDelete Blast
Delete a Luma email blast. Returns an empty response on success. Use this to cancel a scheduled blast before it sends, or to remove a sent blast's post from the event page — emails already delivered stay delivered either way. Use luma_event_blast_update to edit a blast instead of removing it. Requires an existing blast_id from luma_event_blast_create or luma_event_blasts_list.
- Idempotent
Inputs
blast_idstringrequired- The unique ID of the blast to delete, formatted as ep- followed by an alphanumeric string (e.g. ep-abc123XYZ). Get this value from a blast creation response or from luma_event_blasts_list.
luma_event_cancelCancel a Luma event, permanently deleting it and notifying every guest.DestructiveCancel Event
Cancel a Luma event, permanently deleting it and notifying every guest. Returns an empty response on success. Use this after luma_event_cancel_request has returned a cancellation_token; for events with paid guests you must also set should_refund to process or skip refunds. This action can't be undone. Requires a cancellation_token from luma_event_cancel_request, obtained no more than 15 minutes earlier.
- Idempotent
Inputs
cancellation_tokenstringrequired- The cancellation token returned by luma_event_cancel_request. It expires 15 minutes after being issued.
event_idstringrequired- The unique ID of the event to cancel, formatted as evt- followed by an alphanumeric string (e.g. evt-abc123XYZ). Must match the event the cancellation_token was issued for.
should_refundboolean- Whether to refund paid guests as part of the cancellation. Required if luma_event_cancel_request reported is_paid: true for this event; omit it for events with no paid guests.
luma_event_tag_deleteDelete an event tag from your Luma calendar.DestructiveDelete Event Tag
Delete an event tag from your Luma calendar. Returns a success confirmation; the tag is removed from every event it was applied to. Use this to permanently remove a tag. Get the tag_id from luma_event_tags_list.
- Idempotent
Inputs
tag_idstringrequired- ID of the event tag to delete, as returned by luma_event_tags_list (usually starts with tag-).
luma_event_ticket_type_deleteSoft-delete a ticket type from a Luma event.DestructiveDelete Ticket Type
Soft-delete a ticket type from a Luma event. Returns an empty JSON object on success; guests already registered with this ticket type keep their tickets. You can't delete an event's last visible ticket type — use luma_event_ticket_type_update instead to hide a ticket type without deleting it.
- Idempotent
Inputs
event_ticket_type_idstringrequired- ID of the ticket type to delete, formatted as ttype- followed by an alphanumeric string.
luma_webhook_deleteDelete a Luma webhook endpoint.DestructiveDelete Webhook
Delete a Luma webhook endpoint. Returns an empty response on success. Use this to permanently stop notifications to an endpoint; use luma_webhook_update to pause a webhook temporarily instead of deleting it. Requires an existing webhook id from luma_webhook_create or luma_webhooks_list.
- Idempotent
Inputs
idstringrequired- The unique ID of the webhook to delete. Get this value from a webhook creation response or from luma_webhooks_list.
No tools match.