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

# Create an Event

> Creates a draft Event for the authenticated user. A draft is not public and nobody can register until it is published with `POST /v2/events/{uuid}/publish`. To create an Event owned by a team, use `POST /v2/teams/{teamId}/events`.

`startTime` and `endTime` are ISO 8601 in UTC; `startTime` must not be in the past and `endTime` must be after `startTime`.

`guestList` controls whether guests see names, a count, or neither. `locations` sets where the Event happens; set `price` and `currency` on a location to charge for that place.

Events are fixed-date RSVP pages served at cal.com/{slug}; they are not event types (bookable meeting templates) or calendar events.

Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `EVENT_WRITE` scope is required.



## OpenAPI

````yaml /api-reference/v2/openapi.json post /v2/events
openapi: 3.0.0
info:
  title: Cal.com API v2
  description: ''
  version: 1.0.0
  contact: {}
servers: []
security: []
tags: []
paths:
  /v2/events:
    post:
      tags:
        - Events
      summary: Create an Event
      description: >-
        Creates a draft Event for the authenticated user. A draft is not public
        and nobody can register until it is published with `POST
        /v2/events/{uuid}/publish`. To create an Event owned by a team, use
        `POST /v2/teams/{teamId}/events`.


        `startTime` and `endTime` are ISO 8601 in UTC; `startTime` must not be
        in the past and `endTime` must be after `startTime`.


        `guestList` controls whether guests see names, a count, or neither.
        `locations` sets where the Event happens; set `price` and `currency` on
        a location to charge for that place.


        Events are fixed-date RSVP pages served at cal.com/{slug}; they are not
        event types (bookable meeting templates) or calendar events.


        Learn more about API access control at
        https://cal.com/docs/api-reference/v2/access-control. If accessed using
        an OAuth access token, the `EVENT_WRITE` scope is required.
      operationId: EventsController_create
      parameters:
        - name: Authorization
          in: header
          description: >-
            value must be `Bearer <token>` where `<token>` is api key prefixed
            with cal_, managed user access token, or OAuth access token
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventInput'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventOutputResponseDto'
        '400':
          description: Invalid input, or a start time in the past
        '401':
          description: Unauthenticated
        '403':
          description: Insufficient permissions
