Cal.com
Cal.com is open-source scheduling infrastructure (Calendly alternative) available as a managed cloud service or self-hosted deployment. The Cal.com API v2 exposes bookings, event types, schedules, availability, slots, webhooks, OAuth, teams, organizations, OOO, conferencing, destination calendars, and the Cal.com Atoms (Platform) for embedding scheduling primitives into other apps.
APIs
Cal.com Bookings API
Create, read, update, cancel, and reschedule bookings. Supports recurring, seated, and round-robin booking flows.
Cal.com Event Types API
Manage event types (meeting templates) — duration, location, fields, locations, payment, recurrence, and team round-robin assignments.
Cal.com Schedules API
Manage user schedules — weekly working hours, date overrides, and timezone defaults.
Cal.com Availability API
Compute and read user/team availability across event types, accounting for connected calendars and overrides.
Cal.com Slots API
Reserve, list, and release bookable time slots for event types — used by booking page UIs to lock a slot before confirmation.
Cal.com Webhooks API
Subscribe to BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED, MEETING_STARTED, and other events; deliveries POST to a developer-defined endpoint.
Cal.com OAuth & Auth API
OAuth client management, token issuance, and refresh — primarily used by Cal.com Platform integrations to manage end-user accounts under a hosting application.
Cal.com Teams API
Manage teams, team members, and team event types for collective and round-robin scheduling.
Cal.com Organizations API
Top-level organizations API for managing sub-teams, members, and organization-wide event types and routing forms.
Cal.com Out-of-Office API
Mark users as out-of-office for a date range, with optional automatic forwarding to a delegate.
Cal.com Conferencing API
Connect and manage video-conferencing apps (Zoom, Google Meet, Microsoft Teams, Cal Video, Daily, etc.) used as event-type locations.
Cal.com Destination Calendars API
Connect Google, Outlook/Office 365, Apple, and CalDAV calendars; choose where new bookings are written and where conflicts are read from.
Cal.com Atoms (Platform)
Cal.com Platform exposes pre-built React components ("Atoms") and a managed-user OAuth model so SaaS apps can embed scheduling primitives end-to-end. Used by platforms that want...
Collections
Cal.diy API v2
OPENPricing Plans
Rate Limits
FinOps
Cal Com Finops
FINOPSEvent Specifications
Cal.com Webhooks
AsyncAPI definition for Cal.com's webhook surface. Cal.com webhooks are HTTP POST deliveries from Cal.com to a developer-defined `subscriberUrl` registered via the Cal.com Webho...
ASYNCAPIResources
Sources
opencollection: 1.0.0
info:
name: Cal.diy API v2
version: 1.0.0
items:
- info:
name: Api Keys
type: folder
items:
- info:
name: Refresh API Key
type: http
http:
method: POST
url: '{{baseUrl}}/v2/api-keys/refresh'
headers:
- name: Authorization
value: ''
body:
type: json
data: '{}'
docs: 'Generate a new API key and delete the current one. Provide API key to refresh as a Bearer token in the Authorization
header (e.g. "Authorization: Bearer <apiKey>").'
- info:
name: Bookings
type: folder
items:
- info:
name: Get all bookings
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: status
value: ''
type: query
description: Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.
- name: attendeeEmail
value: ''
type: query
description: Filter bookings by the attendee's email address.
- name: attendeeName
value: ''
type: query
description: Filter bookings by the attendee's name.
- name: bookingUid
value: ''
type: query
description: Filter bookings by the booking Uid.
- name: eventTypeIds
value: ''
type: query
description: Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.
- name: eventTypeId
value: ''
type: query
description: Filter bookings by event type id belonging to the user.
- name: teamsIds
value: ''
type: query
description: Filter bookings by team ids that user is part of. Team ids must be separated by a comma.
- name: teamId
value: ''
type: query
description: Filter bookings by team id that user is part of
- name: afterStart
value: ''
type: query
description: Filter bookings with start after this date string.
- name: beforeEnd
value: ''
type: query
description: Filter bookings with end before this date string.
- name: afterCreatedAt
value: ''
type: query
description: Filter bookings that have been created after this date string.
- name: beforeCreatedAt
value: ''
type: query
description: Filter bookings that have been created before this date string.
- name: afterUpdatedAt
value: ''
type: query
description: Filter bookings that have been updated after this date string.
- name: beforeUpdatedAt
value: ''
type: query
description: Filter bookings that have been updated before this date string.
- name: sortStart
value: ''
type: query
description: Sort results by their start time in ascending or descending order.
- name: sortEnd
value: ''
type: query
description: Sort results by their end time in ascending or descending order.
- name: sortCreated
value: ''
type: query
description: Sort results by their creation time (when booking was made) in ascending or descending order.
- name: sortUpdatedAt
value: ''
type: query
description: Sort results by their updated time (for example when booking status changes) in ascending or descending
order.
- name: take
value: ''
type: query
description: The number of items to return
- name: skip
value: ''
type: query
description: The number of items to skip
docs: <Note>Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing
the correct value will default to an older version of this endpoint.</Note>
- info:
name: Create a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
- name: x-cal-secret-key
value: ''
- name: x-cal-client-id
value: ''
body:
type: json
data: '{}'
docs: "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request\
\ bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then\
\ regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\
\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the\
\ goal of making it as seamless for develope"
- info:
name: Get a booking by seat UID
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/by-seat/:seatUid'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
- name: x-cal-secret-key
value: ''
- name: x-cal-client-id
value: ''
params:
- name: seatUid
value: ''
type: path
docs: "Get a seated booking by its seat reference UID. This is useful when you have a seatUid from a seated booking and\
\ want to retrieve the full booking details.\n\n If you are fetching a seated booking for an event type with 'show\
\ attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type\
\ level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org\
\ admin or owner.\n\n <Note>Please make su"
- info:
name: Get a booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
- name: x-cal-secret-key
value: ''
- name: x-cal-client-id
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "`:bookingUid` can be\n\n 1. uid of a normal booking\n\n 2. uid of one of the recurring booking recurrences\n\
\n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid\
\ on one of the individual recurrences).\n\n If you are fetching a seated booking for an event type with 'show\
\ attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type\
\ level or\n you have to prov"
- info:
name: Get all the recordings for the booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/recordings'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Fetches all the recordings for the booking `:bookingUid`. Requires authentication and proper authorization. Access\
\ is granted if you are the booking organizer, team admin or org admin/owner.\n\n <Note>cal-api-version: `2024-08-13`\
\ is required in the request header.</Note>\n "
- info:
name: Get Cal Video real time transcript download links for the booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/transcripts'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Fetches all the transcript download links for the booking `:bookingUid`\n\n <Note>\n Transcripts are generated\
\ when clicking \"Transcribe\" during a Cal Video meeting. Download links are valid for 1 hour only - make a new request\
\ to generate fresh links after expiration.\n\n Please make sure to pass in the cal-api-version header value as mentioned\
\ in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n </Note>\n\
\ "
- info:
name: Reschedule a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/reschedule'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
- name: x-cal-secret-key
value: ''
- name: x-cal-client-id
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: "Reschedule a booking or seated booking\n\n <Note>Please make sure to pass in the cal-api-version header value\
\ as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.</Note>\n\
\ "
- info:
name: Cancel a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/cancel'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
- name: x-cal-secret-key
value: ''
- name: x-cal-client-id
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: ":bookingUid can be :bookingUid of an usual booking, individual recurrence or recurring booking to cancel all recurrences.\n\
\n \nCancelling normal bookings:\n If the booking is not seated and not recurring, simply pass :bookingUid in\
\ the request URL `/bookings/:bookingUid/cancel` and optionally cancellationReason in the request body `{\"cancellationReason\"\
: \"Will travel\"}`.\n\n \nCancelling seated bookings:\n It is possible to cancel specific seat within a booking\
\ as an attendee or all of the "
- info:
name: Mark a booking absence
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/mark-absent'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: "The provided authorization header refers to the owner of the booking.\n\n <Note>Please make sure to pass in\
\ the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to\
\ an older version of this endpoint.</Note>\n "
- info:
name: Reassign a booking to auto-selected host
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/reassign'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to\
\ the owner of the booking.\n\n <Note>Please make sure to pass in the cal-api-version header value as mentioned\
\ in the Headers section. Not passing the correct value will default to an older version of this endpoint.</Note>\n\
\ "
- info:
name: Reassign a booking to a specific host
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/reassign/:userId'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
- name: userId
value: ''
type: path
body:
type: json
data: '{}'
docs: "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to\
\ the owner of the booking.\n\n <Note>Please make sure to pass in the cal-api-version header value as mentioned\
\ in the Headers section. Not passing the correct value will default to an older version of this endpoint.</Note>\n\
\ "
- info:
name: Confirm a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/confirm'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "The provided authorization header refers to the owner of the booking.\n\n <Note>Please make sure to pass in\
\ the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to\
\ an older version of this endpoint.</Note>\n "
- info:
name: Decline a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/decline'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: "The provided authorization header refers to the owner of the booking.\n\n <Note>Please make sure to pass in\
\ the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to\
\ an older version of this endpoint.</Note>\n "
- info:
name: Get 'Add to Calendar' links for a booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/calendar-links'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Retrieve calendar links for a booking that can be used to add the event to various calendar services. Returns links\
\ for Google Calendar, Microsoft Office, Microsoft Outlook, and a downloadable ICS file.\n\n <Note>Please make\
\ sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value\
\ will default to an older version of this endpoint.</Note>\n "
- info:
name: Get booking references
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/references'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
- name: type
value: ''
type: query
description: Filter booking references by type
docs: <Note>Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing
the correct value will default to an older version of this endpoint.</Note>
- info:
name: Get Video Meeting Sessions. Only supported for Cal Video
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/conferencing-sessions'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Requires authentication and proper authorization. Access is granted if you are the booking organizer, team admin\
\ or org admin/owner.\n\n <Note>cal-api-version: `2024-08-13` is required in the request header.</Note>"
- info:
name: Update booking location for an existing booking
type: http
http:
method: PATCH
url: '{{baseUrl}}/v2/bookings/:bookingUid/location'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: 'Updates the location for an existing booking.
**Integration Fallback Behavior:**
- **Google Meet**: Requires Google Calendar to be connected. If the booking has no Google Calendar event, it will automatically
fall back to Cal Video.
- **MS Teams**: If Office 365 Calendar is connected, generates the meeting link via calendar. Otherwise, uses the MS
Teams video integration directly.
<Note>The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error'
- info:
name: Bookings / Attendees
type: folder
items:
- info:
name: Get all attendees for a booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/attendees'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
docs: "Retrieve all attendees for a specific booking by its UID.\n \n <Note>The cal-api-version header is required\
\ for this endpoint. Without it, the request will fail with a 404 error.</Note>\n "
- info:
name: Add an attendee to a booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/attendees'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: "Add a new attendee to an existing booking by its UID.\n\n **Side effects:**\n - The booking's attendee\
\ list is updated in the database\n - The calendar event is updated on connected calendars (Google Calendar, Outlook,\
\ etc.) to include the new attendee\n - An email notification is sent to the new attendee with the booking details\n\
\n **Permissions:**\n - The authenticated user must be either the booking organizer, an existing attendee,\
\ or have the `booking.update` permissio"
- info:
name: Get a specific attendee for a booking
type: http
http:
method: GET
url: '{{baseUrl}}/v2/bookings/:bookingUid/attendees/:attendeeId'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
- name: attendeeId
value: ''
type: path
docs: "Retrieve a specific attendee by their ID for a booking identified by its UID.\n \n <Note>The cal-api-version\
\ header is required for this endpoint. Without it, the request will fail with a 404 error.</Note>\n "
- info:
name: Remove an attendee from a booking
type: http
http:
method: DELETE
url: '{{baseUrl}}/v2/bookings/:bookingUid/attendees/:attendeeId'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
- name: attendeeId
value: ''
type: path
docs: "Remove an attendee from an existing booking by their attendee ID. The primary attendee (first attendee) cannot\
\ be removed — to remove them, cancel the booking instead. The removed attendee will receive a cancellation email notification.\n\
\n <Note>The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.</Note>\n\
\ "
- info:
name: Bookings / Guests
type: folder
items:
- info:
name: Add guests to an existing booking
type: http
http:
method: POST
url: '{{baseUrl}}/v2/bookings/:bookingUid/guests'
headers:
- name: cal-api-version
value: ''
- name: Authorization
value: ''
params:
- name: bookingUid
value: ''
type: path
body:
type: json
data: '{}'
docs: "Add one or more guests to an existing booking. Maximum 10 guests per request, with a limit of 30 total guests per\
\ booking.\n \n **Rate Limiting:**\n This endpoint is rate limited to 5 requests per minute to prevent abuse.\n\
\ \n **Email Notifications:**\n When guests are added, the following notifications are sent (unless disabled\
\ by event type settings):\n \n - **Organizer & Team Members:** Receive an \"Add Guests\" notification email informing\
\ them that new guests have been added t"
- info:
name: Cal Unified Calendars
type: folder
items:
- info:
name: List calendar connections
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/connections'
headers:
- name: Authorization
value: ''
docs: 'Returns all calendar connections for the authenticated user (Google, Office 365, Apple). Use connectionId in connection-scoped
endpoints. Note: Event CRUD (list/create/get/update/delete events) is currently only supported for Google Calendar connections;
other types will return 400.'
- info:
name: List events for a connection
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/events'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
description: Calendar connection ID from GET /connections
- name: from
value: ''
type: query
description: Start of the date range (ISO 8601 date or date-time)
- name: to
value: ''
type: query
description: End of the date range (ISO 8601 date or date-time)
- name: timeZone
value: ''
type: query
description: IANA time zone for the request (e.g. America/New_York)
- name: calendarId
value: ''
type: query
description: Calendar ID. Use 'primary' for the user's primary calendar, or the external ID of a connected calendar.
docs: List events in a date range for a specific calendar connection. Only supported for Google Calendar connections;
other connection types return 400.
- info:
name: Create event on a connection
type: http
http:
method: POST
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/events'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
- name: calendarId
value: ''
type: query
body:
type: json
data: '{}'
docs: Create a new event on the specified calendar connection. Only supported for Google Calendar connections; other connection
types return 400.
- info:
name: Get event for a connection
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/events/:eventId'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
- name: eventId
value: ''
type: path
- name: calendarId
value: ''
type: query
docs: Get a single event by ID for the specified calendar connection. Only supported for Google Calendar connections;
other connection types return 400.
- info:
name: Update event for a connection
type: http
http:
method: PATCH
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/events/:eventId'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
- name: eventId
value: ''
type: path
- name: calendarId
value: ''
type: query
body:
type: json
data: '{}'
docs: Update an event on the specified calendar connection. Only supported for Google Calendar connections; other connection
types return 400.
- info:
name: Delete event for a connection
type: http
http:
method: DELETE
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/events/:eventId'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
- name: eventId
value: ''
type: path
- name: calendarId
value: ''
type: query
docs: Delete/cancel an event on the specified calendar connection. Only supported for Google Calendar connections; other
connection types return 400.
- info:
name: Get free/busy for a connection
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/connections/:connectionId/freebusy'
headers:
- name: Authorization
value: ''
params:
- name: connectionId
value: ''
type: path
- name: from
value: ''
type: query
description: Start of the date range (ISO 8601 date or date-time)
- name: to
value: ''
type: query
description: End of the date range (ISO 8601 date or date-time)
- name: timeZone
value: ''
type: query
description: IANA time zone (e.g. America/New_York)
docs: Get busy time slots for the specified calendar connection.
- info:
name: Get meeting details from calendar
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/:calendar/events/:eventUid'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: eventUid
value: ''
type: path
description: 'The Google Calendar event ID. You can retrieve this by getting booking references from the following
endpoints:
- For team events: GET /v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references
- For user events: GET /v2/bookings/{bookingUid}/references'
docs: Returns detailed information about a meeting including attendance metrics. The singular /event/ path is deprecated
— use /events/ (plural) instead. For connection-scoped access use GET /connections/{connectionId}/events/{eventId}.
- info:
name: Update meeting details in calendar
type: http
http:
method: PATCH
url: '{{baseUrl}}/v2/calendars/:calendar/events/:eventUid'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: eventUid
value: ''
type: path
description: 'The Google Calendar event ID. You can retrieve this by getting booking references from the following
endpoints:
- For team events: GET /v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references
- For user events: GET /v2/bookings/{bookingUid}/references'
body:
type: json
data: '{}'
docs: Updates event information in the specified calendar provider. The singular /event/ path is deprecated — use /events/
(plural) instead. For connection-scoped access use PATCH /connections/{connectionId}/events/{eventId}.
- info:
name: Delete a calendar event
type: http
http:
method: DELETE
url: '{{baseUrl}}/v2/calendars/:calendar/events/:eventUid'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: eventUid
value: ''
type: path
description: The calendar provider's event ID (e.g. Google Calendar event ID)
docs: Delete/cancel an event on the authenticated user's calendar. Currently only Google Calendar is supported.
- info:
name: Get meeting details from calendar
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/:calendar/event/:eventUid'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: eventUid
value: ''
type: path
description: 'The Google Calendar event ID. You can retrieve this by getting booking references from the following
endpoints:
- For team events: GET /v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references
- For user events: GET /v2/bookings/{bookingUid}/references'
docs: Returns detailed information about a meeting including attendance metrics. The singular /event/ path is deprecated
— use /events/ (plural) instead. For connection-scoped access use GET /connections/{connectionId}/events/{eventId}.
- info:
name: Update meeting details in calendar
type: http
http:
method: PATCH
url: '{{baseUrl}}/v2/calendars/:calendar/event/:eventUid'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: eventUid
value: ''
type: path
description: 'The Google Calendar event ID. You can retrieve this by getting booking references from the following
endpoints:
- For team events: GET /v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references
- For user events: GET /v2/bookings/{bookingUid}/references'
body:
type: json
data: '{}'
docs: Updates event information in the specified calendar provider. The singular /event/ path is deprecated — use /events/
(plural) instead. For connection-scoped access use PATCH /connections/{connectionId}/events/{eventId}.
- info:
name: List calendar events
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/:calendar/events'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: from
value: ''
type: query
description: Start of the date range (ISO 8601 date or date-time)
- name: to
value: ''
type: query
description: End of the date range (ISO 8601 date or date-time)
- name: timeZone
value: ''
type: query
description: IANA time zone for the request (e.g. America/New_York)
- name: calendarId
value: ''
type: query
description: Calendar ID. Use 'primary' for the user's primary calendar, or the external ID of a connected calendar.
docs: List events in a date range for the authenticated user's calendar. Currently only Google Calendar is supported.
- info:
name: Create a calendar event
type: http
http:
method: POST
url: '{{baseUrl}}/v2/calendars/:calendar/events'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
body:
type: json
data: '{}'
docs: Create a new event on the authenticated user's calendar. Currently only Google Calendar is supported.
- info:
name: Get free/busy times
type: http
http:
method: GET
url: '{{baseUrl}}/v2/calendars/:calendar/freebusy'
headers:
- name: Authorization
value: ''
params:
- name: calendar
value: ''
type: path
- name: from
value: ''
type: query
description: Start of the date range (ISO 8601 date or date-time)
- name: to
value: ''
type: query
description: End of the date range (ISO 8601 date or date-time)
- name: timeZone
value: ''
type: query
description: IANA time zone (e.g. America/New_York)
docs: Get busy time slots for the authenticated user's selected calendars in the given date range. Currently only Google
Calendar is supported.
- info:
name: Calendars
type: folder
items:
- info:
name: Save an ICS feed
type: http
http:
method: POST
url: '{{baseUrl}}/v2/calendars/ics-feed/save'
headers:
- name: Authorization
value: ''
body:
type: jso
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cal-com/refs/heads/main/apis.yml