curl --request POST \
--url https://api.cal.com/v2/organizations/{orgId}/teams/{teamId}/event-types \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"lengthInMinutes": 60,
"title": "Learn the secrets of masterchief!",
"slug": "learn-the-secrets-of-masterchief",
"schedulingType": "collective",
"lengthInMinutesOptions": [
15,
30,
60
],
"description": "Discover the culinary wonders of the Argentina by making the best flan ever!",
"bookingFields": [
{
"type": "name",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": true
}
],
"disableGuests": true,
"slotInterval": 123,
"minimumBookingNotice": 123,
"beforeEventBuffer": 123,
"afterEventBuffer": 123,
"scheduleId": 123,
"bookingLimitsCount": {
"day": 1,
"week": 2,
"month": 3,
"year": 4,
"disabled": false
},
"bookerActiveBookingsLimit": {
"maximumActiveBookings": 3,
"offerReschedule": true
},
"onlyShowFirstAvailableSlot": true,
"bookingLimitsDuration": {
"day": 60,
"week": 120,
"month": 180,
"year": 240
},
"bookingWindow": {
"type": "businessDays",
"value": 5,
"rolling": true
},
"offsetStart": 123,
"bookerLayouts": {
"defaultLayout": "month",
"enabledLayouts": [
"month"
]
},
"confirmationPolicy": {
"type": "always",
"blockUnconfirmedBookingsInBooker": true,
"noticeThreshold": {
"unit": "minutes",
"count": 30
}
},
"recurrence": {
"interval": 10,
"occurrences": 10,
"frequency": "yearly"
},
"requiresBookerEmailVerification": true,
"hideCalendarNotes": true,
"lockTimeZoneToggleOnBookingPage": true,
"color": {
"lightThemeHex": "#292929",
"darkThemeHex": "#fafafa"
},
"seats": {
"seatsPerTimeSlot": 4,
"showAttendeeInfo": true,
"showAvailabilityCount": true
},
"customName": "{Event type title} between {Organiser} and {Scheduler}",
"destinationCalendar": {
"integration": "<string>",
"externalId": "<string>"
},
"useDestinationCalendarEmail": true,
"hideCalendarEventDetails": true,
"successRedirectUrl": "https://masterchief.com/argentina/flan/video/9129412",
"hideOrganizerEmail": true,
"calVideoSettings": {
"disableRecordingForOrganizer": true,
"disableRecordingForGuests": true,
"redirectUrlOnExit": {},
"enableAutomaticRecordingForOrganizer": true,
"enableAutomaticTranscription": true,
"disableTranscriptionForGuests": true,
"disableTranscriptionForOrganizer": true
},
"hidden": true,
"bookingRequiresAuthentication": false,
"hosts": [
{
"userId": 123,
"mandatory": true,
"priority": "lowest"
}
],
"assignAllTeamMembers": true,
"locations": [
{
"type": "address",
"address": "123 Example St, City, Country",
"public": true
}
],
"emailSettings": {
"disableEmailsToAttendees": true,
"disableEmailsToHosts": true
},
"rescheduleWithSameRoundRobinHost": true
}
'{
"status": "success",
"data": {
"id": 1,
"lengthInMinutes": 60,
"title": "Learn the secrets of masterchief!",
"slug": "learn-the-secrets-of-masterchief",
"description": "Discover the culinary wonders of Argentina by making the best flan ever!",
"locations": [
{
"type": "address",
"address": "123 Example St, City, Country",
"public": true
}
],
"bookingFields": [
{
"type": "name",
"label": "<string>",
"placeholder": "<string>",
"isDefault": true,
"slug": "name",
"required": true,
"disableOnPrefill": true
}
],
"disableGuests": true,
"recurrence": {
"interval": 10,
"occurrences": 10,
"frequency": "yearly"
},
"metadata": {},
"price": 123,
"currency": "<string>",
"lockTimeZoneToggleOnBookingPage": true,
"forwardParamsSuccessRedirect": {},
"successRedirectUrl": {},
"isInstantEvent": true,
"scheduleId": 123,
"hidden": true,
"bookingRequiresAuthentication": true,
"teamId": 123,
"hosts": [
"<string>"
],
"schedulingType": "roundRobin",
"team": {
"id": 123,
"slug": "<string>",
"bannerUrl": "<string>",
"name": "<string>",
"logoUrl": "<string>",
"weekStart": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"theme": "<string>"
},
"lengthInMinutesOptions": [
15,
30,
60
],
"slotInterval": 60,
"minimumBookingNotice": 0,
"beforeEventBuffer": 0,
"afterEventBuffer": 0,
"seatsPerTimeSlot": {},
"seatsShowAvailabilityCount": true,
"bookingLimitsCount": {},
"bookerActiveBookingsLimit": {
"maximumActiveBookings": 3,
"offerReschedule": true
},
"onlyShowFirstAvailableSlot": true,
"bookingLimitsDuration": {},
"bookingWindow": [
{
"type": "businessDays",
"value": 5,
"rolling": true
}
],
"bookerLayouts": {
"defaultLayout": "month",
"enabledLayouts": [
"month"
]
},
"confirmationPolicy": {},
"requiresBookerEmailVerification": true,
"hideCalendarNotes": true,
"color": {
"lightThemeHex": "#292929",
"darkThemeHex": "#fafafa"
},
"seats": {
"seatsPerTimeSlot": 4,
"showAttendeeInfo": true,
"showAvailabilityCount": true
},
"offsetStart": 123,
"customName": "<string>",
"destinationCalendar": {
"integration": "<string>",
"externalId": "<string>"
},
"useDestinationCalendarEmail": true,
"hideCalendarEventDetails": true,
"hideOrganizerEmail": true,
"calVideoSettings": {
"disableRecordingForOrganizer": true,
"disableRecordingForGuests": true,
"redirectUrlOnExit": {},
"enableAutomaticRecordingForOrganizer": true,
"enableAutomaticTranscription": true,
"disableTranscriptionForGuests": true,
"disableTranscriptionForOrganizer": true
},
"ownerId": {},
"parentEventTypeId": {},
"assignAllTeamMembers": true,
"emailSettings": {
"disableEmailsToAttendees": true,
"disableEmailsToHosts": true
},
"rescheduleWithSameRoundRobinHost": true
}
}curl --request POST \
--url https://api.cal.com/v2/organizations/{orgId}/teams/{teamId}/event-types \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"lengthInMinutes": 60,
"title": "Learn the secrets of masterchief!",
"slug": "learn-the-secrets-of-masterchief",
"schedulingType": "collective",
"lengthInMinutesOptions": [
15,
30,
60
],
"description": "Discover the culinary wonders of the Argentina by making the best flan ever!",
"bookingFields": [
{
"type": "name",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": true
}
],
"disableGuests": true,
"slotInterval": 123,
"minimumBookingNotice": 123,
"beforeEventBuffer": 123,
"afterEventBuffer": 123,
"scheduleId": 123,
"bookingLimitsCount": {
"day": 1,
"week": 2,
"month": 3,
"year": 4,
"disabled": false
},
"bookerActiveBookingsLimit": {
"maximumActiveBookings": 3,
"offerReschedule": true
},
"onlyShowFirstAvailableSlot": true,
"bookingLimitsDuration": {
"day": 60,
"week": 120,
"month": 180,
"year": 240
},
"bookingWindow": {
"type": "businessDays",
"value": 5,
"rolling": true
},
"offsetStart": 123,
"bookerLayouts": {
"defaultLayout": "month",
"enabledLayouts": [
"month"
]
},
"confirmationPolicy": {
"type": "always",
"blockUnconfirmedBookingsInBooker": true,
"noticeThreshold": {
"unit": "minutes",
"count": 30
}
},
"recurrence": {
"interval": 10,
"occurrences": 10,
"frequency": "yearly"
},
"requiresBookerEmailVerification": true,
"hideCalendarNotes": true,
"lockTimeZoneToggleOnBookingPage": true,
"color": {
"lightThemeHex": "#292929",
"darkThemeHex": "#fafafa"
},
"seats": {
"seatsPerTimeSlot": 4,
"showAttendeeInfo": true,
"showAvailabilityCount": true
},
"customName": "{Event type title} between {Organiser} and {Scheduler}",
"destinationCalendar": {
"integration": "<string>",
"externalId": "<string>"
},
"useDestinationCalendarEmail": true,
"hideCalendarEventDetails": true,
"successRedirectUrl": "https://masterchief.com/argentina/flan/video/9129412",
"hideOrganizerEmail": true,
"calVideoSettings": {
"disableRecordingForOrganizer": true,
"disableRecordingForGuests": true,
"redirectUrlOnExit": {},
"enableAutomaticRecordingForOrganizer": true,
"enableAutomaticTranscription": true,
"disableTranscriptionForGuests": true,
"disableTranscriptionForOrganizer": true
},
"hidden": true,
"bookingRequiresAuthentication": false,
"hosts": [
{
"userId": 123,
"mandatory": true,
"priority": "lowest"
}
],
"assignAllTeamMembers": true,
"locations": [
{
"type": "address",
"address": "123 Example St, City, Country",
"public": true
}
],
"emailSettings": {
"disableEmailsToAttendees": true,
"disableEmailsToHosts": true
},
"rescheduleWithSameRoundRobinHost": true
}
'{
"status": "success",
"data": {
"id": 1,
"lengthInMinutes": 60,
"title": "Learn the secrets of masterchief!",
"slug": "learn-the-secrets-of-masterchief",
"description": "Discover the culinary wonders of Argentina by making the best flan ever!",
"locations": [
{
"type": "address",
"address": "123 Example St, City, Country",
"public": true
}
],
"bookingFields": [
{
"type": "name",
"label": "<string>",
"placeholder": "<string>",
"isDefault": true,
"slug": "name",
"required": true,
"disableOnPrefill": true
}
],
"disableGuests": true,
"recurrence": {
"interval": 10,
"occurrences": 10,
"frequency": "yearly"
},
"metadata": {},
"price": 123,
"currency": "<string>",
"lockTimeZoneToggleOnBookingPage": true,
"forwardParamsSuccessRedirect": {},
"successRedirectUrl": {},
"isInstantEvent": true,
"scheduleId": 123,
"hidden": true,
"bookingRequiresAuthentication": true,
"teamId": 123,
"hosts": [
"<string>"
],
"schedulingType": "roundRobin",
"team": {
"id": 123,
"slug": "<string>",
"bannerUrl": "<string>",
"name": "<string>",
"logoUrl": "<string>",
"weekStart": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"theme": "<string>"
},
"lengthInMinutesOptions": [
15,
30,
60
],
"slotInterval": 60,
"minimumBookingNotice": 0,
"beforeEventBuffer": 0,
"afterEventBuffer": 0,
"seatsPerTimeSlot": {},
"seatsShowAvailabilityCount": true,
"bookingLimitsCount": {},
"bookerActiveBookingsLimit": {
"maximumActiveBookings": 3,
"offerReschedule": true
},
"onlyShowFirstAvailableSlot": true,
"bookingLimitsDuration": {},
"bookingWindow": [
{
"type": "businessDays",
"value": 5,
"rolling": true
}
],
"bookerLayouts": {
"defaultLayout": "month",
"enabledLayouts": [
"month"
]
},
"confirmationPolicy": {},
"requiresBookerEmailVerification": true,
"hideCalendarNotes": true,
"color": {
"lightThemeHex": "#292929",
"darkThemeHex": "#fafafa"
},
"seats": {
"seatsPerTimeSlot": 4,
"showAttendeeInfo": true,
"showAvailabilityCount": true
},
"offsetStart": 123,
"customName": "<string>",
"destinationCalendar": {
"integration": "<string>",
"externalId": "<string>"
},
"useDestinationCalendarEmail": true,
"hideCalendarEventDetails": true,
"hideOrganizerEmail": true,
"calVideoSettings": {
"disableRecordingForOrganizer": true,
"disableRecordingForGuests": true,
"redirectUrlOnExit": {},
"enableAutomaticRecordingForOrganizer": true,
"enableAutomaticTranscription": true,
"disableTranscriptionForGuests": true,
"disableTranscriptionForOrganizer": true
},
"ownerId": {},
"parentEventTypeId": {},
"assignAllTeamMembers": true,
"emailSettings": {
"disableEmailsToAttendees": true,
"disableEmailsToHosts": true
},
"rescheduleWithSameRoundRobinHost": true
}
}Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
For non-platform customers - value must be Bearer <token> where <token> is api key prefixed with cal_
For platform customers - OAuth client secret key
For platform customers - OAuth client ID
60
"Learn the secrets of masterchief!"
"learn-the-secrets-of-masterchief"
The scheduling type for the team event - collective, roundRobin or managed.
collective, roundRobin, managed "collective"
If you want that user can choose between different lengths of the event you can specify them here. Must include the provided lengthInMinutes.
[15, 30, 60]"Discover the culinary wonders of the Argentina by making the best flan ever!"
Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.
Show child attributes
only allowed value for type is name. Used for having 1 booking field for both first name and last name.
"name"
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. In case of Booker atom need to pass 'name' to defaultFormValues prop with the desired value e.g. defaultFormValues={{name: 'bob'}}. See guide https://cal.com/docs/platform/guides/booking-fields
If true, person booking this event can't add guests via their emails.
Number representing length of each slot when event is booked. By default it equal length of the event type. If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event.
Minimum number of minutes before the event that a booking can be made.
Time spaces that can be prepended before an event to give more time before it.
Time spaces that can be appended after an event to give more time after it.
If you want that this event has different schedule than user's default one you can specify it here.
Limit how many times this event can be booked
Show child attributes
The number of bookings per day
1
The number of bookings per week
2
The number of bookings per month
3
The number of bookings per year
4
Limit the number of active bookings a booker can make for this event type.
Show child attributes
This will limit your availability for this event type to one slot per day, scheduled at the earliest available time.
Limit total amount of time that this event can be booked
Show child attributes
The duration of bookings per day (must be a multiple of 15)
60
The duration of bookings per week (must be a multiple of 15)
120
The duration of bookings per month (must be a multiple of 15)
180
The duration of bookings per year (must be a multiple of 15)
240
Limit how far in the future this event can be booked
Show child attributes
Whether the window should be business days, calendar days or a range of dates
businessDays, calendarDays, range How many business day into the future can this event be booked
5
Determines the behavior of the booking window:
- If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value'
and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays,
a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days
becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.
- If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the
moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current
date is November 10, the booker will only see slots on November 11 because the window is restricted to the next
3 calendar days (November 10–12).true
Offset timeslots shown to bookers by a specified number of minutes
Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.
Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.
Show child attributes
The policy that determines when confirmation is required
always, time "always"
Unconfirmed bookings still block calendar slots.
The notice threshold required before confirmation is needed. Required when type is 'time'.
Create a recurring event type.
Create an event type with multiple seats.
Customizable event name with valid variables: {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name}, {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION}, {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}
"{Event type title} between {Organiser} and {Scheduler}"
Show child attributes
The integration type of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the integration type of your connected calendars.
The external ID of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the external IDs of your connected calendars.
A valid URL where the booker will redirect to, once the booking is completed successfully
"https://masterchief.com/argentina/flan/video/9129412"
Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events
Cal video settings for the event type. Platform customers can't manage this property because currently we have no way of determining if managed user is a host or an attendee.
Show child attributes
If true, the organizer will not be able to record the meeting
If true, the guests will not be able to record the meeting
URL to which participants are redirected when they exit the call
If true, enables the automatic recording for the event when organizer joins the call
If true, enables the automatic transcription for the event whenever someone joins the call
If true, the guests will not be able to receive transcription of the meeting
If true, the organizer will not be able to receive transcription of the meeting
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.
Hosts contain specific team members you want to assign to this event type, but if you want to assign all team members, use assignAllTeamMembers: true instead and omit this field. For platform customers the hosts can include userIds only of managed users. Provide either hosts or assignAllTeamMembers but not both
If true, all current and future team members will be assigned to this event type. Provide either assignAllTeamMembers or hosts but not both
Locations where the event will take place. If not provided, cal video link will be used as the location.
Email settings for this event type - only available for organization team event types.
Show child attributes
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.
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.
Rescheduled events will be assigned to the same host as initially scheduled.
success, error "success"
Show child attributes
1
60
"Learn the secrets of masterchief!"
"learn-the-secrets-of-masterchief"
"Discover the culinary wonders of Argentina by making the best flan ever!"
Show child attributes
only allowed value for type is name. Used for having 1 booking field for both first name and last name.
"name"
This property is always true because it's a default field
true
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. In case of Booker atom need to pass 'name' to defaultFormValues prop with the desired value e.g. defaultFormValues={{name: 'bob'}}. See guide https://cal.com/docs/platform/guides/booking-fields
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.
roundRobin, collective, managed Show child attributes
If you want that user can choose between different lengths of the event you can specify them here. Must include the provided lengthInMinutes.
[15, 30, 60]60
0
0
0
Show child attributes
Limit how far in the future this event can be booked
Show child attributes
Whether the window should be business days, calendar days or a range of dates
businessDays, calendarDays, range How many business day into the future can this event be booked
5
Determines the behavior of the booking window:
- If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value'
and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays,
a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days
becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.
- If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the
moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current
date is November 10, the booker will only see slots on November 11 because the window is restricted to the next
3 calendar days (November 10–12).true
Show child attributes
Show child attributes
The integration type of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the integration type of your connected calendars.
The external ID of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the external IDs of your connected calendars.
Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events
Cal video settings for the event type
Show child attributes
If true, the organizer will not be able to record the meeting
If true, the guests will not be able to record the meeting
URL to which participants are redirected when they exit the call
If true, enables the automatic recording for the event when organizer joins the call
If true, enables the automatic transcription for the event whenever someone joins the call
If true, the guests will not be able to receive transcription of the meeting
If true, the organizer will not be able to receive transcription of the meeting
For managed event types, parent event type is the event type that this event type is based on
Email settings for this event type. Only available for organization team event types.
Show child attributes
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.
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.
Rescheduled events will be assigned to the same host as initially scheduled.
Was this page helpful?