Cal.com Orgs / Users / Schedules API

The Orgs / Users / Schedules API from Cal.com — 2 operation(s) for orgs / users / schedules.

Operations 5

POST /v2/organizations/{orgId}/users/{userId}/schedules Create a schedule #
GET /v2/organizations/{orgId}/users/{userId}/schedules Get all schedules #
GET /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} Get a schedule #
PATCH /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} Update a schedule #
DELETE /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} Delete a schedule #

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-orgs-users-schedules-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-orgs-users-schedules-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cal.com API v2 Orgs / Users / Schedules API
  description: ''
  version: 1.0.0
  contact: {}
servers: []
tags:
- name: Orgs / Users / Schedules
paths:
  /v2/organizations/{orgId}/users/{userId}/schedules:
    post:
      description: 'Required membership role: `org admin`. PBAC permission: `availability.create`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `ORG_SCHEDULE_WRITE` scope is required.'
      operationId: OrganizationsSchedulesController_createUserSchedule
      parameters:
      - name: Authorization
        in: header
        description: For non-platform customers - value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: false
        schema:
          type: string
      - name: x-cal-secret-key
        in: header
        description: For platform customers - OAuth client secret key
        required: false
        schema:
          type: string
      - name: x-cal-client-id
        in: header
        description: For platform customers - OAuth client ID
        required: false
        schema:
          type: string
      - name: userId
        required: true
        in: path
        schema:
          type: number
      - name: orgId
        required: true
        in: path
        schema:
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScheduleInput_2024_06_11'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateScheduleOutput_2024_06_11'
      summary: Create a schedule
      tags:
      - Orgs / Users / Schedules
      x-oauth-scopes:
      - ORG_SCHEDULE_WRITE
      x-platform-plan: ESSENTIALS
    get:
      description: 'Required membership role: `org admin`. PBAC permission: `availability.readOrgAvailability`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `ORG_SCHEDULE_READ` scope is required.'
      operationId: OrganizationsSchedulesController_getUserSchedules
      parameters:
      - name: Authorization
        in: header
        description: For non-platform customers - value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: false
        schema:
          type: string
      - name: x-cal-secret-key
        in: header
        description: For platform customers - OAuth client secret key
        required: false
        schema:
          type: string
      - name: x-cal-client-id
        in: header
        description: For platform customers - OAuth client ID
        required: false
        schema:
          type: string
      - name: userId
        required: true
        in: path
        schema:
          type: number
      - name: orgId
        required: true
        in: path
        schema:
          type: number
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSchedulesOutput_2024_06_11'
      summary: Get all schedules
      tags:
      - Orgs / Users / Schedules
      x-oauth-scopes:
      - ORG_SCHEDULE_READ
      x-platform-plan: ESSENTIALS
  /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}:
    get:
      description: 'Required membership role: `org admin`. PBAC permission: `availability.readOrgAvailability`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `ORG_SCHEDULE_READ` scope is required.'
      operationId: OrganizationsSchedulesController_getUserSchedule
      parameters:
      - name: Authorization
        in: header
        description: For non-platform customers - value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: false
        schema:
          type: string
      - name: x-cal-secret-key
        in: header
        description: For platform customers - OAuth client secret key
        required: false
        schema:
          type: string
      - name: x-cal-client-id
        in: header
        description: For platform customers - OAuth client ID
        required: false
        schema:
          type: string
      - name: userId
        required: true
        in: path
        schema:
          type: number
      - name: scheduleId
        required: true
        in: path
        schema:
          type: number
      - name: orgId
        required: true
        in: path
        schema:
          type: number
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetScheduleOutput_2024_06_11'
      summary: Get a schedule
      tags:
      - Orgs / Users / Schedules
      x-oauth-scopes:
      - ORG_SCHEDULE_READ
      x-platform-plan: ESSENTIALS
    patch:
      description: 'Required membership role: `org admin`. PBAC permission: `availability.updateOrgAvailability`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `ORG_SCHEDULE_WRITE` scope is required.'
      operationId: OrganizationsSchedulesController_updateUserSchedule
      parameters:
      - name: Authorization
        in: header
        description: For non-platform customers - value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: false
        schema:
          type: string
      - name: x-cal-secret-key
        in: header
        description: For platform customers - OAuth client secret key
        required: false
        schema:
          type: string
      - name: x-cal-client-id
        in: header
        description: For platform customers - OAuth client ID
        required: false
        schema:
          type: string
      - name: userId
        required: true
        in: path
        schema:
          type: number
      - name: scheduleId
        required: true
        in: path
        schema:
          type: number
      - name: orgId
        required: true
        in: path
        schema:
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScheduleInput_2024_06_11'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateScheduleOutput_2024_06_11'
      summary: Update a schedule
      tags:
      - Orgs / Users / Schedules
      x-oauth-scopes:
      - ORG_SCHEDULE_WRITE
      x-platform-plan: ESSENTIALS
    delete:
      description: 'Required membership role: `org admin`. PBAC permission: `availability.delete`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `ORG_SCHEDULE_WRITE` scope is required.'
      operationId: OrganizationsSchedulesController_deleteUserSchedule
      parameters:
      - name: Authorization
        in: header
        description: For non-platform customers - value must be `Bearer <token>` where `<token>` is api key prefixed with cal_
        required: false
        schema:
          type: string
      - name: x-cal-secret-key
        in: header
        description: For platform customers - OAuth client secret key
        required: false
        schema:
          type: string
      - name: x-cal-client-id
        in: header
        description: For platform customers - OAuth client ID
        required: false
        schema:
          type: string
      - name: userId
        required: true
        in: path
        schema:
          type: number
      - name: scheduleId
        required: true
        in: path
        schema:
          type: number
      - name: orgId
        required: true
        in: path
        schema:
          type: number
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteScheduleOutput_2024_06_11'
      summary: Delete a schedule
      tags:
      - Orgs / Users / Schedules
      x-oauth-scopes:
      - ORG_SCHEDULE_WRITE
      x-platform-plan: ESSENTIALS
