Event types

These routes allow you to CRUD event types within Cal.com.

Event Type Object

AttributeDescription
id

integer

The ID of the event type, generated automatically
title

string

The title of the event type
slug

string

The slug of the event type
description

string

The description of the event type
position

integer

The position of the event type
locations

Locations Object[]

The locations for the event type. Please refer to Locations Object for more details
length

integer

The length of the event type
offsetStart

integer

The start offset of the event type
hidden

boolean

Whether the event type is hidden
hosts

Host[]

The hosts associated with the event type
users

User[]

The users associated with the event type
owner

User Object

The owner of the event type
userId

integer

The ID of the user who owns the event type
profileId

integer

The ID of the profile associated with the event type
profile

Profile Object

The profile associated with the event type
team

Team Object

The team associated with the event type
teamId

integer

The ID of the team associated with the event type
hashedLink

HashedLink Object

The hashed link associated with the event type
bookings

Booking[]

The bookings associated with the event type
availability

Availability[]

The availability for the event type
webhooks

Webhook[]

The webhooks associated with the event type
destinationCalendar

DestinationCalendar Object

The destination calendar associated with the event type
eventName

string

The name of the event
customInputs

EventTypeCustomInput[]

Custom inputs for the event type
parentId

integer

The ID of the parent event type
parent

EventType Object

The parent event type
children

EventType[]

The child event types
bookingFields

json

Booking fields for the event type
timeZone

string

Time zone of the event type
periodType

PeriodType

The period type of the event type
periodStartDate

DateTime

The start date of the period
periodEndDate

DateTime

The end date of the period
periodDays

integer

Number of days in the period
periodCountCalendarDays

boolean

Whether the period counts calendar days
lockTimeZoneToggleOnBookingPage

boolean

Whether the time zone toggle is locked on the booking page
requiresConfirmation

boolean

Whether the event type requires confirmation
requiresBookerEmailVerification

boolean

Whether the event type requires email verification
recurringEvent

json

Recurring event settings
disableGuests

boolean

Whether guests are disabled for the event type
hideCalendarNotes

boolean

Whether calendar notes are hidden
minimumBookingNotice

integer

Minimum booking notice
beforeEventBuffer

integer

Buffer time before the event
afterEventBuffer

integer

Buffer time after the event
seatsPerTimeSlot

integer

Seats available per time slot
onlyShowFirstAvailableSlot

boolean

Whether to only show the first available slot
seatsShowAttendees

boolean

Whether to show attendees in the seats
seatsShowAvailabilityCount

boolean

Whether to show the availability count in the seats
schedulingType

SchedulingType

The scheduling type of the event type
schedule

Schedule Object

The schedule associated with the event type
scheduleId

integer

The ID of the schedule associated with the event type
price

integer

Price of the event type
currency

string

Currency of the event type
slotInterval

integer

Slot interval of the event type
metadata

json

Metadata of the event type
successRedirectUrl

string

URL to redirect to upon successful booking
forwardParamsSuccessRedirect

boolean

Whether to forward parameters to the success redirect URL
workflows

WorkflowsOnEventTypes[]

Workflows associated with the event type
bookingLimits

json

Booking limits for the event type
durationLimits

json

Duration limits for the event type
isInstantEvent

boolean

Whether the event type is an instant event
instantMeetingExpiryTimeOffsetInSeconds

integer

Expiry time offset for instant meetings in seconds
assignAllTeamMembers

boolean

Whether to assign all team members to the event type
useEventTypeDestinationCalendarEmail

boolean

Whether to use event type destination calendar email
aiPhoneCallConfig

AIPhoneCallConfiguration Object

AI phone call configuration for the event type
secondaryEmailId

integer

ID of the secondary email associated with the event type
secondaryEmail

SecondaryEmail Object

Secondary email associated with the event type

Locations Object Structure

The locations object defines the options for meeting location in the form of an array of objects. booking questions.

An example of this for zoom & google meet as event type location options would be:

    {
        ...,
        "locations": [{
            "type": "integrations:zoom",
        },
        {
            "type": "integrations:google:meet",
        }],
        ...,
    }

Depending on the location selected, the location object can be one of the

Example Event Types Object

{
    "id": 123,
    "title": "Team Meeting",
    "slug": "team-meeting",
    "description": "Weekly sync-up meeting for the team.",
    "position": 1,
    "locations": [Locations Object],
    "length": 60,
    "offsetStart": 5,
    "hidden": false,
    "hosts": [Host Object[]],
    "users": [User Object[]],
    "owner": [User Object],
    "userId": 1,
    "profileId": 10,
    "profile": [Profile Object],
    "team": [Team Object],
    "teamId": 20,
    "hashedLink": {
        "hash": "abc123",
        "url": "https://example.com/event/abc123"
    },
    "bookings": [Bookings Object[]],
    "availability": [Availability Object[]],
    "webhooks": [Webhooks Object[]],
    "destinationCalendar": [Destination Calendar Object],
    "eventName": "Team Sync",
    "parentId": 122,
    "parent": [Parent EventType Object],
    "children": [Children EventType Object[]],
    "bookingFields": [Booking Fields Objects[]],
    "timeZone": "America/New_York",
    "periodType": "LIMITED",
    "periodStartDate": "2024-01-01T00:00:00Z",
    "periodEndDate": "2024-12-31T23:59:59Z",
    "periodDays": 365,
    "periodCountCalendarDays": true,
    "lockTimeZoneToggleOnBookingPage": true,
    "requiresConfirmation": true,
    "requiresBookerEmailVerification": false,
    "recurringEvent": {},
    "disableGuests": false,
    "hideCalendarNotes": false,
    "minimumBookingNotice": 24,
    "beforeEventBuffer": 10,
    "afterEventBuffer": 10,
    "seatsPerTimeSlot": 10,
    "onlyShowFirstAvailableSlot": true,
    "seatsShowAttendees": true,
    "seatsShowAvailabilityCount": true,
    "schedulingType": "fixed",
    "schedule": [Schedule Object],
    "scheduleId": 500,
    "price": 100,
    "currency": "usd",
    "slotInterval": 30,
    "metadata": {},
    "successRedirectUrl": "https://example.com/thank-you",
    "forwardParamsSuccessRedirect": true,
    "workflows": [Workflows Object[]],
    "bookingLimits": {},
    "durationLimits": {},
    "isInstantEvent": false,
    "instantMeetingExpiryTimeOffsetInSeconds": 120,
    "assignAllTeamMembers": false,
    "useEventTypeDestinationCalendarEmail": false,
    "aiPhoneCallConfig": {},
    "secondaryEmailId": 50,
    "secondaryEmail": [Secondary Email Object]
}

Find all event types

GET

/event-types

Find all team event types

GET

/teams/{teamId}/event-types

Create a new event type

POST

/event-types

Managed Event Types

To create a Managed Event Type via API, pass in a request of similar structure as a team event type, except the following:

  • schedulingType should be set to MANAGED
  • metadata should contain something like
    {
      "config": {
        "useHostSchedulesForTeamEvent": false
      },
      "managedEventConfig": {
        "unlockedFields": {
          "locations": true,
          "scheduleId": true,
          "destinationCalendar": true
        }
      }
    }

This should create a parent event type of scheduling type MANAGED. Next, create a child event type which essentially connects to this parent event-type, but is of an individual user instead of being a team event. The request should be pretty much the same, except without a teamId or schedulingType and with a userId.

Find an event type

GET

/event-types/{id}

Edit an existing event type

PATCH

/event-types/{id}

Remove an existing event type

DELETE

/event-types/{id}

Was this page helpful?