Access the Cal.com API with managed OAuth authentication. Create and manage event types, bookings, schedules, calendars, and webhooks.
Reference
Get Profile
GET /cal-com/v2/meResponse:
{
"status": "success",
"data": {
"id": 2152180,
"email": "user@example.com",
"name": "User Name",
"avatarUrl": "https://...",
"bio": "",
"timeFormat": 12,
"defaultScheduleId": null,
"weekStart": "Sunday",
"timeZone": "America/New_York"
}
}Update Profile
PATCH /cal-com/v2/me
Content-Type: application/json
{
"bio": "Updated bio",
"name": "New Name"
}List Event Types
GET /cal-com/v2/event-typesWith username filter:
GET /cal-com/v2/event-types?username={username}Response:
{
"status": "success",
"data": {
"eventTypeGroups": [
{
"teamId": null,
"bookerUrl": "https://cal.com",
"profile": {
"slug": "username",
"name": "User Name"
},
"eventTypes": [
{
"id": 4716831,
"title": "30 min meeting",
"slug": "30min",
"length": 30,
"hidden": false
}
]
}
]
}
}Get Event Type
GET /cal-com/v2/event-types/{eventTypeId}Create Event Type
POST /cal-com/v2/event-types
Content-Type: application/json
{
"title": "Meeting",
"slug": "meeting",
"length": 30
}Required fields:
title- Event type nameslug- URL slug (must be unique)length- Duration in minutes
Response:
{
"status": "success",
"data": {
"id": 4745911,
"title": "Meeting",
"slug": "meeting",
"length": 30,
"locations": [{"type": "integrations:daily"}],
"hidden": false,
"userId": 2152180
}
}Update Event Type
PATCH /cal-com/v2/event-types/{eventTypeId}
Content-Type: application/json
{
"title": "Updated Meeting Title",
"description": "Updated description"
}Delete Event Type
DELETE /cal-com/v2/event-types/{eventTypeId}Data transmission. Webhooks send booking and event data (attendee emails, names, schedule details) to the specified external subscriber URL. Confirm the URL, triggers, and intent with the user before creating or updating webhooks.
List Webhooks
GET /cal-com/v2/event-types/{eventTypeId}/webhooksCreate Webhook
POST /cal-com/v2/event-types/{eventTypeId}/webhooks
Content-Type: application/json
{
"subscriberUrl": "https://example.com/webhook",
"triggers": ["BOOKING_CREATED"],
"active": true
}Available triggers: BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED, BOOKING_CONFIRMED, BOOKING_REJECTED, BOOKING_REQUESTED, BOOKING_PAYMENT_INITIATED, BOOKING_NO_SHOW_UPDATED, MEETING_ENDED, MEETING_STARTED, RECORDING_READY, INSTANT_MEETING, RECORDING_TRANSCRIPTION_GENERATED
Get Webhook
GET /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}Update Webhook
PATCH /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
Content-Type: application/json
{
"active": false
}Delete Webhook
DELETE /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}List Bookings
GET /cal-com/v2/bookingsWith filters:
GET /cal-com/v2/bookings?status=upcoming
GET /cal-com/v2/bookings?status=past
GET /cal-com/v2/bookings?status=cancelled
GET /cal-com/v2/bookings?status=accepted
GET /cal-com/v2/bookings?take=10Response:
{
"status": "success",
"data": {
"bookings": [
{
"id": 15893969,
"uid": "gZJNR7FQG2qLsBqnFdxAPE",
"title": "30 min meeting between User and Guest",
"startTime": "2026-02-13T17:00:00.000Z",
"endTime": "2026-02-13T17:30:00.000Z",
"status": "ACCEPTED"
}
],
"totalCount": 1,
"nextCursor": null
}
}Get Booking
GET /cal-com/v2/bookings/{bookingUid}Create Booking
POST /cal-com/v2/bookings
Content-Type: application/json
{
"eventTypeId": 4716831,
"start": "2026-02-13T17:00:00Z",
"timeZone": "America/New_York",
"language": "en",
"responses": {
"name": "Guest Name",
"email": "guest@example.com"
},
"metadata": {}
}Required fields:
eventTypeId- ID of the event typestart- Start time in ISO 8601 format (must be an available slot)timeZone- Valid IANA timezonelanguage- Language code (e.g., "en")responses.name- Attendee nameresponses.email- Attendee email
Response:
{
"status": "success",
"data": {
"id": 15893969,
"uid": "gZJNR7FQG2qLsBqnFdxAPE",
"title": "30 min meeting between User and Guest Name",
"startTime": "2026-02-13T17:00:00.000Z",
"endTime": "2026-02-13T17:30:00.000Z",
"status": "ACCEPTED",
"location": "integrations:daily"
}
}Cancel Booking
POST /cal-com/v2/bookings/{bookingUid}/cancel
Content-Type: application/json
{
"cancellationReason": "Reason for cancellation"
}Get Default Schedule
GET /cal-com/v2/schedules/defaultGet Schedule
GET /cal-com/v2/schedules/{scheduleId}Create Schedule
POST /cal-com/v2/schedules
Content-Type: application/json
{
"name": "Work Hours",
"timeZone": "America/New_York",
"isDefault": false
}Response:
{
"status": "success",
"data": {
"id": 1243030,
"name": "Work Hours",
"isManaged": false,
"workingHours": [
{
"days": [1, 2, 3, 4, 5],
"startTime": 540,
"endTime": 1020
}
]
}
}Update Schedule
PATCH /cal-com/v2/schedules/{scheduleId}
Content-Type: application/json
{
"name": "Updated Schedule Name"
}Delete Schedule
DELETE /cal-com/v2/schedules/{scheduleId}Get Available Slots
GET /cal-com/v2/slots/available?eventTypeId={eventTypeId}&startTime={startTime}&endTime={endTime}Parameters:
eventTypeId- Required. The event type IDstartTime- Required. Start of range (ISO 8601)endTime- Required. End of range (ISO 8601)
Response:
{
"status": "success",
"data": {
"slots": {
"2026-02-13": [
{"time": "2026-02-13T17:00:00.000Z"},
{"time": "2026-02-13T17:30:00.000Z"},
{"time": "2026-02-13T18:00:00.000Z"}
],
"2026-02-14": [
{"time": "2026-02-14T14:00:00.000Z"}
]
}
}
}Reserve Slot
POST /cal-com/v2/slots/reserve
Content-Type: application/json
{
"eventTypeId": 4716831,
"slotUtcStartDate": "2026-02-20T14:00:00Z",
"slotUtcEndDate": "2026-02-20T14:30:00Z"
}Response:
{
"status": "success",
"data": "968ed924-83fb-4da7-969e-eaa621643535"
}List Connected Calendars
GET /cal-com/v2/calendarsResponse:
{
"status": "success",
"data": {
"connectedCalendars": [
{
"integration": {
"name": "Google Calendar",
"type": "google_calendar"
},
"calendars": [...]
}
]
}
}List Conferencing Apps
GET /cal-com/v2/conferencingResponse:
{
"status": "success",
"data": [
{
"id": 1769268,
"type": "google_video",
"appId": "google-meet"
}
]
}Get Default Conferencing App
GET /cal-com/v2/conferencing/defaultList Webhooks
GET /cal-com/v2/webhooksCreate Webhook
POST /cal-com/v2/webhooks
Content-Type: application/json
{
"subscriberUrl": "https://example.com/webhook",
"triggers": ["BOOKING_CREATED"],
"active": true
}Get Webhook
GET /cal-com/v2/webhooks/{webhookId}Update Webhook
PATCH /cal-com/v2/webhooks/{webhookId}
Content-Type: application/json
{
"active": false
}Delete Webhook
DELETE /cal-com/v2/webhooks/{webhookId}List Teams
GET /cal-com/v2/teamsList Verified Emails
GET /cal-com/v2/verified-resources/emails