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
Organizations/Teams Stripe
Routing forms
Schedules
Selected Calendars
Slots
Teams / Event Types
Teams / Memberships
Create a schedule
curl --request POST \
--url https://api.cal.com/v2/organizations/{orgId}/users/{userId}/schedules \
--header 'Content-Type: application/json' \
--data '{
"name": "Catch up hours",
"timeZone": "Europe/Rome",
"availability": [
{
"days": [
"Monday",
"Tuesday"
],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": [
"Wednesday",
"Thursday"
],
"startTime": "16:00",
"endTime": "20:00"
}
],
"isDefault": true,
"overrides": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
}'
{
"status": "success",
"data": {
"id": 254,
"ownerId": 478,
"name": "Catch up hours",
"timeZone": "Europe/Rome",
"availability": [
{
"days": [
"Monday",
"Tuesday"
],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": [
"Wednesday",
"Thursday"
],
"startTime": "16:00",
"endTime": "20:00"
}
],
"isDefault": true,
"overrides": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
}
}
Headers
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
Path Parameters
Body
"Catch up hours"
Timezone is used to calculate available times when an event using the schedule is booked.
"Europe/Rome"
Each user should have 1 default schedule. If you specified timeZone
when creating managed user, then the default schedule will be created with that timezone.
Default schedule means that if an event type is not tied to a specific schedule then the default schedule is used.
true
Each object contains days and times when the user is available. If not passed, the default availability is Monday to Friday from 09:00 to 17:00.
Array of days when schedule is active.
Monday
, Tuesday
, Wednesday
, Thursday
, Friday
, Saturday
, Sunday
["Monday", "Tuesday"]
startTime must be a valid time in format HH:MM e.g. 08:00
"08:00"
endTime must be a valid time in format HH:MM e.g. 15:00
"15:00"
[
{
"days": ["Monday", "Tuesday"],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": ["Wednesday", "Thursday"],
"startTime": "16:00",
"endTime": "20:00"
}
]
Need to change availability for a specific date? Add an override.
[
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
Response
success
, error
"success"
254
478
"Catch up hours"
"Europe/Rome"
Array of days when schedule is active.
Monday
, Tuesday
, Wednesday
, Thursday
, Friday
, Saturday
, Sunday
["Monday", "Tuesday"]
startTime must be a valid time in format HH:MM e.g. 08:00
"08:00"
endTime must be a valid time in format HH:MM e.g. 15:00
"15:00"
[
{
"days": ["Monday", "Tuesday"],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": ["Wednesday", "Thursday"],
"startTime": "16:00",
"endTime": "20:00"
}
]
true
[
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
Was this page helpful?
curl --request POST \
--url https://api.cal.com/v2/organizations/{orgId}/users/{userId}/schedules \
--header 'Content-Type: application/json' \
--data '{
"name": "Catch up hours",
"timeZone": "Europe/Rome",
"availability": [
{
"days": [
"Monday",
"Tuesday"
],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": [
"Wednesday",
"Thursday"
],
"startTime": "16:00",
"endTime": "20:00"
}
],
"isDefault": true,
"overrides": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
}'
{
"status": "success",
"data": {
"id": 254,
"ownerId": 478,
"name": "Catch up hours",
"timeZone": "Europe/Rome",
"availability": [
{
"days": [
"Monday",
"Tuesday"
],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": [
"Wednesday",
"Thursday"
],
"startTime": "16:00",
"endTime": "20:00"
}
],
"isDefault": true,
"overrides": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
]
}
}