Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Luma

Scalekit connector
Open markdown

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

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. 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>
  3. Create the Luma connection

    In AgentKit > Connections, create a Luma connection. The name you give it is the connection_name your code passes. See Configure connections.

  4. 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.actions
    const connector = 'luma'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'luma_calendar_admins_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each 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 to execute_tool
Try in PlaygroundRequest a tool
  • luma_calendar_admins_listList all admins for the calendar your API key is scoped to.Read-only

    List 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-only

    List 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-only

    Lookup 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-only

    List 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 approvedpendingdefault approved
  • luma_calendar_getGet the Luma calendar that your API key is scoped to.Read-only

    Get 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_contact_tags_listList the contact tags defined on the calendar your API key is scoped to.Read-only

    List Contact Tags

    List the contact tags defined on the calendar your API key is scoped to. Returns an array of tag entries (each with an id, name, and color) and a has_more flag. Use this to look up valid contact tag ids and names before filtering or tagging contacts elsewhere.

    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-only

    List 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-only

    Lookup 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.