Luma Calendars API

The Calendars API from Luma — 25 operation(s) for calendars.

OpenAPI Specification

luma-calendars-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Luma Calendars API
  version: 1.0.0
  description: 'API for interacting with Luma''s event platform.


    ## Rate Limits


    The Luma API uses a per-minute rate limit shared across `GET` and `POST` requests:


    - **Calendar API keys** and OAuth tokens: **200 requests/minute** per calendar.

    - **Organization API keys**: **500 requests/minute** per organization.


    When you exceed the limit the API returns `429 Too Many Requests`. Back off before retrying.'
  contact:
    name: Luma Support
    url: https://help.luma.com
  license:
    name: Proprietary
servers:
- url: https://public-api.luma.com
  description: Production server
security:
- apiKeyAuth: []
tags:
- name: Calendars
paths:
  /v1/calendars/get:
    get:
      tags:
      - Calendars
      summary: Get Calendar
      parameters: []
      description: Get information about the calendar.
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  slug:
                    anyOf:
                    - type: string
                    - type: 'null'
                  avatar_url:
                    anyOf:
                    - type: string
                    - type: 'null'
                  url:
                    type: string
                  description:
                    anyOf:
                    - type: string
                    - type: 'null'
                  social_image_url:
                    anyOf:
                    - type: string
                    - type: 'null'
                  cover_image_url:
                    anyOf:
                    - type: string
                    - type: 'null'
                  is_personal:
                    type: boolean
                  location:
                    anyOf:
                    - type: object
                      properties:
                        city:
                          type: string
                          description: City name, e.g. 'New York'.
                        region:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: State or province, e.g. 'New York' or 'California'.
                        country:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Country name, e.g. 'United States'. Null for cities in disputed territories where Google omits the country.
                        country_code:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: ISO 3166-1 alpha-2 country code, e.g. 'US'.
                        timezone:
                          type: string
                          description: IANA timezone of the city, e.g. 'America/New_York'.
                      required:
                      - city
                      - region
                      - country
                      - country_code
                      - timezone
                    - type: 'null'
                    description: City the calendar is based in (e.g. for city calendars). Null when the calendar isn't tied to a place.
                  coordinate:
                    anyOf:
                    - type: object
                      properties:
                        longitude:
                          type: number
                        latitude:
                          type: number
                      required:
                      - longitude
                      - latitude
                    - type: 'null'
                    description: Latitude and longitude of the calendar's primary location (e.g. city calendars). Null when the calendar isn't tied to a place.
                  instagram_handle:
                    anyOf:
                    - type: string
                    - type: 'null'
                  twitter_handle:
                    anyOf:
                    - type: string
                    - type: 'null'
                  youtube_handle:
                    anyOf:
                    - type: string
                    - type: 'null'
                  website:
                    anyOf:
                    - type: string
                    - type: 'null'
                required:
                - id
                - name
                - slug
                - avatar_url
                - url
                - description
                - social_image_url
                - cover_image_url
                - is_personal
                - location
                - coordinate
                - instagram_handle
                - twitter_handle
                - youtube_handle
                - website
  /v1/calendars/events/list:
    get:
      tags:
      - Calendars
      summary: List Events
      parameters:
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
        description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
        description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
      - name: pagination_cursor
        in: query
        required: false
        schema:
          description: Value of `next_cursor` from a previous request.
          type: string
        description: Value of `next_cursor` from a previous request.
      - name: pagination_limit
        in: query
        required: false
        schema:
          description: The number of items to return. The server will enforce a maximum number.
          type: number
        description: The number of items to return. The server will enforce a maximum number.
      - name: platforms
        in: query
        required: false
        schema:
          description: Which event platforms to include. Defaults to `luma` for backwards compatibility. Pass as repeated query params, e.g. `?platforms=luma&platforms=external`.
          type: array
          items:
            type: string
            enum:
            - luma
            - external
        description: Which event platforms to include. Defaults to `luma` for backwards compatibility. Pass as repeated query params, e.g. `?platforms=luma&platforms=external`.
      - name: sort_column
        in: query
        required: false
        schema:
          type: string
          enum:
          - start_at
      - name: sort_direction
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          - asc nulls last
          - desc nulls last
      - name: status
        in: query
        required: false
        schema:
          description: Filter by calendar submission status. Defaults to `approved`.
          type: string
          enum:
          - approved
          - pending
        description: Filter by calendar submission status. Defaults to `approved`.
      description: 'Every event and API key on Luma is managed by a [Luma Calendar](https://help.luma.com/p/luma-calendar-overview). You can list all of the events managed by your Calendar by using this API route.


        Note that this API route will not list events that are listed on the Calendar but not managed by the Calendar.'
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  entries:
                    type: array
                    items:
                      allOf:
                      - oneOf:
                        - type: object
                          properties:
                            platform:
                              type: string
                              const: luma
                            id:
                              type: string
                            user_id:
                              type: string
                            calendar_id:
                              type: string
                            start_at:
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
                            duration_interval:
                              type: string
                            end_at:
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
                            created_at:
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              description: ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z
                            timezone:
                              type: string
                              description: IANA Timezone, e.g. America/New_York. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
                            name:
                              type: string
                            description:
                              type: string
                            description_md:
                              type: string
                            geo_address_json:
                              anyOf:
                              - type: object
                                properties:
                                  address:
                                    type: string
                                  city:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  region:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  country:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  city_state:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  full_address:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  google_maps_place_id:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  apple_maps_place_id:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                  description:
                                    anyOf:
                                    - type: string
                                    - type: 'null'
                                required:
                                - address
                                - city
                                - region
                                - country
                                - city_state
                                - full_address
                                - google_maps_place_id
                                - apple_maps_place_id
                                - description
                              - type: 'null'
                            coordinate:
                              anyOf:
                              - type: object
                                properties:
                                  longitude:
                                    type: number
                                  latitude:
                                    type: number
                                required:
                                - longitude
                                - latitude
                              - type: 'null'
                              description: Latitude and longitude of the event location. Null for online events or when the address can't be geocoded.
                            meeting_url:
                              anyOf:
                              - type: string
                              - type: 'null'
                            location_type:
                              type: string
                              enum:
                              - discord
                              - meet
                              - twitch
                              - twitter
                              - youtube
                              - zoom
                              - offline
                              - missing
                              - unknown
                              description: '`offline` for in-person events. Online events have the meeting platform (`zoom`, `meet`, etc.), or `unknown` if we don''t recognize the meeting link. `missing` if the event has no location set.'
                            location_visibility:
                              type: string
                              enum:
                              - public
                              - guests-only
                              description: Whether the event's address is shown to everyone or only to approved guests. This API always returns the full address.
                            cover_url:
                              type: string
                            registration_questions:
                              type: array
                              items:
                                anyOf:
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: agree-check
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: company
                                    collect_job_title:
                                      anyOf:
                                      - type: boolean
                                      - type: 'null'
                                    job_title_label:
                                      anyOf:
                                      - type: string
                                      - type: 'null'
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: dropdown
                                    options:
                                      maxItems: 250
                                      type: array
                                      items:
                                        type: string
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                  - options
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: github
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: instagram
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: linkedin
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: long-text
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: multi-select
                                    options:
                                      maxItems: 250
                                      type: array
                                      items:
                                        type: string
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                  - options
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: phone-number
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: telegram
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: text
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: twitter
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: url
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: youtube
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                - type: object
                                  properties:
                                    id:
                                      type: string
                                    label:
                                      type: string
                                    required:
                                      type: boolean
                                    question_type:
                                      type: string
                                      const: terms
                                    terms:
                                      oneOf:
                                      - type: object
                                        properties:
                                          content_type:
                                            type: string
                                            const: text
                                          content_md:
                                            type: string
                                            description: Markdown content for the terms. Luma converts this to rich text internally.
                                          collect_signature:
                                            type: boolean
                                          require_review:
                                            description: When true, guests must open the hosted terms before accepting.
                                            type: boolean
                                        required:
                                        - content_type
                                        - content_md
                                        - collect_signature
                                      - type: object
                                        properties:
                                          content_type:
                                            type: string
                                            const: link
                                          url:
                                            type: string
                                            format: uri
                                          collect_signature:
                                            type: boolean
                                        required:
                                        - content_type
                                        - url
                                        - collect_signature
                                  required:
                                  - id
                                  - label
                                  - required
                                  - question_type
                                  - terms
                            url:
                              type: string
                            visibility:
                              type: string
                              enum:
                              - public
                              - members-only
                              - private
                            waitlist_status:
                              type: string
                              enum:
                              - disabled
                              - enabled
                              description: '`enabled` if the event has a waitlist. New registrations join the waitlist once the event reaches capacity.'
                            feedback_email:
                              type: object
                              properties:
                                enabled:
                                  type: boolean
                                  description: Whether to send the feedback email.
                                delay:
                                  description: How long after the event ends to send the feedback email. Defaults to PT0M (immediately). Maximum is P7D (7 days).
                                  type: string
                              required:
                              - enabled
                              description: Settings for the post-event feedback email sent to guests.
                          required:
                          - platform
                          - id
                          - user_id
                          - calendar_id
                          - start_at
                          - duration_interval
                          - end_at
                          - created_at
                          - timezone
                          - name
                          - description
                          - description_md
                          - geo_address_json
                          - coordinate
                          - meeting_url
                          - location_type
                          - location_visibility
                          - cover_url
                          - url
                          - visibility
                          - waitlist_status
                          - feedback_email
                    

# --- truncated at 32 KB (103 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/luma/refs/heads/main/openapi/luma-calendars-api-openapi.yml