openapi: 3.2.0 info: title: Cal.com API v2 Links API description: '' version: 1.0.0 contact: {} servers: [] tags: - name: Links paths: /v2/links/{linkUid}: get: description: Returns hidden booking fields only to callers who are allowed to view them. If accessed using an OAuth access token, the `EVENT_TYPE_READ` scope is required. operationId: LinksController_getLink parameters: - name: linkUid required: true in: path description: Link UUID. Accepts the canonical UUID (e.g. `018ff5cd-6dc4-7d57-bcbc-374702ca8b38`) or its short-uuid (Flickr Base58) form (e.g. `1cbZYoAFoJdwqN4tixezd5`). schema: type: string - name: Authorization in: header description: value must be `Bearer ` where `` is api key prefixed with cal_, managed user access token, or OAuth access token required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetLinkOutput' '400': description: Invalid link UUID '404': description: Link not found summary: Get a link tags: - Links x-oauth-scopes: - EVENT_TYPE_READ components: schemas: 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 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 Recurrence_2024_06_14: type: object properties: interval: type: number example: 1 description: Repeats every {count} week | month | year minimum: 1 maximum: 20 occurrences: type: number example: 10 description: Repeats for a maximum of {count} events minimum: 1 maximum: 32 frequency: enum: - yearly - monthly - weekly type: string disabled: type: boolean default: false required: - interval - occurrences - frequency 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 RangeWindow_2024_06_14: type: object properties: type: type: string enum: - businessDays - calendarDays - range description: Whether the window should be business days, calendar days or a range of dates value: minItems: 1 example: - '2030-09-05' - '2030-09-09' description: Date range for when this event can be booked. type: array items: type: string disabled: type: boolean default: false required: - type - value 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 TeamLinkOutput: type: object properties: lengthInMinutes: type: number example: 60 lengthInMinutesOptions: example: - 15 - 30 - 60 description: If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`. type: array items: type: number title: type: string example: Learn the secrets of masterchief! slug: type: string example: learn-the-secrets-of-masterchief description: type: string example: Discover the culinary wonders of Argentina by making the best flan ever! locations: type: array items: oneOf: - title: Address $ref: '#/components/schemas/OutputAddressLocation_2024_06_14' - title: Link $ref: '#/components/schemas/OutputLinkLocation_2024_06_14' - title: Integration $ref: '#/components/schemas/OutputIntegrationLocation_2024_06_14' - title: Phone $ref: '#/components/schemas/OutputPhoneLocation_2024_06_14' - title: Organizer Default App $ref: '#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14' - title: Unknown $ref: '#/components/schemas/OutputUnknownLocation_2024_06_14' disableGuests: type: boolean slotInterval: type: - number - 'null' example: 60 minimumBookingNotice: type: number example: 0 beforeEventBuffer: type: number example: 0 afterEventBuffer: type: number example: 0 recurrence: type: - object - 'null' allOf: - $ref: '#/components/schemas/Recurrence_2024_06_14' metadata: type: object readOnly: true price: type: number currency: type: string lockTimeZoneToggleOnBookingPage: type: boolean seatsPerTimeSlot: type: - number - 'null' forwardParamsSuccessRedirect: type: - boolean - 'null' successRedirectUrl: type: - string - 'null' isInstantEvent: type: boolean seatsShowAvailabilityCount: type: - boolean - 'null' scheduleId: type: - number - 'null' bookingLimitsCount: oneOf: - title: Booking Count Limit $ref: '#/components/schemas/BaseBookingLimitsCount_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookerActiveBookingsLimit: $ref: '#/components/schemas/BookerActiveBookingsLimitOutput_2024_06_14' onlyShowFirstAvailableSlot: type: boolean bookingLimitsDuration: oneOf: - title: Booking Duration Limit $ref: '#/components/schemas/BaseBookingLimitsDuration_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookingWindow: type: array description: Limit how far in the future this event can be booked items: oneOf: - title: Business Days $ref: '#/components/schemas/BusinessDaysWindow_2024_06_14' - title: Calendar Days $ref: '#/components/schemas/CalendarDaysWindow_2024_06_14' - title: Date Range $ref: '#/components/schemas/RangeWindow_2024_06_14' bookerLayouts: $ref: '#/components/schemas/BookerLayouts_2024_06_14' confirmationPolicy: oneOf: - title: Confirmation Required $ref: '#/components/schemas/BaseConfirmationPolicy_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookingProposalCount: type: - number - 'null' description: Maximum number of timeslots a proposal may include. The client chooses from 1 through this maximum. Null uses the default single-slot booking flow. requiresBookerEmailVerification: type: boolean skipAttendeeEmailDeliverabilityCheck: type: boolean description: When true, the MX deliverability check for attendee emails is skipped on booking. Format validation and watchlist still apply. Org-only (including platform orgs). emailSettings: description: Email settings for this event type. Personal event types require an accepted organization membership; team event types require an organization team. This does not include emails sent by custom email workflows. allOf: - $ref: '#/components/schemas/EmailSettings_2024_06_14' hideCalendarNotes: type: boolean color: $ref: '#/components/schemas/EventTypeColor_2024_06_14' seats: $ref: '#/components/schemas/Seats_2024_06_14' offsetStart: type: number customName: type: string destinationCalendar: $ref: '#/components/schemas/DestinationCalendar_2024_06_14' useDestinationCalendarEmail: type: boolean hideCalendarEventDetails: type: boolean hideOrganizerEmail: type: boolean description: Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events calVideoSettings: description: Cal video settings for the event type allOf: - $ref: '#/components/schemas/CalVideoSettings' hidden: type: boolean bookingRequiresAuthentication: type: boolean description: Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type. disableCancelling: description: Settings for disabling cancelling of this event type. allOf: - $ref: '#/components/schemas/DisableCancellingOutput_2024_06_14' disableRescheduling: description: Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting. allOf: - $ref: '#/components/schemas/DisableReschedulingOutput_2024_06_14' interfaceLanguage: type: - string - 'null' description: Set preferred language for the booking interface. weekStart: type: - string - 'null' description: Day the booking page calendar starts the week on. Overrides the host's account setting for this event type only. allowReschedulingPastBookings: type: boolean description: Enabling this option allows for past events to be rescheduled. allowReschedulingCancelledBookings: type: - boolean - 'null' description: When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking. showOptimizedSlots: type: - boolean - 'null' description: Arrange time slots to optimize availability. useIsolatedAvailability: type: boolean description: When true, only this event type's own Cal.com bookings block the slot. The availability schedule and connected calendars still apply. Same as "Consider only this booking link's bookings" in the web app. Requires an organization with at least 15 members. privateNoteEnabled: type: boolean description: When enabled, a private note calendar event is created alongside the booking with the resolved template as its description. Only visible to the host. privateNoteMode: description: 'How private notes are delivered: as an additional host event or by sending separate host and guest invites.' allOf: - $ref: '#/components/schemas/PrivateNoteMode' privateNoteTemplate: type: - string - 'null' description: Template for the private note content. Supports variables like {Attendee name}, {Link title}, {Event type title} (legacy), {Location}, {Host name}, {Event duration}, and custom booking field names. teamId: type: number bookingUrl: type: - string - 'null' description: Full URL to the booking page for this team event type. Null for managed team event types or when the team does not have a slug. example: https://cal.com/team/acme/30min format: uri ownerId: type: - number - 'null' hosts: type: array items: $ref: '#/components/schemas/TeamEventTypeResponseHost' assignAllTeamMembers: type: boolean schedulingType: enum: - roundRobin - collective - managed type: - string - 'null' team: $ref: '#/components/schemas/EventTypeTeam' rescheduleWithSameRoundRobinHost: type: boolean description: Rescheduled events will be assigned to the same host as initially scheduled. allowRRHostChoiceOnReschedule: type: boolean description: Let the person rescheduling choose between keeping the original host and letting round robin pick from the whole team. isRRWeightsEnabled: type: boolean description: Only relevant for round robin event types. If true, bookings are distributed according to each host's `weight` instead of evenly. bookingFields: type: array items: discriminator: propertyName: field oneOf: - title: Default Name discriminator: propertyName: variant oneOf: - title: Default Full Name $ref: '#/components/schemas/SystemFullNameFieldOutput_2026_06_12' - title: Default Split Name $ref: '#/components/schemas/SystemSplitNameFieldOutput_2026_06_12' - title: Default Email $ref: '#/components/schemas/SystemEmailFieldOutput_2026_06_12' - title: Default Location $ref: '#/components/schemas/SystemLocationFieldOutput_2026_06_12' - title: Default Title $ref: '#/components/schemas/SystemTitleFieldOutput_2026_06_12' - title: Default Notes $ref: '#/components/schemas/SystemNotesFieldOutput_2026_06_12' - title: Default Guests $ref: '#/components/schemas/SystemGuestsFieldOutput_2026_06_12' - title: Default Reschedule Reason $ref: '#/components/schemas/SystemRescheduleReasonFieldOutput_2026_06_12' - title: Default Attendee Phone $ref: '#/components/schemas/SystemAttendeePhoneFieldOutput_2026_06_12' - title: Workflow-added SMS Reminder $ref: '#/components/schemas/SystemSmsReminderFieldOutput_2026_06_12' - title: Workflow-added AI Agent Phone $ref: '#/components/schemas/SystemAiAgentPhoneFieldOutput_2026_06_12' - title: Custom Booking Field discriminator: propertyName: type oneOf: - title: Custom Email $ref: '#/components/schemas/CustomEmailFieldOutput_2026_06_12' - title: Custom Phone $ref: '#/components/schemas/CustomPhoneFieldOutput_2026_06_12' - title: Custom Address $ref: '#/components/schemas/CustomAddressFieldOutput_2026_06_12' - title: Custom Short Text $ref: '#/components/schemas/CustomShortTextFieldOutput_2026_06_12' - title: Custom Number $ref: '#/components/schemas/CustomNumberFieldOutput_2026_06_12' - title: Custom Long Text $ref: '#/components/schemas/CustomLongTextFieldOutput_2026_06_12' - title: Custom Select $ref: '#/components/schemas/CustomSelectFieldOutput_2026_06_12' - title: Custom Multi-Select $ref: '#/components/schemas/CustomMultiSelectFieldOutput_2026_06_12' - title: Custom Multiple Emails $ref: '#/components/schemas/CustomMultiEmailFieldOutput_2026_06_12' - title: Custom Checkbox Group $ref: '#/components/schemas/CustomCheckboxGroupFieldOutput_2026_06_12' - title: Custom Radio Group $ref: '#/components/schemas/CustomRadioGroupFieldOutput_2026_06_12' - title: Custom Checkbox $ref: '#/components/schemas/CustomCheckboxFieldOutput_2026_06_12' - title: Custom URL $ref: '#/components/schemas/CustomUrlFieldOutput_2026_06_12' - title: Unknown Booking Field $ref: '#/components/schemas/UnknownBookingFieldOutput_2026_06_12' description: The event type's default, custom, and workflow-added booking fields. crm: description: CRM app settings configured for this event type, mirroring the event type Apps tab toggles. allOf: - $ref: '#/components/schemas/CrmSettingsOutput_2026_06_12' uuid: type: string format: uuid example: 018ff5cd-6dc4-7d57-bcbc-374702ca8b38 parentLinkUid: type: - string - 'null' format: uuid description: The uuid of the managed parent link this link was created from. required: - lengthInMinutes - title - slug - description - locations - disableGuests - recurrence - metadata - price - currency - lockTimeZoneToggleOnBookingPage - forwardParamsSuccessRedirect - successRedirectUrl - isInstantEvent - scheduleId - hidden - bookingRequiresAuthentication - teamId - bookingUrl - hosts - schedulingType - team - bookingFields - crm - uuid - parentLinkUid 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 GetLinkOutput: type: object properties: status: type: string example: success enum: - success - error data: oneOf: - title: Link $ref: '#/components/schemas/LinkOutput' - title: Team Link $ref: '#/components/schemas/TeamLinkOutput' required: - status - data BookerActiveBookingsLimitOutput_2024_06_14: type: object properties: maximumActiveBookings: type: number minimum: 1 description: The maximum number of active bookings a booker can have for this event type. example: 3 offerReschedule: type: boolean description: Whether to offer rescheduling the last active booking to the chosen time slot when limit is reached. 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 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 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 DisableReschedulingOutput_2024_06_14: type: object properties: disabled: type: boolean description: If true, rescheduling is always disabled for this event type. example: true minutesBefore: type: number minimum: 1 description: Rescheduling is disabled when less than the specified number of minutes before the meeting. example: 60 LinkOutput: type: object properties: lengthInMinutes: type: number example: 60 lengthInMinutesOptions: example: - 15 - 30 - 60 description: If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`. type: array items: type: number title: type: string example: Learn the secrets of masterchief! slug: type: string example: learn-the-secrets-of-masterchief description: type: string example: Discover the culinary wonders of Argentina by making the best flan ever! locations: type: array items: oneOf: - title: Address $ref: '#/components/schemas/OutputAddressLocation_2024_06_14' - title: Link $ref: '#/components/schemas/OutputLinkLocation_2024_06_14' - title: Integration $ref: '#/components/schemas/OutputIntegrationLocation_2024_06_14' - title: Phone $ref: '#/components/schemas/OutputPhoneLocation_2024_06_14' - title: Organizer Default App $ref: '#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14' - title: Unknown $ref: '#/components/schemas/OutputUnknownLocation_2024_06_14' disableGuests: type: boolean slotInterval: type: - number - 'null' example: 60 minimumBookingNotice: type: number example: 0 beforeEventBuffer: type: number example: 0 afterEventBuffer: type: number example: 0 recurrence: type: - object - 'null' allOf: - $ref: '#/components/schemas/Recurrence_2024_06_14' metadata: type: object readOnly: true price: type: number currency: type: string lockTimeZoneToggleOnBookingPage: type: boolean seatsPerTimeSlot: type: - number - 'null' forwardParamsSuccessRedirect: type: - boolean - 'null' successRedirectUrl: type: - string - 'null' isInstantEvent: type: boolean seatsShowAvailabilityCount: type: - boolean - 'null' scheduleId: type: - number - 'null' bookingLimitsCount: oneOf: - title: Booking Count Limit $ref: '#/components/schemas/BaseBookingLimitsCount_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookerActiveBookingsLimit: $ref: '#/components/schemas/BookerActiveBookingsLimitOutput_2024_06_14' onlyShowFirstAvailableSlot: type: boolean bookingLimitsDuration: oneOf: - title: Booking Duration Limit $ref: '#/components/schemas/BaseBookingLimitsDuration_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookingWindow: type: array description: Limit how far in the future this event can be booked items: oneOf: - title: Business Days $ref: '#/components/schemas/BusinessDaysWindow_2024_06_14' - title: Calendar Days $ref: '#/components/schemas/CalendarDaysWindow_2024_06_14' - title: Date Range $ref: '#/components/schemas/RangeWindow_2024_06_14' bookerLayouts: $ref: '#/components/schemas/BookerLayouts_2024_06_14' confirmationPolicy: oneOf: - title: Confirmation Required $ref: '#/components/schemas/BaseConfirmationPolicy_2024_06_14' - title: Disabled $ref: '#/components/schemas/Disabled_2024_06_14' bookingProposalCount: type: - number - 'null' description: Maximum number of timeslots a proposal may include. The client chooses from 1 through this maximum. Null uses the default single-slot booking flow. requiresBookerEmailVerification: type: boolean skipAttendeeEmailDeliverabilityCheck: type: boolean description: When true, the MX deliverability check for attendee emails is skipped on booking. Format validation and watchlist still apply. Org-only (including platform orgs). emailSettings: description: Email settings for this event type. Personal event types require an accepted organization membership; team event types require an organization team. This does not include emails sent by custom email workflows. allOf: - $ref: '#/components/schemas/EmailSettings_2024_06_14' hideCalendarNotes: type: boolean color: $ref: '#/components/schemas/EventTypeColor_2024_06_14' seats: $ref: '#/components/schemas/Seats_2024_06_14' offsetStart: type: number customName: type: string destinationCalendar: $ref: '#/components/schemas/DestinationCalendar_2024_06_14' useDestinationCalendarEmail: type: boolean hideCalendarEventDetails: type: boolean hideOrganizerEmail: type: boolean description: Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events calVideoSettings: description: Cal video settings for the event type allOf: - $ref: '#/components/schemas/CalVideoSettings' hidden: type: boolean bookingRequiresAuthentication: type: boolean description: Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type. disableCancelling: description: Settings for disabling cancelling of this event type. allOf: - $ref: '#/components/schemas/DisableCancellingOutput_2024_06_14' disableRescheduling: description: Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting. allOf: - $ref: '#/components/schemas/DisableReschedulingOutput_2024_06_14' interfaceLanguage: type: - string - 'null' description: Set preferred language for the booking interface. weekStart: type: - string - 'null' description: Day the booking page calendar starts the week on. Overrides the host's account setting for this event type only. allowReschedulingPastBookings: type: boolean description: Enabling this option allows for past events to be rescheduled. allowReschedulingCancelledBookings: type: - boolean - 'null' description: When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking. showOptimizedSlots: type: - boolean - 'null' description: Arrange time slots to optimize availability. useIsolatedAvailability: type: boolean description: When true, only this event type's own Cal.com bookings block the slot. The availability schedule and connected calendars still apply. Same as "Consider only this booking link's bookings" in the web app. Requires an organization with at least 15 members. privateNoteEnabled: type: boolean description: When enabled, a private note calendar event is created alongside the booking with the resolved template as its description. Only visible to the host. privateNoteMode: description: 'How private notes are delivered: as an additional host event or by sending separate host and guest invites.' allOf: - $ref: '#/components/schemas/PrivateNoteMode' privateNoteTemplate: type: - string - 'null' description: Template for the private note content. Supports variables like {Attendee name}, {Link title}, {Event type title} (legacy), {Location}, {Host name}, {Event duration}, and custom booking field names. ownerId: type: number example: 10 users: type: array items: $ref: '#/components/schemas/User_2024_06_14' bookingUrl: type: string description: Full URL to the booking page for this event type example: https://cal.com/john-doe/30min format: uri bookingFields: type: array items: discriminator: propertyName: field oneOf: - title: Default Name discriminator: propertyName: variant oneOf: - title: Default Full Name $ref: '#/components/schemas/SystemFullNameFieldOutput_2026_06_12' - title: Default Split Name $ref: '#/components/schemas/SystemSplitNameFieldOutput_2026_06_12' - title: Default Email $ref: '#/components/schemas/SystemEmailFieldOutput_2026_06_12' - title: Default Location $ref: '#/components/schemas/SystemLocationFieldOutput_2026_06_12' - title: Default Title $ref: '#/components/schemas/SystemTitleFieldOutput_2026_06_12' - title: Default Notes $ref: '#/components/schemas/SystemNotesFieldOutput_2026_06_12' - title: Default Guests $ref: '#/components/schemas/SystemGuestsFieldOutput_2026_06_12' - title: Default Reschedule Reason $ref: '#/components/schemas/SystemRescheduleReasonFieldOutput_2026_06_12' - title: Default Attendee Phone $ref: '#/components/schemas/SystemAttendeePhoneFieldOutput_2026_06_12' - title: Workflow-added SMS Reminder $ref: '#/components/schemas/SystemSmsReminderFieldOutput_2026_06_12' - title: Workflow-added AI Agent Phone $ref: '#/components/schemas/SystemAiAgentPhoneFieldOutput_2026_06_12' - title: Custom Booking Field discriminator: propertyName: type oneOf: - title: Custom Email $ref: '#/components/schemas/CustomEmailFieldOutput_2026_06_12' - title: Custom Phone $ref: '#/components/schemas/CustomPhoneFieldOutput_2026_06_12' - title: Custom Address $ref: '#/components/schemas/CustomAddressFieldOutput_2026_06_12' - title: Custom Short Text $ref: '#/components/schemas/CustomShortTextFieldOutput_2026_06_12' - title: Custom Number $ref: '#/components/schemas/CustomNumberFieldOutput_2026_06_12' - title: Custom Long Text $ref: '#/components/schemas/CustomLongTextFieldOutput_2026_06_12' - title: Custom Select $ref: '#/components/schemas/CustomSelectFieldOutput_2026_06_12' - title: Custom Multi-Select $ref: '#/components/schemas/CustomMultiSelectFieldOutput_2026_06_12' - title: Custom Multiple Emails $ref: '#/components/schemas/CustomMultiEmailFieldOutput_2026_06_12' - title: Custom Checkbox Group $ref: '#/components/schemas/CustomCheckboxGroupFieldOutput_2026_06_12' - title: Custom Radio Group $ref: '#/components/schemas/CustomRadioGroupFieldOutput_2026_06_12' - title: Custom Checkbox $ref: '#/components/schemas/CustomCheckboxFieldOutput_2026_06_12' - title: Custom URL $ref: '#/components/schemas/CustomUrlFieldOutput_2026_06_12' - title: Unknown Booking Field $ref: '#/components/schemas/UnknownBookingFieldOutput_2026_06_12' description: The event type's booking fields — the default ones, any custom ones, and any added automatically by an attached workflow. crm: description: CRM app settings configured for this event type, mirroring the event type Apps tab toggles. allOf: - $ref: '#/components/schemas/CrmSettingsOutput_2026_06_12' uuid: type: string format: uuid example: 018ff5cd-6dc4-7d57-bcbc-374702ca8b38 parentLinkUid: type: - string - 'null' format: uuid description: The uuid of the managed parent link this link was created from. required: - lengthInMinutes - title - slug - description - locations - disableGuests - recurrence - metadata - price - currency - lockTimeZoneToggleOnBookingPage - forwardParamsSuccessRedirect - successRedirectUrl - isInstantEvent - scheduleId - hidden - bookingRequiresAuthentication - ownerId - users - bookingUrl - bookingFields - crm - uuid - parentLinkUid 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 BaseBookingLimitsCount_2024_06_14: type: object properties: day: type: number minimum: 1 description: The number of bookings per day example: 1 week: type: number minimum: 1 description: The number of bookings per week example: 2 month: type: number minimum: 1 description: The number of bookings per month example: 3 year: type: number minimum: 1 description: The number of bookings per year example: 4 OutputOrganizersDefaultAppLocation_2024_06_14: type: object properties: type: type: string example: organizersDefaultApp description: only allowed value for type is `organizersDefaultApp` required: - type OutputUnknownLocation_2024_06_14: type: object properties: type: type: string example: unknown description: only allowed value for type is `unknown` location: type: string required: - type - location 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 Seats_2024_06_14: type: object properties: seatsPerTimeSlot: type: number minimum: 1 description: Number of seats available per time slot example: 4 showAttendeeInfo: type: boolean description: Show attendee information to other guests example: true showAvailabilityCount: type: boolean description: Display the count of available seats example: true disabled: type: boolean default: false required: - seatsPerTimeSlot - showAttendeeInfo - showAvailabilityCount CrmSettingsOutput_2026_06_12: type: object properties: hubspot: description: HubSpot app settings for this event type. Present only when the app is configured. allOf: - $ref: '#/components/schemas/CrmAppSettingsOutput_2026_06_12' salesforce: description: Salesforce app settings for this event type. Present only when the app is configured. allOf: - $ref: '#/components/schemas/CrmAppSettingsOutput_2026_06_12' 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 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 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 OutputLinkLocation_2024_06_14: type: object properties: type: type: string example: link description: only allowed value for type is `link` link: type: string format: uri example: https://customvideo.com/join/123456 public: type: boolean required: - type - link - public 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 CrmAppSettingsOutput_2026_06_12: type: object properties: enabled: type: boolean description: Whether the CRM app is enabled for this event type. ignoreGuests: type: boolean description: Whether the CRM app ignores guests added to the booking. skipContactCreation: type: boolean description: Whether the CRM app skips creating a contact for the booker. required: - enabled - ignoreGuests - skipContactCreation 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 EventTypeColor_2024_06_14: type: object properties: lightThemeHex: type: string pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$ description: Color used for event types in light theme example: '#292929' darkThemeHex: type: string pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$ description: Color used for event types in dark theme example: '#fafafa' required: - lightThemeHex - darkThemeHex 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 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 OutputAddressLocation_2024_06_14: type: object properties: type: type: string example: address description: only allowed value for type is `address` address: type: string minLength: 1 example: 123 Example St, City, Country public: type: boolean required: - type - address - public NoticeThreshold_2024_06_14: type: object properties: unit: enum: - minutes - hours type: string description: The unit of time for the notice threshold (e.g., minutes, hours) example: minutes count: type: number description: The time value for the notice threshold example: 30 required: - unit - count 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 BaseBookingLimitsDuration_2024_06_14: type: object properties: day: type: number minimum: 15 description: The duration of bookings per day (must be a multiple of 15) example: 60 week: type: number minimum: 15 description: The duration of bookings per week (must be a multiple of 15) example: 120 month: type: number minimum: 15 description: The duration of bookings per month (must be a multiple of 15) example: 180 year: type: number minimum: 15 description: The duration of bookings per year (must be a multiple of 15) example: 240 disabled: type: boolean default: false 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 BusinessDaysWindow_2024_06_14: type: object properties: type: type: string enum: - businessDays - calendarDays - range description: Whether the window should be business days, calendar days or a range of dates value: type: number example: 5 description: How many business day into the future can this event be booked rolling: type: boolean example: true description: "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n In this mode 'value' must be at most 61, because availability is only searched up to 61 days ahead.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " disabled: type: boolean default: false required: - type - value 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 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 CalendarDaysWindow_2024_06_14: type: object properties: type: type: string enum: - businessDays - calendarDays - range description: Whether the window should be business days, calendar days or a range of dates value: type: number example: 5 description: How many calendar days into the future can this event be booked rolling: type: boolean example: true description: "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n In this mode 'value' must be at most 61, because availability is only searched up to 61 days ahead.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " disabled: type: boolean default: false required: - type - value DestinationCalendar_2024_06_14: type: object properties: integration: type: string description: The integration type of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the integration type of your connected calendars. externalId: type: string description: The external ID of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the external IDs of your connected calendars. required: - integration - externalId DisableCancellingOutput_2024_06_14: type: object properties: disabled: type: boolean description: If true, cancelling is always disabled for this event type. example: true Disabled_2024_06_14: type: object properties: disabled: type: boolean description: Only acceptable value for the `disabled` property is `true`. It is used to reset the value of the property for which previously an object containing specific settings was passed. example: true required: - disabled 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 OutputPhoneLocation_2024_06_14: type: object properties: type: type: string example: phone description: only allowed value for type is `phone` phone: type: string example: '+37120993151' public: type: boolean required: - type - phone - public 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 TeamEventTypeResponseHost: type: object properties: userId: type: number description: Which user is the host of this event mandatory: type: boolean default: false description: 'Only relevant for round robin event types. If true then the user must attend the round robin event always (fixed host). This may be combined with `assignAllTeamMembers: true` on round robin event types — entries marked `mandatory: true` become fixed hosts while every other team member fills the round robin pool.' priority: default: medium enum: - lowest - low - medium - high - highest type: string weight: type: number minimum: 0 description: 'Only relevant for round robin event types with `isRRWeightsEnabled: true`. Relative share of bookings this host receives - a host with weight 200 gets twice as many bookings as a host with weight 100. Defaults to 100.' example: 100 userUuid: type: string format: uuid example: 3f2504e0-4f89-41d3-9a0c-0305e82c3301 description: The UUID of the host user name: type: string example: John Doe username: type: string example: john-doe avatarUrl: type: - string - 'null' example: https://cal.com/api/avatar/d95949bc-ccb1-400f-acf6-045c51a16856.png required: - userId - name - username BaseConfirmationPolicy_2024_06_14: type: object properties: type: enum: - always - time type: string description: The policy that determines when confirmation is required example: always noticeThreshold: description: The notice threshold required before confirmation is needed. Required when type is 'time'. allOf: - $ref: '#/components/schemas/NoticeThreshold_2024_06_14' blockUnconfirmedBookingsInBooker: type: boolean description: Unconfirmed bookings still block calendar slots. disabled: type: boolean default: false required: - type - blockUnconfirmedBookingsInBooker 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 PrivateNoteMode: type: string enum: - duplicate_event - separate_events description: 'How private notes are delivered: as an additional host event or by sending separate host and guest invites.' BookerLayouts_2024_06_14: type: object properties: defaultLayout: enum: - month - week - column type: string enabledLayouts: type: array items: type: string enum: - month - week - column description: Array of valid layouts - month, week or column required: - defaultLayout - enabledLayouts 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 EventTypeTeam: type: object properties: id: type: number slug: type: string bannerUrl: type: string name: type: string logoUrl: type: string weekStart: type: string brandColor: type: string darkBrandColor: type: string theme: type: string required: - id - slug - bannerUrl - name - logoUrl - weekStart - brandColor - darkBrandColor - theme User_2024_06_14: type: object properties: id: type: number uuid: type: string format: uuid example: 3f2504e0-4f89-41d3-9a0c-0305e82c3301 name: type: - string - 'null' username: type: - string - 'null' avatarUrl: type: - string - 'null' weekStart: type: string brandColor: type: - string - 'null' darkBrandColor: type: - string - 'null' metadata: type: object required: - id - uuid - name - username - avatarUrl - weekStart - brandColor - darkBrandColor - metadata CalVideoSettings: type: object properties: disableRecordingForOrganizer: type: boolean description: If true, the organizer will not be able to record the meeting default: false disableRecordingForGuests: type: boolean description: If true, the guests will not be able to record the meeting default: false redirectUrlOnExit: type: - string - 'null' format: uri description: URL to which participants are redirected when they exit the call enableAutomaticRecordingForOrganizer: type: boolean description: If true, enables the automatic recording for the event when organizer joins the call default: false enableAutomaticTranscription: type: boolean description: If true, enables the automatic transcription for the event whenever someone joins the call default: false disableTranscriptionForGuests: type: boolean description: If true, the guests will not be able to receive transcription of the meeting default: false disableTranscriptionForOrganizer: type: boolean description: If true, the organizer will not be able to receive transcription of the meeting default: false hideTranscriptionForGuests: type: boolean description: If true, guests will not see live transcription captions during the meeting default: false hideTranscriptionForOrganizer: type: boolean description: If true, organizers will not see live transcription captions during the meeting default: false sendTranscriptionEmails: type: boolean description: Send emails with the transcription of the Cal Video after the meeting ends. default: true disableAttendeeRecordingDownloadEmail: type: boolean description: If true, attendees will not receive the Cal Video recording download email for this event type. Defaults to false. Organization guest notifications can still prevent this email from sending. default: false transcriptionLanguage: type: - string - 'null' description: Deepgram language code for transcription (e.g. 'es', 'fr', 'de', 'pt-BR', or 'multi' for auto-detect). Defaults to English when not set. enum: - multi - ar - bg - ca - zh-HK - hr - cs - da - nl - nl-BE - fi - fr - fr-CA - de - de-CH - el - he - hi - hu - id - it - ja - ko - lv - lt - ms - 'no' - pl - pt - pt-BR - ro - ru - sr - sk - sl - es - es-419 - sv - th - tr - uk - vi EmailSettings_2024_06_14: type: object properties: disableEmailsToAttendees: type: boolean description: Disables all email communication to attendees for this event type, including booking confirmations, reminders, and cancellations. This DOES NOT include emails sent by custom email workflows. disableEmailsToHosts: type: boolean description: Disables all email communication to hosts for this event type, including booking confirmations, reminders, and cancellations. This DOES NOT include emails sent by custom email workflows. disableProposalEmailsToHosts: type: boolean description: Disables only the booking proposal 'choose a time' email sent to hosts for this event type (no one-click confirm links are issued to hosts either). Every other host email - confirmation requests, confirmations, reminders and cancellations - is unaffected. Use this when hosts confirm proposals through an external system. OutputIntegrationLocation_2024_06_14: type: object properties: type: type: string example: integration description: Only allowed value for type is `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 link: type: string format: uri example: https://example.com credentialId: type: number description: Credential ID associated with the integration required: - type - integration x-provenance: method: harvested publisher: Cal.com source: https://cal.com/docs/api-reference/v2/openapi.json note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json); stamped by stamp-openapi-provenance.py (roadmap#793)