components:
  schemas:
    CreateEventInput:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          description: The Event's title.
          example: Team offsite
          maxLength: 255
        startTime:
          type: string
          description: >-
            When the Event starts, in ISO 8601 format in UTC timezone. It must
            not be in the past.
          example: '2030-01-01T10:00:00.000Z'
        endTime:
          type: string
          description: >-
            When the Event ends, in ISO 8601 format in UTC timezone. It must be
            after `startTime`.
          example: '2030-01-01T11:00:00.000Z'
        timeZone:
          type: string
          description: The IANA time zone the Event's times are shown in.
          example: Europe/Berlin
        slug:
          type: string
          description: >-
            Public page slug (cal.com/{slug}): 10-100 lowercase letters, digits
            and hyphens. Generated from the title when omitted.
          example: team-offsite-2030
        description:
          type: string
          nullable: true
          description: What the Event is about, shown on its page.
          maxLength: 5000
        visibility:
          enum:
            - PUBLIC
            - UNLISTED
          type: string
          description: >-
            Once published: PUBLIC is listed on the owner's page, UNLISTED only
            opens from its link. Defaults to PUBLIC.
          default: PUBLIC
        capacity:
          type: number
          nullable: true
          minimum: 1
          description: >-
            The most guests the Event can take. Omit or pass null for unlimited.
            Ignored once any location has its own `capacity`: the Event then
            takes the sum of the location capacities, or is unlimited if any
            location has none. The waitlist only opens when the Event or the
            chosen location is full, so it only works when capacity is set on
            the Event or on a location.
          maximum: 100000
        waitlistEnabled:
          type: boolean
          description: >-
            Let guests join a waitlist when the Event is full. The waitlist only
            opens when the Event or the chosen location is full, so it only
            works when capacity is set on the Event or on a location.
          default: false
        paymentTimeoutMinutes:
          type: number
          nullable: true
          minimum: 10
          maximum: 10080
          description: >-
            How many minutes a guest's seat is held while they pay. null uses
            the default of 10 minutes.
        requiresApproval:
          type: boolean
          description: Registrations wait for a host's approval.
          default: false
        showOrganizerEmail:
          type: boolean
          description: Show the organizer's email to guests.
          default: true
        guestList:
          enum:
            - hidden
            - names
            - count
          type: string
          description: >-
            Who guests can see on the Event's page. `names` lists them, `count`
            shows how many, `hidden` shows neither. Defaults to `names`.
          default: names
        showPresentedBy:
          type: boolean
          description: Show who the Event is presented by.
          default: true
        theme:
          nullable: true
          enum:
            - light
            - dark
          type: string
          description: >-
            Default theme of the event page. null follows the visitor's system
            setting.
        background:
          nullable: true
          description: Animated background of the event page.
          type: object
          allOf:
            - $ref: '#/components/schemas/EventBackgroundInput'
        lineup:
          nullable: true
          description: >-
            Speakers or performers on the event page. Avatars need the Event
            uuid, so create people without avatarUrl and upload avatars with the
            person avatar endpoint afterwards.
          type: object
          allOf:
            - $ref: '#/components/schemas/EventLineupInput'
        schedule:
          description: >-
            Agenda on the event page. Each item has either a startTime or a
            timeLabel. Avatars need the Event uuid, so create people without
            avatarUrl and upload avatars with the person avatar endpoint
            afterwards.
          maxItems: 50
          type: array
          items:
            $ref: '#/components/schemas/EventScheduleItemInput'
        registrationFields:
          type: array
          description: The questions guests answer when they register.
          items:
            oneOf:
              - $ref: '#/components/schemas/SystemFullNameFieldInput_2026_06_12'
                title: Default Full Name
              - $ref: '#/components/schemas/SystemSplitNameFieldInput_2026_06_12'
                title: Default Split Name
              - $ref: '#/components/schemas/SystemEmailFieldInput_2026_06_12'
                title: Default Email
              - $ref: '#/components/schemas/SystemLocationFieldInput_2026_06_12'
                title: Default Location
              - $ref: '#/components/schemas/SystemTitleFieldInput_2026_06_12'
                title: Default Title
              - $ref: '#/components/schemas/SystemNotesFieldInput_2026_06_12'
                title: Default Notes
              - $ref: '#/components/schemas/SystemGuestsFieldInput_2026_06_12'
                title: Default Guests
              - $ref: >-
                  #/components/schemas/SystemRescheduleReasonFieldInput_2026_06_12
                title: Default Reschedule Reason
              - $ref: '#/components/schemas/SystemAttendeePhoneFieldInput_2026_06_12'
                title: Default Attendee Phone
              - $ref: '#/components/schemas/SystemSmsReminderFieldInput_2026_06_12'
                title: Workflow-added SMS Reminder
              - $ref: '#/components/schemas/SystemAiAgentPhoneFieldInput_2026_06_12'
                title: Workflow-added AI Agent Phone
              - $ref: '#/components/schemas/CustomEmailFieldInput_2026_06_12'
                title: Custom Email
              - $ref: '#/components/schemas/CustomPhoneFieldInput_2026_06_12'
                title: Custom Phone
              - $ref: '#/components/schemas/CustomAddressFieldInput_2026_06_12'
                title: Custom Address
              - $ref: '#/components/schemas/CustomShortTextFieldInput_2026_06_12'
                title: Custom Short Text
              - $ref: '#/components/schemas/CustomNumberFieldInput_2026_06_12'
                title: Custom Number
              - $ref: '#/components/schemas/CustomLongTextFieldInput_2026_06_12'
                title: Custom Long Text
              - $ref: '#/components/schemas/CustomSelectFieldInput_2026_06_12'
                title: Custom Select
              - $ref: '#/components/schemas/CustomMultiSelectFieldInput_2026_06_12'
                title: Custom Multi-Select
              - $ref: '#/components/schemas/CustomMultiEmailFieldInput_2026_06_12'
                title: Custom Multiple Emails
              - $ref: '#/components/schemas/CustomCheckboxGroupFieldInput_2026_06_12'
                title: Custom Checkbox Group
              - $ref: '#/components/schemas/CustomCheckboxFieldInput_2026_06_12'
                title: Custom Checkbox
              - $ref: '#/components/schemas/CustomRadioGroupFieldInput_2026_06_12'
                title: Custom Radio Group
              - $ref: '#/components/schemas/CustomUrlFieldInput_2026_06_12'
                title: Custom URL
        hosts:
          description: >-
            The Event's hosts. The creator is always a host and always listed
            first, even when not passed. Personal Events can only have the
            creator, so passing other ids returns a 400. On team Events every id
            must be an accepted team member, otherwise it returns a 400.
          type: array
          items:
            $ref: '#/components/schemas/EventHostInput'
        liveStreams:
          description: Links where people can watch the event live.
          maxItems: 5
          type: array
          items:
            $ref: '#/components/schemas/EventLiveStreamInput'
        category:
          enum:
            - meetup
            - conference
            - music
            - sports
          type: string
          description: >-
            What kind of event it is. If not passed, it's guessed from the
            title.
        locations:
          type: array
          description: >-
            Where the Event happens. Links can repeat. An Event can have one
            address and one conferencing location, either an integration or the
            organizer's default app.
          items:
            oneOf:
              - $ref: '#/components/schemas/EventAddressLocationInput'
              - $ref: '#/components/schemas/EventLinkLocationInput'
              - $ref: '#/components/schemas/EventIntegrationLocationInput'
              - $ref: '#/components/schemas/EventOrganizersDefaultAppLocationInput'
      required:
        - title
        - startTime
        - endTime
        - timeZone
    EventOutputResponseDto:
      type: object
      properties:
        status:
          enum:
            - success
            - error
          type: string
          example: success
        data:
          $ref: '#/components/schemas/EventOutputDto'
      required:
        - status
        - data
    EventBackgroundInput:
      type: object
      properties:
        effect:
          enum:
            - aurora
            - tide
            - satin
            - resonance
            - veil
            - facet
            - lumen
            - contour
            - recess
            - halftone
            - strata
          type: string
          description: Which animated effect renders.
        colors:
          minItems: 3
          maxItems: 3
          description: Exactly three hex colors the effect is drawn with.
          example:
            - '#0b1c2c'
            - '#1f6feb'
            - '#a5d8ff'
          type: array
          items:
            type: string
            pattern: ^#[0-9a-f]{6}$
      required:
        - effect
        - colors
    EventLineupInput:
      type: object
      properties:
        title:
          type: string
          nullable: true
          description: Heading above the people on the event page.
        people:
          maxItems: 30
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonInput'
      required:
        - people
    EventScheduleItemInput:
      type: object
      properties:
        startTime:
          type: string
          nullable: true
          description: >-
            When the item starts, in ISO 8601 format in UTC timezone. Send
            either startTime or timeLabel. Required when endTime is set.
          example: '2030-01-01T10:10:00.000Z'
        endTime:
          type: string
          nullable: true
          description: >-
            When the item ends, in ISO 8601 format in UTC timezone. Must be
            after startTime.
          example: '2030-01-01T10:40:00.000Z'
        timeLabel:
          type: string
          nullable: true
          pattern: \S
          description: >-
            Free text such as "Doors open" for an item without a startTime. Send
            either startTime or timeLabel.
        content:
          type: string
          pattern: \S
          description: What happens during this item.
        people:
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/EventSchedulePersonInput'
      required:
        - content
    SystemFullNameFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: name
          description: Only allowed value is 'name'.
        slug:
          type: string
          example: name
          description: Only allowed value is 'name'.
        variant:
          type: string
          example: fullName
          description: >-
            Only allowed value is 'fullName'. Used for having a single booking
            field for the attendee's full name.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `&name=bob`,    the name
            field will be prefilled with this value and disabled.
      required:
        - field
        - variant
    SystemSplitNameFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: name
          description: Only allowed value is 'name'.
        slug:
          type: string
          example: name
          description: Only allowed value is 'name'.
        variant:
          type: string
          example: splitName
          description: >-
            Only allowed value is 'splitName'. Used to have 2 booking fields —
            one for first name and one for last name.
        firstNameLabel:
          type: string
        firstNamePlaceholder:
          type: string
        lastNameLabel:
          type: string
        lastNamePlaceholder:
          type: string
        lastNameRequired:
          type: boolean
          description: >-
            Whether the last name sub-field is required. The first name
            sub-field is always required and cannot be configured.
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `?name=John%20Doe`,    the
            first name and last name fields will be prefilled with these values
            and disabled.    The value may also be a JSON object such as
            `{"firstName":"John","lastName":"Doe"}`.
      required:
        - field
        - variant
    SystemEmailFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: email
          description: Only allowed value is 'email'.
        slug:
          type: string
          example: email
          description: Only allowed value is 'email'.
        label:
          type: string
        required:
          type: boolean
          description: >-
            To enable phone-only bookings, set this to false and hidden to true,
            then pass an attendeePhoneNumber default booking field with
            required: true and hidden: false.
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `&email=bob@gmail.com`,   
            the email field will be prefilled with this value and disabled.
        excludeEmails:
          description: >-
            Bookers whose email matches an entry cannot book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
        requireEmails:
          description: >-
            Only bookers whose email matches an entry can book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
      required:
        - field
    SystemLocationFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: location
          description: >-
            Only allowed value is 'location'. The Booker renders the location
            picker only when the event type has at least 2 location options.
        slug:
          type: string
          example: location
          description: Only allowed value is 'location'.
        label:
          type: string
      required:
        - field
    SystemTitleFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: title
          description: Only allowed value is 'title'.
        slug:
          type: string
          example: title
          description: Only allowed value is 'title'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `&title=journey`,    the
            title field will be prefilled with this value and disabled.
      required:
        - field
    SystemNotesFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: notes
          description: Only allowed value is 'notes'.
        slug:
          type: string
          example: notes
          description: Only allowed value is 'notes'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `&notes=bring notebook`,   
            the notes field will be prefilled with this value and disabled.
      required:
        - field
    SystemGuestsFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: guests
          description: Only allowed value is 'guests'.
        slug:
          type: string
          example: guests
          description: Only allowed value is 'guests'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter `&guests=bob@cal.com`,   
            the guests field will be prefilled with this value and disabled.
      required:
        - field
    SystemRescheduleReasonFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: rescheduleReason
          description: Only allowed value is 'rescheduleReason'.
        slug:
          type: string
          example: rescheduleReason
          description: Only allowed value is 'rescheduleReason'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter
            `&rescheduleReason=travel`,    the rescheduleReason field will be
            prefilled with this value and disabled.
      required:
        - field
    SystemAttendeePhoneFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: attendeePhoneNumber
          description: Only allowed value is 'attendeePhoneNumber'.
        slug:
          type: string
          example: attendeePhoneNumber
          description: Only allowed value is 'attendeePhoneNumber'.
        required:
          type: boolean
          description: >-
            To enable email-only bookings, set this to false and hidden to true,
            then pass an email default booking field with required: true and
            hidden: false.
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if URL contains query parameter
            `&attendeePhoneNumber=+37122222222`,    the phone field will be
            prefilled with this value and disabled.
      required:
        - field
    SystemSmsReminderFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: smsReminderNumber
          description: >-
            Only allowed value is 'smsReminderNumber'. This field is added
            automatically by an SMS workflow. It may be echoed from a GET
            response in create, update, or replace bodies, but the API ignores
            it; targeted PATCH and DELETE operations reject it.
        slug:
          type: string
          example: smsReminderNumber
          description: Only allowed value is 'smsReminderNumber'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.
      required:
        - field
    SystemAiAgentPhoneFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: aiAgentCallPhoneNumber
          description: >-
            Only allowed value is 'aiAgentCallPhoneNumber'. This field is added
            automatically by an AI-agent workflow. It may be echoed from a GET
            response in create, update, or replace bodies, but the API ignores
            it; targeted PATCH and DELETE operations reject it.
        slug:
          type: string
          example: aiAgentCallPhoneNumber
          description: Only allowed value is 'aiAgentCallPhoneNumber'.
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.
      required:
        - field
    CustomEmailFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: email
          description: Only allowed value is 'email'.
        excludeEmails:
          description: >-
            Bookers whose email matches an entry cannot book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
        requireEmails:
          description: >-
            Only bookers whose email matches an entry can book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
      required:
        - field
        - slug
        - label
        - type
    CustomPhoneFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: phone
          description: Only allowed value is 'phone'.
      required:
        - field
        - slug
        - label
        - type
    CustomAddressFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: address
          description: Only allowed value is 'address'.
      required:
        - field
        - slug
        - label
        - type
    CustomShortTextFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: shortText
          description: Only allowed value is 'shortText'.
      required:
        - field
        - slug
        - label
        - type
    CustomNumberFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: number
          description: Only allowed value is 'number'.
      required:
        - field
        - slug
        - label
        - type
    CustomLongTextFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: longText
          description: Only allowed value is 'longText'.
        minLength:
          type: number
          minimum: 0
          maximum: 1000
          description: >-
            Minimum character length for the long text field. Defaults to 0 if
            not provided.
        maxLength:
          type: number
          minimum: 0
          maximum: 1000
          description: >-
            Maximum character length for the long text field. Defaults to 1000
            if not provided.
      required:
        - field
        - slug
        - label
        - type
    CustomSelectFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: select
          description: Only allowed value is 'select'.
      required:
        - field
        - slug
        - label
        - options
        - type
    CustomMultiSelectFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: multiSelect
          description: Only allowed value is 'multiSelect'.
      required:
        - field
        - slug
        - label
        - options
        - type
    CustomMultiEmailFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: multiEmail
          description: Only allowed value is 'multiEmail'.
      required:
        - field
        - slug
        - label
        - type
    CustomCheckboxGroupFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: checkboxGroup
          description: Only allowed value is 'checkboxGroup'.
      required:
        - field
        - slug
        - label
        - options
        - type
    CustomCheckboxFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: checkbox
          description: Only allowed value is 'checkbox'.
      required:
        - field
        - slug
        - label
        - type
    CustomRadioGroupFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: radioGroup
          description: Only allowed value is 'radioGroup'.
      required:
        - field
        - slug
        - label
        - options
        - type
    CustomUrlFieldInput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Must be 'custom' for all custom booking fields.
        slug:
          type: string
          description: >-
            Unique identifier for the field, e.g. `some-slug`. Can contain
            letters, numbers, hyphens, and underscores.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: url
          description: Only allowed value is 'url'.
      required:
        - field
        - slug
        - label
        - type
    EventHostInput:
      type: object
      properties:
        userId:
          type: number
          minimum: 1
          example: 123
      required:
        - userId
    EventLiveStreamInput:
      type: object
      properties:
        url:
          type: string
          description: Where people can watch the event live.
          maxLength: 2048
      required:
        - url
    EventAddressLocationInput:
      type: object
      properties:
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          minimum: 1
          description: Price for this location, in the currency's smallest unit.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: Cal Pay currency code. Required when `price` is set.
          example: usd
        capacity:
          type: number
          minimum: 1
          description: >-
            Seats at this location. Omit for unlimited. All locations together
            can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: address
          enum:
            - address
        address:
          type: string
          minLength: 1
          example: 1 Example Street, Berlin
      required:
        - type
        - address
    EventLinkLocationInput:
      type: object
      properties:
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          minimum: 1
          description: Price for this location, in the currency's smallest unit.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: Cal Pay currency code. Required when `price` is set.
          example: usd
        capacity:
          type: number
          minimum: 1
          description: >-
            Seats at this location. Omit for unlimited. All locations together
            can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: link
          enum:
            - link
        link:
          type: string
          format: uri
          example: https://example.com/watch
      required:
        - type
        - link
    EventIntegrationLocationInput:
      type: object
      properties:
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          minimum: 1
          description: Price for this location, in the currency's smallest unit.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: Cal Pay currency code. Required when `price` is set.
          example: usd
        capacity:
          type: number
          minimum: 1
          description: >-
            Seats at this location. Omit for unlimited. All locations together
            can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: integration
          enum:
            - integration
        integration:
          enum:
            - cal-video
            - google-meet
            - zoom
            - whereby-video
            - whatsapp-video
            - webex-video
            - telegram-video
            - tandem
            - sylaps-video
            - skype-video
            - sirius-video
            - signal-video
            - shimmer-video
            - salesroom-video
            - roam-video
            - riverside-video
            - ping-video
            - office365-video
            - mirotalk-video
            - jitsi
            - jelly-video
            - jelly-conferencing
            - huddle
            - facetime-video
            - element-call-video
            - eightxeight-video
            - discord-video
            - demodesk-video
            - campfire-video
          type: string
          example: cal-video
        credentialId:
          type: number
          description: >-
            Identifies which connected account will host the Event when a host
            has multiple connected accounts.
      required:
        - type
        - integration
    EventOrganizersDefaultAppLocationInput:
      type: object
      properties:
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          minimum: 1
          description: Price for this location, in the currency's smallest unit.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: Cal Pay currency code. Required when `price` is set.
          example: usd
        capacity:
          type: number
          minimum: 1
          description: >-
            Seats at this location. Omit for unlimited. All locations together
            can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: organizersDefaultApp
          enum:
            - organizersDefaultApp
      required:
        - type
    EventOutputDto:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier of the Event.
        slug:
          type: string
        title:
          type: string
        description:
          type: string
          nullable: true
        startTime:
          format: date-time
          type: string
        endTime:
          format: date-time
          type: string
        checkInOpensAt:
          format: date-time
          type: string
          description: >-
            When hosts can start checking guests in: 12 hours before
            `startTime`.
        checkInClosesAt:
          format: date-time
          type: string
          description: 'When check-in closes: 12 hours after `endTime`.'
        timeZone:
          type: string
        visibility:
          enum:
            - PUBLIC
            - UNLISTED
          type: string
        category:
          enum:
            - meetup
            - conference
            - music
            - sports
          type: string
          description: What kind of event it is.
        hidden:
          type: boolean
        publishedAt:
          format: date-time
          type: string
          nullable: true
        cancelledAt:
          format: date-time
          type: string
          nullable: true
        status:
          enum:
            - draft
            - published
            - cancelled
          type: string
          description: >-
            Lifecycle status that summarises hidden, publishedAt and
            cancelledAt: cancelled when the Event was cancelled, published once
            published, draft otherwise.
        locations:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/EventAddressLocationOutput'
                title: Address
              - $ref: '#/components/schemas/EventLinkLocationOutput'
                title: Link
              - $ref: '#/components/schemas/EventIntegrationLocationOutput'
                title: Integration
              - $ref: '#/components/schemas/EventOrganizersDefaultAppLocationOutput'
                title: Organizer Default App
              - $ref: '#/components/schemas/EventUnknownLocationOutput'
                title: Unknown
        coverImageUrl:
          type: string
          nullable: true
        requiresApproval:
          type: boolean
        paymentTimeoutMinutes:
          type: number
          nullable: true
          description: >-
            How many minutes a guest's seat is held while they pay. null uses
            the default of 10 minutes.
        waitlistEnabled:
          type: boolean
          description: >-
            Whether guests can join a waitlist when the Event is full. The
            waitlist only opens when the Event or the chosen location is full,
            so it only works when capacity is set on the Event or on a location.
        showOrganizerEmail:
          type: boolean
          description: Whether guests can see the organizer's email.
        guestList:
          enum:
            - hidden
            - names
            - count
          type: string
          description: >-
            Who guests can see on the Event's page: their names, only the count,
            or neither.
        showPresentedBy:
          type: boolean
          description: Whether the Event shows who it is presented by.
        confirmedCount:
          type: number
          description: >-
            Confirmed guest count. Returned when listing Events and omitted when
            fetching a single Event by uuid.
        liveStreams:
          description: Links where people can watch the event live, in display order.
          type: array
          items:
            $ref: '#/components/schemas/EventLiveStreamOutput'
        theme:
          nullable: true
          enum:
            - light
            - dark
          type: string
          description: >-
            Default theme of the event page; null follows the visitor's system
            setting.
        poster:
          nullable: true
          description: >-
            Poster cover design. The web app draws `coverImageUrl` from it. null
            when the cover is an uploaded image.
          type: object
          allOf:
            - $ref: '#/components/schemas/EventPosterOutput'
        lineup:
          nullable: true
          description: >-
            Speakers or performers on the event page. Returned on single-Event
            responses, not on Event lists.
          type: object
          allOf:
            - $ref: '#/components/schemas/EventLineupOutput'
        schedule:
          nullable: true
          description: >-
            Agenda on the event page. Returned on single-Event responses, not on
            Event lists.
          type: array
          items:
            $ref: '#/components/schemas/EventScheduleItemOutput'
        background:
          nullable: true
          description: Animated background of the event page.
          type: object
          allOf:
            - $ref: '#/components/schemas/EventBackgroundOutput'
        registrationFields:
          type: array
          description: >-
            Questions guests answer when registering. Always includes name and
            email.
          items:
            discriminator:
              propertyName: field
            oneOf:
              - title: Default Name
                discriminator:
                  propertyName: variant
                oneOf:
                  - $ref: '#/components/schemas/SystemFullNameFieldOutput_2026_06_12'
                    title: Default Full Name
                  - $ref: '#/components/schemas/SystemSplitNameFieldOutput_2026_06_12'
                    title: Default Split Name
              - $ref: '#/components/schemas/SystemEmailFieldOutput_2026_06_12'
                title: Default Email
              - $ref: '#/components/schemas/SystemLocationFieldOutput_2026_06_12'
                title: Default Location
              - $ref: '#/components/schemas/SystemTitleFieldOutput_2026_06_12'
                title: Default Title
              - $ref: '#/components/schemas/SystemNotesFieldOutput_2026_06_12'
                title: Default Notes
              - $ref: '#/components/schemas/SystemGuestsFieldOutput_2026_06_12'
                title: Default Guests
              - $ref: >-
                  #/components/schemas/SystemRescheduleReasonFieldOutput_2026_06_12
                title: Default Reschedule Reason
              - $ref: '#/components/schemas/SystemAttendeePhoneFieldOutput_2026_06_12'
                title: Default Attendee Phone
              - $ref: '#/components/schemas/SystemSmsReminderFieldOutput_2026_06_12'
                title: Workflow-added SMS Reminder
              - $ref: '#/components/schemas/SystemAiAgentPhoneFieldOutput_2026_06_12'
                title: Workflow-added AI Agent Phone
              - title: Custom Booking Field
                discriminator:
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/CustomEmailFieldOutput_2026_06_12'
                    title: Custom Email
                  - $ref: '#/components/schemas/CustomPhoneFieldOutput_2026_06_12'
                    title: Custom Phone
                  - $ref: '#/components/schemas/CustomAddressFieldOutput_2026_06_12'
                    title: Custom Address
                  - $ref: '#/components/schemas/CustomShortTextFieldOutput_2026_06_12'
                    title: Custom Short Text
                  - $ref: '#/components/schemas/CustomNumberFieldOutput_2026_06_12'
                    title: Custom Number
                  - $ref: '#/components/schemas/CustomLongTextFieldOutput_2026_06_12'
                    title: Custom Long Text
                  - $ref: '#/components/schemas/CustomSelectFieldOutput_2026_06_12'
                    title: Custom Select
                  - $ref: >-
                      #/components/schemas/CustomMultiSelectFieldOutput_2026_06_12
                    title: Custom Multi-Select
                  - $ref: >-
                      #/components/schemas/CustomMultiEmailFieldOutput_2026_06_12
                    title: Custom Multiple Emails
                  - $ref: >-
                      #/components/schemas/CustomCheckboxGroupFieldOutput_2026_06_12
                    title: Custom Checkbox Group
                  - $ref: >-
                      #/components/schemas/CustomRadioGroupFieldOutput_2026_06_12
                    title: Custom Radio Group
                  - $ref: '#/components/schemas/CustomCheckboxFieldOutput_2026_06_12'
                    title: Custom Checkbox
                  - $ref: '#/components/schemas/CustomUrlFieldOutput_2026_06_12'
                    title: Custom URL
              - $ref: '#/components/schemas/UnknownBookingFieldOutput_2026_06_12'
                title: Unknown Booking Field
        hosts:
          description: >-
            Ordered host roster, creator first. External co-hosts are not
            included.
          type: array
          items:
            $ref: '#/components/schemas/EventHostOutput'
        capacity:
          type: number
          nullable: true
          description: >-
            The most guests the Event can take; null when unlimited. Once any
            location has its own `capacity`, this is the sum of the location
            capacities, or null if any location has none. The waitlist only
            opens when the Event or the chosen location is full, so it only
            works when capacity is set on the Event or on a location.
          example: 100
        cancellationReason:
          type: string
          nullable: true
        userId:
          type: number
          nullable: true
          description: Owner user id for a personal Event; null for a team-owned one.
        teamId:
          type: number
          nullable: true
          description: Owning team id for a team-owned Event; null for a personal one.
      required:
        - uuid
        - slug
        - title
        - startTime
        - endTime
        - checkInOpensAt
        - checkInClosesAt
        - timeZone
        - visibility
        - category
        - hidden
        - status
        - locations
        - requiresApproval
        - waitlistEnabled
        - showOrganizerEmail
        - guestList
        - showPresentedBy
        - liveStreams
        - registrationFields
        - hosts
    EventLineupPersonInput:
      type: object
      properties:
        name:
          type: string
          pattern: \S
        role:
          type: string
          nullable: true
          description: Shown under the person's name, e.g. their job title or act.
        avatarUrl:
          type: string
          nullable: true
          description: >-
            Avatar for this person. Must be a Cal Event media URL returned by
            the person avatar endpoint.
        links:
          maxItems: 5
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonLinkInput'
        media:
          description: >-
            Spotify, YouTube or SoundCloud links, shown as players with the
            person.
          maxItems: 6
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonMediaInput'
      required:
        - name
    EventSchedulePersonInput:
      type: object
      properties:
        name:
          type: string
          pattern: \S
        role:
          type: string
          nullable: true
        avatarUrl:
          type: string
          nullable: true
          description: >-
            Avatar for this person. Must be a Cal Event media URL returned by
            the person avatar endpoint.
        links:
          maxItems: 5
          type: array
          items:
            $ref: '#/components/schemas/EventSchedulePersonLinkInput'
      required:
        - name
    EventAddressLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: address
          enum:
            - address
        address:
          type: string
          example: 123 Event Street
      required:
        - id
        - price
        - currency
        - type
        - address
    EventLinkLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: link
          enum:
            - link
        link:
          type: string
          example: https://example.com/event
      required:
        - id
        - price
        - currency
        - type
        - link
    EventIntegrationLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: integration
          enum:
            - integration
        integration:
          type: string
          description: >-
            The integration's API name, e.g. `zoom` or `google-meet`. An app
            without an API name is returned with its stored type, e.g.
            `integrations:dialpad_video`.
          example: zoom
        credentialId:
          type: number
          description: >-
            Identifies which connected account will host the Event when a host
            has multiple connected accounts.
      required:
        - id
        - price
        - currency
        - type
        - integration
    EventOrganizersDefaultAppLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: organizersDefaultApp
          enum:
            - organizersDefaultApp
      required:
        - id
        - price
        - currency
        - type
    EventUnknownLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: unknown
          enum:
            - unknown
        location:
          type: string
          description: >-
            The stored location as JSON, for a location this API version can't
            represent. Remove it with `DELETE
            /v2/events/{uuid}/locations/{locationId}`.
      required:
        - id
        - price
        - currency
        - type
        - location
    EventLiveStreamOutput:
      type: object
      properties:
        url:
          type: string
          description: Where people can watch the event live.
      required:
        - url
    EventPosterOutput:
      type: object
      properties:
        layout:
          enum:
            - date
            - bauhaus
            - rings
            - waves
            - halftone
            - split
          type: string
        palette:
          $ref: '#/components/schemas/EventPosterPaletteOutput'
        headline:
          type: string
          nullable: true
        seed:
          type: number
      required:
        - layout
        - palette
        - headline
        - seed
    EventLineupOutput:
      type: object
      properties:
        title:
          type: string
          nullable: true
        people:
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonOutput'
      required:
        - title
        - people
    EventScheduleItemOutput:
      type: object
      properties:
        startTime:
          format: date-time
          type: string
          nullable: true
        endTime:
          format: date-time
          type: string
          nullable: true
        timeLabel:
          type: string
          nullable: true
        content:
          type: string
        people:
          type: array
          items:
            $ref: '#/components/schemas/EventSchedulePersonOutput'
      required:
        - startTime
        - endTime
        - timeLabel
        - content
        - people
    EventBackgroundOutput:
      type: object
      properties:
        effect:
          enum:
            - aurora
            - tide
            - satin
            - resonance
            - veil
            - facet
            - lumen
            - contour
            - recess
            - halftone
            - strata
          type: string
        colors:
          type: array
          items:
            type: string
      required:
        - effect
        - colors
    SystemFullNameFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: name
          description: Identifies this as the name default booking field.
        slug:
          type: string
          example: name
          description: The default name field always uses `name` as its slug.
        variant:
          type: string
          example: fullName
          enum:
            - fullName
          description: Single full-name input variant.
        label:
          type: string
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
      required:
        - field
        - slug
        - variant
        - disableOnPrefill
    SystemSplitNameFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: name
          description: Identifies this as the name default booking field.
        slug:
          type: string
          example: name
          description: The default name field always uses `name` as its slug.
        variant:
          type: string
          example: splitName
          enum:
            - splitName
          description: >-
            The booking page displays separate fields for the attendee's first
            and last names.
        firstNameLabel:
          type: string
        firstNamePlaceholder:
          type: string
        lastNameLabel:
          type: string
        lastNamePlaceholder:
          type: string
        lastNameRequired:
          type: boolean
          description: Whether the last name sub-field is required.
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
      required:
        - field
        - slug
        - variant
        - lastNameRequired
        - disableOnPrefill
    SystemEmailFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: email
          description: Identifies this as the email default booking field.
        slug:
          type: string
          example: email
          description: The default email field always uses `email` as its slug.
        excludeEmails:
          description: >-
            Bookers whose email matches an entry cannot book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
        requireEmails:
          description: >-
            Only bookers whose email matches an entry can book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemLocationFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: location
          description: >-
            Identifies this as the location default booking field. The Booker
            renders the location picker only when the event type has at least 2
            location options.
        slug:
          type: string
          example: location
          description: The default location field always uses `location` as its slug.
        label:
          type: string
          example: Your location default field label
      required:
        - field
        - slug
    SystemTitleFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: title
          description: Identifies this as the title default booking field.
        slug:
          type: string
          example: title
          description: The default booking title field always uses `title` as its slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemNotesFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: notes
          description: Identifies this as the notes default booking field.
        slug:
          type: string
          example: notes
          description: The default additional-notes field always uses `notes` as its slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemGuestsFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: guests
          description: Identifies this as the guests default booking field.
        slug:
          type: string
          example: guests
          description: >-
            The default additional-guests field always uses `guests` as its
            slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemRescheduleReasonFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: rescheduleReason
          description: Identifies this as the reschedule reason default booking field.
        slug:
          type: string
          example: rescheduleReason
          description: >-
            The default reschedule-reason field always uses `rescheduleReason`
            as its slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemAttendeePhoneFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: attendeePhoneNumber
          description: Identifies this as the attendee phone number default booking field.
        slug:
          type: string
          example: attendeePhoneNumber
          description: >-
            The default attendee phone field always uses `attendeePhoneNumber`
            as its slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemSmsReminderFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: smsReminderNumber
          description: Phone-number field added automatically by an SMS workflow.
        slug:
          type: string
          example: smsReminderNumber
          description: >-
            This workflow-added field always uses `smsReminderNumber` as its
            slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    SystemAiAgentPhoneFieldOutput_2026_06_12:
      type: object
      properties:
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        label:
          type: string
          example: Your default field label
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        field:
          type: string
          example: aiAgentCallPhoneNumber
          description: Phone-number field added automatically by an AI-agent workflow.
        slug:
          type: string
          example: aiAgentCallPhoneNumber
          description: >-
            This workflow-added field always uses `aiAgentCallPhoneNumber` as
            its slug.
      required:
        - required
        - hidden
        - disableOnPrefill
        - field
        - slug
    CustomEmailFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: email
          enum:
            - email
          description: An email input on the booking page.
        excludeEmails:
          description: >-
            Bookers whose email matches an entry cannot book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
        requireEmails:
          description: >-
            Only bookers whose email matches an entry can book. Entries may be a
            bare domain (`example.com`), a domain with `@` (`@example.com`), or
            an exact address (`person@example.com`). Matching is
            case-insensitive.
          type: array
          items:
            type: string
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomPhoneFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: phone
          enum:
            - phone
          description: A phone-number input on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomAddressFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: address
          enum:
            - address
          description: An address input on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomShortTextFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: shortText
          enum:
            - shortText
          description: A single-line text input on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomNumberFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: number
          enum:
            - number
          description: A number input on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomLongTextFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: longText
          enum:
            - longText
          description: A multi-line text input on the booking page.
        minLength:
          type: number
          description: Minimum character length for the long text field.
        maxLength:
          type: number
          description: Maximum character length for the long text field.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomSelectFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: select
          enum:
            - select
          description: A dropdown that allows one selection.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - options
        - type
    CustomMultiSelectFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: multiSelect
          enum:
            - multiSelect
          description: A list that allows multiple selections.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - options
        - type
    CustomMultiEmailFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: multiEmail
          enum:
            - multiEmail
          description: An input that accepts multiple email addresses.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomCheckboxGroupFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: checkboxGroup
          enum:
            - checkboxGroup
          description: A group of checkboxes that allows multiple selections.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - options
        - type
    CustomRadioGroupFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        options:
          example:
            - Option 1
            - Option 2
          type: array
          items:
            type: string
        type:
          type: string
          example: radioGroup
          enum:
            - radioGroup
          description: A group of radio buttons that allows one selection.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - options
        - type
    CustomCheckboxFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: checkbox
          enum:
            - checkbox
          description: A single checkbox on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    CustomUrlFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: custom
          description: Identifies this as a custom booking field.
        slug:
          type: string
          description: Unique slug identifier for this custom field.
          example: some-slug
        label:
          type: string
          example: Your custom field label
        required:
          type: boolean
        hidden:
          type: boolean
          description: >-
            Hide this booking field from the booking page while keeping it in
            the event type's settings. Hidden fields are only returned to
            callers authorized on the event type.
        placeholder:
          type: string
        disableOnPrefill:
          type: boolean
          description: >-
            Disable this booking field if the URL contains query parameter with
            key equal to the slug and prefill it with the provided value.    For
            example, if the slug is `my-field` and the URL contains
            `&my-field=value`,    the field will be prefilled with this value
            and disabled.
        type:
          type: string
          example: url
          enum:
            - url
          description: A URL input on the booking page.
      required:
        - field
        - slug
        - label
        - required
        - hidden
        - disableOnPrefill
        - type
    UnknownBookingFieldOutput_2026_06_12:
      type: object
      properties:
        field:
          type: string
          example: unknown
          enum:
            - unknown
        slug:
          type: string
          example: unknown
          enum:
            - unknown
        bookingField:
          type: string
          description: Raw booking-field data that this API version does not recognize.
      required:
        - field
        - slug
        - bookingField
    EventHostOutput:
      type: object
      properties:
        userId:
          type: number
          example: 123
        name:
          type: string
          example: Jane Doe
          description: Empty string when the host has no name.
        username:
          type: string
          example: jane
          description: Empty string when the host has no username.
        avatarUrl:
          type: string
          description: Empty string when the host has no avatar.
      required:
        - userId
        - name
        - username
        - avatarUrl
    EventLineupPersonLinkInput:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    EventLineupPersonMediaInput:
      type: object
      properties:
        url:
          type: string
        label:
          type: string
          nullable: true
      required:
        - url
    EventSchedulePersonLinkInput:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    EventPosterPaletteOutput:
      type: object
      properties:
        background:
          type: string
          description: Background hex color.
          example: '#0b1c2c'
        foreground:
          type: string
          description: Foreground hex color.
          example: '#a5d8ff'
        accent:
          type: string
          description: Accent hex color.
          example: '#1f6feb'
      required:
        - background
        - foreground
        - accent
    EventLineupPersonOutput:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
          nullable: true
        avatarUrl:
          type: string
          nullable: true
        links:
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonLinkOutput'
        media:
          type: array
          items:
            $ref: '#/components/schemas/EventLineupPersonMediaOutput'
      required:
        - name
        - role
        - avatarUrl
        - links
        - media
    EventSchedulePersonOutput:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
          nullable: true
        avatarUrl:
          type: string
          nullable: true
        links:
          type: array
          items:
            $ref: '#/components/schemas/EventSchedulePersonLinkOutput'
      required:
        - name
        - role
        - avatarUrl
        - links
    EventLineupPersonLinkOutput:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    EventLineupPersonMediaOutput:
      type: object
      properties:
        url:
          type: string
        label:
          type: string
          nullable: true
      required:
        - url
        - label
    EventSchedulePersonLinkOutput:
      type: object
      properties:
        url:
          type: string
      required:
        - url

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.