Webhooks
Create a webhook
Getting Started
Platform / Managed Users
Platform / Webhooks
Orgs / Attributes
Orgs / Attributes / Options
Orgs / Bookings
Orgs / Delegation Credentials
Orgs / Memberships
Orgs / Orgs
Orgs / Routing forms
Orgs / Schedules
Orgs / Teams
Orgs / Teams / Bookings
Orgs / Teams / Event Types
Orgs / Teams / Memberships
Orgs / Teams / Routing forms
Orgs / Teams / Routing forms / Responses
Orgs / Teams / Users / Schedules
Orgs / Users / Bookings
Orgs / Users / OOO
Orgs / Users / Schedules
Orgs / Webhooks
Api Keys
Bookings
- GETGet all bookings
- POSTCreate a booking
- GETGet a booking
- POSTReschedule a booking
- POSTCancel a booking
- POSTMark a booking absence - provided authorization header refers to owner of the booking.
- POSTAutomatically reassign booking to a new host automatically - provided authorization header refers to person who reassigned the booking.
- POSTReassign a booking to a specific user specified by the :userId - provided authorization header refers to person who reassigned the booking.
- POSTConfirm booking that requires a confirmation - provided authorization header refers to owner of the booking.
- POSTDecline booking that requires a confirmation - provided authorization header refers to owner of the booking.
- GETGet 'Add to Calendar' links for a booking
Calendars
Conferencing
Destination Calendars
Event Types
Event Types / Webhooks
OAuth Clients
Organizations/Teams Conferencing
Schedules
Selected Calendars
Slots
Stripe
Teams / Event Types
Teams / Memberships
Webhooks
Create a webhook
POST
/
v2
/
webhooks
curl --request POST \
--url https://api.cal.com/v2/webhooks \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '{
"payloadTemplate": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}",
"active": true,
"subscriberUrl": "<string>",
"triggers": [
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED"
],
"secret": "<string>"
}'
{
"status": "success",
"data": {
"payloadTemplate": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}",
"userId": 123,
"id": 123,
"triggers": [
{}
],
"subscriberUrl": "<string>",
"active": true,
"secret": "<string>"
}
}
Headers
value must be Bearer <token>
where <token>
is api key prefixed with cal_
Body
application/json
Available options:
BOOKING_CREATED
, BOOKING_PAYMENT_INITIATED
, BOOKING_PAID
, BOOKING_RESCHEDULED
, BOOKING_REQUESTED
, BOOKING_CANCELLED
, BOOKING_REJECTED
, BOOKING_NO_SHOW_UPDATED
, FORM_SUBMITTED
, MEETING_ENDED
, MEETING_STARTED
, RECORDING_READY
, INSTANT_MEETING
, RECORDING_TRANSCRIPTION_GENERATED
, OOO_CREATED
, AFTER_HOSTS_CAL_VIDEO_NO_SHOW
, AFTER_GUESTS_CAL_VIDEO_NO_SHOW
, FORM_SUBMITTED_NO_EVENT
Example:
[
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED"
]
The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information
Example:
"{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
Response
201 - application/json
Available options:
success
, error
Example:
"success"
The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information
Example:
"{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
Was this page helpful?
curl --request POST \
--url https://api.cal.com/v2/webhooks \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '{
"payloadTemplate": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}",
"active": true,
"subscriberUrl": "<string>",
"triggers": [
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED"
],
"secret": "<string>"
}'
{
"status": "success",
"data": {
"payloadTemplate": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}",
"userId": 123,
"id": 123,
"triggers": [
{}
],
"subscriberUrl": "<string>",
"active": true,
"secret": "<string>"
}
}