Cal.com website screenshot

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.

13 APIs 0 Features
ProductivitySchedulingCalendarOpen SourceBooking

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

Pricing Plans

Cal Com Plans Pricing

6 plans

PLANS

Rate Limits

Cal Com Rate Limits

3 limits

RATE LIMITS

FinOps

Event 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...

ASYNCAPI

Resources

🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
💰
Pricing
Pricing
👥
GitHub
GitHub
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
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