Getting Started
Platform / Cal Provider
Platform / Managed Users
Platform / Webhooks
Orgs / Attributes
Orgs / Attributes / Options
Orgs / Delegation Credentials
Orgs / Event Types
Orgs / Memberships
Orgs / Orgs
Orgs / Schedules
Orgs / Teams
Orgs / Teams / Bookings
Orgs / Teams / Memberships
Orgs / Teams / Routing forms / Responses
Orgs / Teams / Schedules
Orgs / Users / OOO
Orgs / Webhooks
Api Keys
Bookings
- GETGet all bookings
- POSTCreate a booking
- GETGet a booking
- POSTReschedule a booking
- POSTCancel a booking
- POSTMark a booking absence
- POSTAutomatically reassign booking to a new host
- POSTReassign a booking to a specific user
- POSTConfirm booking that requires a confirmation
- POSTDecline booking that requires a confirmation
- GETGet 'Add to Calendar' links for a booking
Calendars
Conferencing
Destination Calendars
Event Types
Event Types / Webhooks
OAuth Clients
Schedules
Selected Calendars
Slots
Stripe
Teams / Event Types
Teams / Memberships
Timezones
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"
}
]
}
}
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"
}
]
}
}