Webhooks
Create a webhook
Getting Started
Platform / Managed Users
Platform / Webhooks
Orgs / Attributes
Orgs / Attributes / Options
- GETGet all attribute options
- POSTCreate an attribute option
- DELDelete an attribute option
- PATCHUpdate an attribute option
- GETGet by attribute id all of the attribute options that are assigned to users
- GETGet by attribute slug all of the attribute options that are assigned to users
- GETGet all attribute options for a user
- POSTAssign an attribute to a user
- DELUnassign an attribute from a user
Orgs / Bookings
Orgs / Delegation Credentials
Orgs / Memberships
Orgs / Routing forms
Orgs / Schedules
Orgs / Teams
Orgs / Teams / Bookings
Orgs / Teams / Conferencing
- POSTConnect your conferencing application to a team
- GETGet OAuth conferencing app's auth url for a team
- GETList team conferencing applications
- POSTSet team default conferencing application
- GETGet team default conferencing application
- DELDisconnect team conferencing application
- GETSave conferencing app OAuth credentials
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
Calendars
Conferencing
Destination Calendars
Event Types
Event Types / Webhooks
Managed Orgs
OAuth Clients
Organization Team Verified Resources
- POSTRequest Email Verification Code
- POSTRequest Phone Number Verification Code
- POSTVerify an email for an org team.
- POSTVerify a phone number for an org team.
- GETGet list of verified emails of an org team.
- GETGet list of verified phone numbers of an org team.
- GETGet verified email of an org team by id.
- GETGet verified phone number of an org team by id.
Organizations/Teams Stripe
Routing forms
Schedules
Selected Calendars
Slots
Teams / Event Types
Teams / Memberships
Teams Verified Resources
- POSTRequest Email Verification Code
- POSTRequest Phone Number Verification Code
- POSTVerify an email for a team.
- POSTVerify a phone number for an org team.
- GETGet list of verified emails of a team.
- GETGet list of verified phone numbers of a team.
- GETGet verified email of a team by id.
- GETGet verified phone number of a team by id.
Verified Resources
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>"
}
}