components:
  schemas:
    CreateScheduleOutput_2024_06_11:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
        data:
          $ref: '#/components/schemas/ScheduleOutput_2024_06_11'
      required:
      - status
      - data
    UpdateScheduleOutput_2024_06_11:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
        data:
          $ref: '#/components/schemas/ScheduleOutput_2024_06_11'
      required:
      - status
      - data
    ScheduleAvailabilityInput_2024_06_11:
      type: object
      properties:
        days:
          type: array
          items:
            type: string
            enum:
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
            - Sunday
          example:
          - Monday
          - Tuesday
          description: Array of days when schedule is active.
        startTime:
          type: string
          example: 08:00
          description: startTime must be a valid time in format HH:MM e.g. 08:00
        endTime:
          type: string
          example: '15:00'
          description: endTime must be a valid time in format HH:MM e.g. 15:00
      required:
      - days
      - startTime
      - endTime
    UpdateScheduleInput_2024_06_11:
      type: object
      properties:
        name:
          type: string
          example: One-on-one coaching
        timeZone:
          type: string
          example: Europe/Rome
        availability:
          example:
          - days:
            - Monday
            - Tuesday
            startTime: 09:00
            endTime: '10:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleAvailabilityInput_2024_06_11'
        isDefault:
          type: boolean
          example: true
        overrides:
          example:
          - date: '2024-05-20'
            startTime: '12:00'
            endTime: '14:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleOverrideInput_2024_06_11'
    CreateScheduleInput_2024_06_11:
      type: object
      properties:
        name:
          type: string
          example: Catch up hours
        timeZone:
          type: string
          example: Europe/Rome
          description: Timezone is used to calculate available times when an event using the schedule is booked.
        availability:
          description: Each object contains days and times when the user is available. If not passed, the default availability is Monday to Friday from 09:00 to 17:00.
          example:
          - days:
            - Monday
            - Tuesday
            startTime: '17:00'
            endTime: '19:00'
          - days:
            - Wednesday
            - Thursday
            startTime: '16:00'
            endTime: '20:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleAvailabilityInput_2024_06_11'
        isDefault:
          type: boolean
          example: true
          description: "Each user should have 1 default schedule. If you specified `timeZone` when creating managed user, then the default schedule will be created with that timezone.\n    Default schedule means that if an event type is not tied to a specific schedule then the default schedule is used."
        overrides:
          description: Need to change availability for a specific date? Add an override.
          example:
          - date: '2024-05-20'
            startTime: '18:00'
            endTime: '21:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleOverrideInput_2024_06_11'
      required:
      - name
      - timeZone
      - isDefault
    ScheduleOutput_2024_06_11:
      type: object
      properties:
        id:
          type: number
          example: 254
        ownerId:
          type: number
          example: 478
        name:
          type: string
          example: Catch up hours
        timeZone:
          type: string
          example: Europe/Rome
        availability:
          example:
          - days:
            - Monday
            - Tuesday
            startTime: '17:00'
            endTime: '19:00'
          - days:
            - Wednesday
            - Thursday
            startTime: '16:00'
            endTime: '20:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleAvailabilityInput_2024_06_11'
        isDefault:
          type: boolean
          example: true
        overrides:
          example:
          - date: '2024-05-20'
            startTime: '18:00'
            endTime: '21:00'
          type: array
          items:
            $ref: '#/components/schemas/ScheduleOverrideInput_2024_06_11'
      required:
      - id
      - ownerId
      - name
      - timeZone
      - availability
      - isDefault
      - overrides
    DeleteScheduleOutput_2024_06_11:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
      required:
      - status
    GetScheduleOutput_2024_06_11:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
        data:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/ScheduleOutput_2024_06_11'
      required:
      - status
      - data
    ScheduleOverrideInput_2024_06_11:
      type: object
      properties:
        date:
          type: string
          example: '2024-05-20'
        startTime:
          type: string
          example: '12:00'
          description: startTime must be a valid time in format HH:MM e.g. 12:00
        endTime:
          type: string
          example: '13:00'
          description: endTime must be a valid time in format HH:MM e.g. 13:00
      required:
      - date
      - startTime
      - endTime
    GetSchedulesOutput_2024_06_11:
      type: object
      properties:
        status:
          enum:
          - success
          - error
          type: string
          example: success
        data:
          type: array
          items:
            $ref: '#/components/schemas/ScheduleOutput_2024_06_11'
      required:
      - status
      - data
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)