Cal.com Teams / Bookings API

The Teams / Bookings API from Cal.com — 1 operation(s) for teams / bookings.

Operations 1

GET /v2/teams/{teamId}/bookings Get team bookings #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cal-com:cal-com-teams-bookings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cal-com-teams-bookings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cal.com API v2 Teams / Bookings API
  description: ''
  version: 1.0.0
  contact: {}
servers: []
tags:
- name: Teams / Bookings
paths:
  /v2/teams/{teamId}/bookings:
    get:
      description: If accessed using an OAuth access token, the `TEAM_BOOKING_READ` scope is required.
      operationId: TeamsBookingsController_getAllTeamBookings
      parameters:
      - name: Authorization
        in: header
        description: value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: true
        schema:
          type: string
      - name: status
        required: false
        in: query
        description: Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.
        schema:
          minItems: 1
          example: ?status=upcoming,past
          type: array
          items:
            type: string
            enum:
            - upcoming
            - recurring
            - past
            - cancelled
            - unconfirmed
      - name: attendeeEmail
        required: false
        in: query
        description: Filter bookings by the attendee's email address.
        schema:
          example: example@domain.com
          type: string
      - name: attendeeName
        required: false
        in: query
        description: Filter bookings by the attendee's name.
        schema:
          example: John Doe
          type: string
      - name: bookingUid
        required: false
        in: query
        description: Filter bookings by the booking Uid.
        schema:
          example: 2NtaeaVcKfpmSZ4CthFdfk
          type: string
      - name: eventTypeIds
        required: false
        in: query
        description: Filter bookings by event type ids. Event type ids must be separated by a comma.
        schema:
          minItems: 1
          example: ?eventTypeIds=100,200
          type: string
      - name: eventTypeId
        required: false
        in: query
        description: Filter bookings by event type id.
        schema:
          example: ?eventTypeId=100
          type: string
      - name: afterStart
        required: false
        in: query
        description: Filter bookings with start after this date string.
        schema:
          example: ?afterStart=2025-03-07T10:00:00.000Z
          type: string
      - name: beforeEnd
        required: false
        in: query
        description: Filter bookings with end before this date string.
        schema:
          example: ?beforeEnd=2025-03-07T11:00:00.000Z
          type: string
      - name: afterCreatedAt
        required: false
        in: query
        description: Filter bookings that have been created after this date string.
        schema:
          example: ?afterCreatedAt=2025-03-07T10:00:00.000Z
          type: string
      - name: beforeCreatedAt
        required: false
        in: query
        description: Filter bookings that have been created before this date string.
        schema:
          example: ?beforeCreatedAt=2025-03-14T11:00:00.000Z
          type: string
      - name: afterUpdatedAt
        required: false
        in: query
        description: Filter bookings that have been updated after this date string.
        schema:
          example: ?afterUpdatedAt=2025-03-07T10:00:00.000Z
          type: string
      - name: beforeUpdatedAt
        required: false
        in: query
        description: Filter bookings that have been updated before this date string.
        schema:
          example: ?beforeUpdatedAt=2025-03-14T11:00:00.000Z
          type: string
      - name: sortStart
        required: false
        in: query
        description: Sort results by their start time in ascending or descending order.
        schema:
          example: ?sortStart=asc OR ?sortStart=desc
          type: string
          enum:
          - asc
          - desc
      - name: sortEnd
        required: false
        in: query
        description: Sort results by their end time in ascending or descending order.
        schema:
          example: ?sortEnd=asc OR ?sortEnd=desc
          type: string
          enum:
          - asc
          - desc
      - name: sortCreated
        required: false
        in: query
        description: Sort results by their creation time (when booking was made) in ascending or descending order.
        schema:
          example: ?sortCreated=asc OR ?sortCreated=desc
          type: string
          enum:
          - asc
          - desc
      - name: sortUpdatedAt
        required: false
        in: query
        description: Sort results by their updated time (for example when booking status changes) in ascending or descending order.
        schema:
          example: ?sortUpdatedAt=asc OR ?sortUpdatedAt=desc
          type: string
          enum:
          - asc
          - desc
      - name: take
        required: false
        in: query
        description: The number of items to return
        schema:
          minimum: 1
          maximum: 250
          default: 100
          example: 10
          type: number
      - name: skip
        required: false
        in: query
        description: The number of items to skip
        schema:
          minimum: 0
          default: 0
          example: 0
          type: number
      - name: teamId
        required: true
        in: path
        description: The team's uuid (preferred), its short-uuid (Flickr Base58) form, or its numeric id.
        schema:
          anyOf:
          - type: string
          - type: number
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBookingsOutput_2024_08_13'
      summary: Get team bookings
      tags:
      - Teams / Bookings
      x-oauth-scopes:
      - TEAM_BOOKING_READ
