add_guests | Add guests to an event. Required: event_id (string) and guests (ARRAY OF OBJECTS — [{ email, name? }], never an array of strings; email is required on each entry). Optional: approval_status, one of ‘approved’ (the default, « Going »), ‘pending_approval’ or ‘waitlist’; ticket, an OBJECT { event_ticket_type_id } assigning one ticket of that type to each guest (ids come from list_event_ticket_types); send_email, a boolean (true by default) to let Luma email each added guest. To send an invitation a guest can accept rather than registering them outright, use send_invites. |
create_event | Create an event on the calendar. Required: name (string), start_at (ISO 8601 datetime) and timezone (IANA name). Every other field is optional. name: string. start_at and end_at: ISO 8601 datetimes (“2026-10-19T03:27:13.673Z”). timezone: IANA zone name as a string (“Europe/Paris”). description_md: Markdown string. geo_address_json: an OBJECT, one of { type: ‘manual’, address } (free-text address), { type: ‘google’, place_id } or { type: ‘lookup’, query } — leave it out for an online event; it cannot be combined with meeting_url. meeting_url: string (video-call link). visibility: ‘public’ | ‘members-only’ | ‘private’. location_visibility: ‘public’ | ‘guests-only’. max_capacity: bare integer or null. waitlist_status: ‘disabled’ | ‘enabled’. registration_open, show_guest_list, reminders_disabled, can_register_for_multiple_tickets: booleans. slug: string (URL segment). tint_color: string, a 3- or 6-digit hex code (“#bb2dc7”). |
send_invites | Send guests an invitation to an event (email, plus SMS when their phone is linked to their Luma account). Required: event_id (string) and guests (ARRAY OF OBJECTS — [{ email, name? }]). Optional: message, a string of at most 200 characters added to the invitation. |
update_event | Update an existing event. Required: event_id (string starting with evt-). Only the fields you send are changed; the others keep their value. Set suppress_email to true (boolean) to avoid emailing guests about a change of name, time or location. name: string. start_at and end_at: ISO 8601 datetimes (“2026-10-19T03:27:13.673Z”). timezone: IANA zone name as a string (“Europe/Paris”). description_md: Markdown string. geo_address_json: an OBJECT, one of { type: ‘manual’, address } (free-text address), { type: ‘google’, place_id } or { type: ‘lookup’, query } — leave it out for an online event; it cannot be combined with meeting_url. meeting_url: string (video-call link). visibility: ‘public’ | ‘members-only’ | ‘private’. location_visibility: ‘public’ | ‘guests-only’. max_capacity: bare integer or null. waitlist_status: ‘disabled’ | ‘enabled’. registration_open, show_guest_list, reminders_disabled, can_register_for_multiple_tickets: booleans. slug: string (URL segment). tint_color: string, a 3- or 6-digit hex code (“#bb2dc7”). |
update_guest_status | Change a guest’s status on an event. Required: event_id (string), guest_id (string — the guest id gst-, a ticket key, a guest key g-, or the guest’s email address, all discoverable through list_event_guests) and status, one of ‘approved’ (« Going »), ‘declined’, ‘pending_approval’ or ‘waitlist’. Optional: should_refund, a boolean refunding a paying guest moved out of an approved status; send_email, a boolean (true by default); message, a string of at most 200 characters added to the email, which cannot be combined with send_email: false. |