components:
  schemas:
    RecurringBookingOutput_2024_08_13:
      type: object
      properties:
        id:
          type: number
          example: 123
        uid:
          type: string
          example: booking_uid_123
        title:
          type: string
          example: Consultation
        description:
          type: string
          example: Learn how to integrate scheduling into marketplace.
        hosts:
          type: array
          items:
            $ref: '#/components/schemas/BookingHost'
        status:
          enum:
          - cancelled
          - accepted
          - rejected
          - pending
          - awaiting_host
          type: string
          example: accepted
          description: '`awaiting_host` is an instant meeting that is live and waiting for a host to join.'
        cancellationReason:
          type: string
          example: User requested cancellation
        cancelledByEmail:
          type: string
          format: email
          example: canceller@example.com
        reschedulingReason:
          type: string
          example: User rescheduled the event
        rescheduledByEmail:
          type: string
          format: email
          example: rescheduler@example.com
        rescheduledFromUid:
          type: string
          example: previous_uid_123
          description: UID of the previous booking from which this booking was rescheduled.
        rescheduledToUid:
          type: string
          example: new_uid_456
          description: UID of the new booking to which this booking was rescheduled.
        start:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        end:
          type: string
          example: '2024-08-13T16:30:00Z'
          format: date-time
        duration:
          type: number
          example: 60
        eventTypeId:
          type: number
          example: 50
          deprecated: true
          description: Deprecated - rely on 'eventType' object containing the id instead.
        eventType:
          $ref: '#/components/schemas/EventType'
        eventUuid:
          type:
          - string
          - 'null'
          example: 0199b5d2-7c1e-7f3a-9b4d-2e6f8a1c3d5e
          description: UUID of the Event this booking belongs to. Pass it to `GET /v2/events/{uuid}` to fetch the Event. `null` when the booking is not for an Event.
        meetingUrl:
          type: string
          format: uri
          description: Deprecated - rely on 'location' field instead.
          example: https://example.com/recurring-meeting
          deprecated: true
        location:
          type: string
          example: https://example.com/meeting
        absentHost:
          type: boolean
          example: true
        createdAt:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          example: '2024-08-13T15:30:00Z'
          format: date-time
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            key: value
        rating:
          type: number
          example: 4
        icsUid:
          type: string
          example: ics_uid_123
          description: UID of ICS event.
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/BookingAttendee'
        guests:
          example:
          - guest1@example.com
          - guest2@example.com
          type: array
          items:
            type: string
        bookingFieldsResponses:
          type: object
          additionalProperties: true
          description: Booking field responses consisting of an object with booking field slug as keys and user response as values.
          example:
            customField: customValue
        recurringBookingUid:
          type: string
          example: recurring_uid_987
      required:
      - id
      - uid
      - title
      - description
      - hosts
      - status
      - start
      - end
      - duration
      - eventTypeId
      - eventType
      - location
      - absentHost
      - createdAt
      - updatedAt
      - attendees
      - bookingFieldsResponses
      - recurringBookingUid
    PaginationMetaDto:
      type: object
      properties:
        totalItems:
          type: number
          minimum: 0
          description: The total number of items available across all pages, matching the query criteria.
          example: 123
        remainingItems:
          type: number
          minimum: 0
          description: 'The number of items remaining to be fetched *after* the current page. Calculated as: `totalItems - (skip + itemsPerPage)`.'
          example: 103
        returnedItems:
          type: number
          minimum: 0
          description: The number of items returned in the current page.
          example: 10
        itemsPerPage:
          type: number
          minimum: 1
          description: The maximum number of items requested per page.
          example: 10
        currentPage:
          type: number
          minimum: 1
          description: The current page number being returned.
          example: 2
        totalPages:
          type: number
          minimum: 0
          description: The total number of pages available.
          example: 13
        hasNextPage:
          type: boolean
          description: Indicates if there is a subsequent page available after the current one.
          example: true
        hasPreviousPage:
          type: boolean
          description: Indicates if there is a preceding page available before the current one.
          example: true
      required:
      - totalItems
      - remainingItems
      - returnedItems
      - itemsPerPage
      - currentPage
      - totalPages
      - hasNextPage
      - hasPreviousPage
    GetSeatedBookingOutput_2024_08_13:
      type: object
      properties:
        id:
          type: number
          example: 123
        uid:
          type: string
          example: booking_uid_123
        title:
          type: string
          example: Consultation
        description:
          type: string
          example: Learn how to integrate scheduling into marketplace.
        hosts:
          type: array
          items:
            $ref: '#/components/schemas/BookingHost'
        status:
          enum:
          - cancelled
          - accepted
          - rejected
          - pending
          - awaiting_host
          type: string
          example: accepted
          description: '`awaiting_host` is an instant meeting that is live and waiting for a host to join.'
        cancellationReason:
          type: string
          example: User requested cancellation
        cancelledByEmail:
          type: string
          format: email
          example: canceller@example.com
        reschedulingReason:
          type: string
          example: User rescheduled the event
        rescheduledByEmail:
          type: string
          format: email
          example: rescheduler@example.com
        rescheduledFromUid:
          type: string
          example: previous_uid_123
          description: UID of the previous booking from which this booking was rescheduled.
        rescheduledToUid:
          type: string
          example: new_uid_456
          description: UID of the new booking to which this booking was rescheduled.
        start:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        end:
          type: string
          example: '2024-08-13T16:30:00Z'
          format: date-time
        duration:
          type: number
          example: 60
        eventTypeId:
          type: number
          example: 50
          deprecated: true
          description: Deprecated - rely on 'eventType' object containing the id instead.
        eventType:
          $ref: '#/components/schemas/EventType'
        eventUuid:
          type:
          - string
          - 'null'
          example: 0199b5d2-7c1e-7f3a-9b4d-2e6f8a1c3d5e
          description: UUID of the Event this booking belongs to. Pass it to `GET /v2/events/{uuid}` to fetch the Event. `null` when the booking is not for an Event.
        meetingUrl:
          type: string
          format: uri
          description: Deprecated - rely on 'location' field instead.
          example: https://example.com/recurring-meeting
          deprecated: true
        location:
          type: string
          example: https://example.com/meeting
        absentHost:
          type: boolean
          example: true
        createdAt:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          example: '2024-08-13T15:30:00Z'
          format: date-time
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            key: value
        rating:
          type: number
          example: 4
        icsUid:
          type: string
          example: ics_uid_123
          description: UID of ICS event.
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/SeatedAttendee'
      required:
      - id
      - uid
      - title
      - description
      - hosts
      - status
      - start
      - end
      - duration
      - eventTypeId
      - eventType
      - location
      - absentHost
      - createdAt
      - updatedAt
      - attendees
    GetBookingsOutput_2024_08_13:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
        data:
          type: array
          items:
            oneOf:
            - title: Booking
              $ref: '#/components/schemas/BookingOutput_2024_08_13'
            - title: Recurring Booking
              $ref: '#/components/schemas/RecurringBookingOutput_2024_08_13'
            - title: Seated Booking
              $ref: '#/components/schemas/GetSeatedBookingOutput_2024_08_13'
            - title: Recurring Seated Booking
              $ref: '#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13'
          description: Array of booking data, which can contain either BookingOutput objects or RecurringBookingOutput objects
        pagination:
          $ref: '#/components/schemas/PaginationMetaDto'
      required:
      - status
      - data
      - pagination
    SeatedAttendee:
      type: object
      properties:
        name:
          type: string
          example: John Doe
        email:
          type: string
          example: john@example.com
        displayEmail:
          type: string
          example: john@example.com
          description: Clean email for display purposes
        timeZone:
          type: string
          example: America/New_York
        language:
          enum:
          - ar
          - ca
          - de
          - es
          - eu
          - he
          - id
          - ja
          - lv
          - pl
          - ro
          - sr
          - th
          - vi
          - az
          - cs
          - el
          - es-419
          - fi
          - hr
          - it
          - km
          - nl
          - pt
          - ru
          - sv
          - tr
          - zh-CN
          - bg
          - da
          - en
          - et
          - fr
          - hu
          - iw
          - ko
          - 'no'
          - pt-BR
          - sk
          - sl
          - ta
          - uk
          - zh-TW
          - bn
          type: string
          example: en
        absent:
          type: boolean
          example: false
        phoneNumber:
          type: string
          example: '+1234567890'
        seatUid:
          type: string
          example: 3be561a9-31f1-4b8e-aefc-9d9a085f0dd1
        createdAt:
          type: string
          example: '2024-08-13T15:30:00Z'
          description: The date and time when the attendee joined the seated booking.
        bookingFieldsResponses:
          type: object
          additionalProperties: true
          description: Booking field responses consisting of an object with booking field slug as keys and user response as values.
          example:
            customField: customValue
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            key: value
        status:
          type: string
          enum:
          - cancelled
          example: cancelled
          description: Present on API version 2026-02-25 and later when this attendee was loaded from a cancelled seat. Omitted for occupied seats.
        confirmationStatus:
          enum:
          - pending
          - accepted
          - rejected
          type: string
          example: accepted
          description: Confirmation verdict of this live seat. Omitted when the attendee has no live seat. An attendee loaded from a cancelled seat has status cancelled and does not include confirmationStatus.
      required:
      - name
      - email
      - displayEmail
      - timeZone
      - absent
      - seatUid
      - bookingFieldsResponses
    BookingAttendee:
      type: object
      properties:
        name:
          type: string
          example: John Doe
        email:
          type: string
          example: john@example.com
        displayEmail:
          type: string
          example: john@example.com
          description: Clean email for display purposes
        timeZone:
          type: string
          example: America/New_York
        language:
          enum:
          - ar
          - ca
          - de
          - es
          - eu
          - he
          - id
          - ja
          - lv
          - pl
          - ro
          - sr
          - th
          - vi
          - az
          - cs
          - el
          - es-419
          - fi
          - hr
          - it
          - km
          - nl
          - pt
          - ru
          - sv
          - tr
          - zh-CN
          - bg
          - da
          - en
          - et
          - fr
          - hu
          - iw
          - ko
          - 'no'
          - pt-BR
          - sk
          - sl
          - ta
          - uk
          - zh-TW
          - bn
          type: string
          example: en
        absent:
          type: boolean
          example: false
        phoneNumber:
          type: string
          example: '+1234567890'
      required:
      - name
      - email
      - displayEmail
      - timeZone
      - absent
    GetRecurringSeatedBookingOutput_2024_08_13:
      type: object
      properties:
        id:
          type: number
          example: 123
        uid:
          type: string
          example: booking_uid_123
        title:
          type: string
          example: Consultation
        description:
          type: string
          example: Learn how to integrate scheduling into marketplace.
        hosts:
          type: array
          items:
            $ref: '#/components/schemas/BookingHost'
        status:
          enum:
          - cancelled
          - accepted
          - rejected
          - pending
          - awaiting_host
          type: string
          example: accepted
          description: '`awaiting_host` is an instant meeting that is live and waiting for a host to join.'
        cancellationReason:
          type: string
          example: User requested cancellation
        cancelledByEmail:
          type: string
          format: email
          example: canceller@example.com
        reschedulingReason:
          type: string
          example: User rescheduled the event
        rescheduledByEmail:
          type: string
          format: email
          example: rescheduler@example.com
        rescheduledFromUid:
          type: string
          example: previous_uid_123
          description: UID of the previous booking from which this booking was rescheduled.
        rescheduledToUid:
          type: string
          example: new_uid_456
          description: UID of the new booking to which this booking was rescheduled.
        start:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        end:
          type: string
          example: '2024-08-13T16:30:00Z'
          format: date-time
        duration:
          type: number
          example: 60
        eventTypeId:
          type: number
          example: 50
          deprecated: true
          description: Deprecated - rely on 'eventType' object containing the id instead.
        eventType:
          $ref: '#/components/schemas/EventType'
        eventUuid:
          type:
          - string
          - 'null'
          example: 0199b5d2-7c1e-7f3a-9b4d-2e6f8a1c3d5e
          description: UUID of the Event this booking belongs to. Pass it to `GET /v2/events/{uuid}` to fetch the Event. `null` when the booking is not for an Event.
        meetingUrl:
          type: string
          format: uri
          description: Deprecated - rely on 'location' field instead.
          example: https://example.com/recurring-meeting
          deprecated: true
        location:
          type: string
          example: https://example.com/meeting
        absentHost:
          type: boolean
          example: true
        createdAt:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          example: '2024-08-13T15:30:00Z'
          format: date-time
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            key: value
        rating:
          type: number
          example: 4
        icsUid:
          type: string
          example: ics_uid_123
          description: UID of ICS event.
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/SeatedAttendee'
        recurringBookingUid:
          type: string
          example: recurring_uid_987
      required:
      - id
      - uid
      - title
      - description
      - hosts
      - status
      - start
      - end
      - duration
      - eventTypeId
      - eventType
      - location
      - absentHost
      - createdAt
      - updatedAt
      - attendees
      - recurringBookingUid
    BookingOutput_2024_08_13:
      type: object
      properties:
        id:
          type: number
          example: 123
        uid:
          type: string
          example: booking_uid_123
        title:
          type: string
          example: Consultation
        description:
          type: string
          example: Learn how to integrate scheduling into marketplace.
        hosts:
          type: array
          items:
            $ref: '#/components/schemas/BookingHost'
        status:
          enum:
          - cancelled
          - accepted
          - rejected
          - pending
          - awaiting_host
          type: string
          example: accepted
          description: '`awaiting_host` is an instant meeting that is live and waiting for a host to join.'
        cancellationReason:
          type: string
          example: User requested cancellation
        cancelledByEmail:
          type: string
          format: email
          example: canceller@example.com
        reschedulingReason:
          type: string
          example: User rescheduled the event
        rescheduledByEmail:
          type: string
          format: email
          example: rescheduler@example.com
        rescheduledFromUid:
          type: string
          example: previous_uid_123
          description: UID of the previous booking from which this booking was rescheduled.
        rescheduledToUid:
          type: string
          example: new_uid_456
          description: UID of the new booking to which this booking was rescheduled.
        start:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        end:
          type: string
          example: '2024-08-13T16:30:00Z'
          format: date-time
        duration:
          type: number
          example: 60
        eventTypeId:
          type: number
          example: 50
          deprecated: true
          description: Deprecated - rely on 'eventType' object containing the id instead.
        eventType:
          $ref: '#/components/schemas/EventType'
        eventUuid:
          type:
          - string
          - 'null'
          example: 0199b5d2-7c1e-7f3a-9b4d-2e6f8a1c3d5e
          description: UUID of the Event this booking belongs to. Pass it to `GET /v2/events/{uuid}` to fetch the Event. `null` when the booking is not for an Event.
        meetingUrl:
          type: string
          format: uri
          description: Deprecated - rely on 'location' field instead.
          example: https://example.com/recurring-meeting
          deprecated: true
        location:
          type: string
          example: https://example.com/meeting
        absentHost:
          type: boolean
          example: true
        createdAt:
          type: string
          example: '2024-08-13T15:30:00Z'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          example: '2024-08-13T15:30:00Z'
          format: date-time
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            key: value
        rating:
          type: number
          example: 4
        icsUid:
          type: string
          example: ics_uid_123
          description: UID of ICS event.
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/BookingAttendee'
        guests:
          example:
          - guest1@example.com
          - guest2@example.com
          type: array
          items:
            type: string
        bookingFieldsResponses:
          type: object
          additionalProperties: true
          description: Booking field responses consisting of an object with booking field slug as keys and user response as values.
          example:
            customField: customValue
      required:
      - id
      - uid
      - title
      - description
      - hosts
      - status
      - start
      - end
      - duration
      - eventTypeId
      - eventType
      - location
      - absentHost
      - createdAt
      - updatedAt
      - attendees
      - bookingFieldsResponses
    EventType:
      type: object
      properties:
        id:
          type: number
          example: 1
        slug:
          type: string
          example: some-event
      required:
      - id
      - slug
    BookingHost:
      type: object
      properties:
        id:
          type: number
          example: 1
        uuid:
          type: string
          format: uuid
          example: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
        name:
          type: string
          example: Jane Doe
        email:
          type: string
          example: jane100@example.com
        displayEmail:
          type: string
          example: jane100@example.com
          description: Clean email for display purposes
        username:
          type: string
          example: jane100
        timeZone:
          type: string
          example: America/Los_Angeles
      required:
      - id
      - uuid
      - name
      - email
      - displayEmail
      - username
      - timeZone
x-provenance:
  method: harvested
  publisher: Cal.com
  source: https://cal.com/docs/api-reference/v2/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)