> ## Documentation Index
> Fetch the complete documentation index at: https://chatbotx.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update appointment calendar

> Replaces an existing calendar's full configuration (duration, availability, buffers, reminders). Call `appointmentCalendars.get` to inspect current values first.



## OpenAPI

````yaml /api-reference/platform-api.json put /v1/appointment-calendars/{id}
openapi: 3.1.1
info:
  title: ChatbotX
  version: 0.0.1
servers:
  - url: https://app.chatbotx.io/api
security:
  - bearerAuth: []
  - developerAccessToken: []
  - tokenInSearchParams: []
paths:
  /v1/appointment-calendars/{id}:
    put:
      tags:
        - Appointment Calendars
      summary: Update appointment calendar
      description: >-
        Replaces an existing calendar's full configuration (duration,
        availability, buffers, reminders). Call `appointmentCalendars.get` to
        inspect current values first.
      operationId: appointmentCalendars.update
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^\d+$
            description: Appointment calendar id. Get it from `appointmentCalendars.list`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Calendar name.
                description:
                  anyOf:
                    - type: string
                      maxLength: 2000
                    - type: 'null'
                  description: Optional internal description of the calendar.
                active:
                  type: boolean
                  description: Whether the calendar accepts new bookings.
                timezone:
                  type: string
                  minLength: 1
                  description: IANA timezone used to interpret availability and reminders.
                durationMinutes:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                  description: Length of each appointment slot, in minutes.
                bufferAfterMinutes:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Buffer time added after each appointment, in minutes, or
                    null for none.
                locationType:
                  enum:
                    - inPerson
                    - phoneCall
                    - onlineMeeting
                  type: string
                  description: >-
                    Where the appointment takes place, e.g. in-person or video
                    call.
                locationDetail:
                  anyOf:
                    - type: string
                      maxLength: 500
                    - type: 'null'
                  description: Address or link shown to the invitee for this location type.
                scheduleWindowConfig:
                  anyOf:
                    - type: object
                      properties:
                        scheduleWindowType:
                          const: rollingDays
                        rollingDays:
                          type: integer
                          minimum: 1
                          maximum: 365
                          default: 30
                        minAdvanceDays:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          default: 0
                      required:
                        - scheduleWindowType
                    - type: object
                      properties:
                        scheduleWindowType:
                          const: dateRange
                        startDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                        minAdvanceDays:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          default: 0
                      required:
                        - scheduleWindowType
                        - startDate
                        - endDate
                    - type: object
                      properties:
                        scheduleWindowType:
                          const: specificDay
                        date:
                          type: string
                          format: date
                        minAdvanceDays:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          default: 0
                      required:
                        - scheduleWindowType
                        - date
                    - type: object
                      properties:
                        scheduleWindowType:
                          const: anyFutureDate
                        minAdvanceDays:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          default: 0
                      required:
                        - scheduleWindowType
                  description: >-
                    How far ahead bookings are allowed (e.g. a rolling window or
                    fixed date range).
                maxAppointmentsPerUser:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Maximum number of active appointments a single contact may
                    hold, or null for unlimited.
                dailyLimitEnabled:
                  type: boolean
                  description: Whether maxPerDay is enforced.
                maxPerDay:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Maximum bookings per day when dailyLimitEnabled is true, or
                    null when not set.
                allowGroupMeeting:
                  type: boolean
                  description: Whether multiple contacts can book the same slot.
                maxPerSlot:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Maximum bookings per slot when allowGroupMeeting is true, or
                    null for unlimited.
                confirmationMessage:
                  anyOf:
                    - type: string
                      maxLength: 2000
                    - type: 'null'
                  description: Message shown to the invitee after booking.
                confirmationFlowId:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: 'null'
                  description: >-
                    Flow to trigger when an appointment is booked, or null for
                    none.
                cancellationFlowId:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: 'null'
                  description: >-
                    Flow to trigger when an appointment is cancelled, or null
                    for none.
                externalConnectionId:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: 'null'
                  description: >-
                    External calendar connection (from
                    `appointmentExternalCalendars.list`) to sync bookings to, or
                    null for none.
                externalEventTitleTemplate:
                  anyOf:
                    - type: string
                      maxLength: 1024
                    - type: 'null'
                  description: >-
                    Template for the external calendar event's title, or null to
                    use the default.
                externalEventDescriptionTemplate:
                  anyOf:
                    - type: string
                      maxLength: 8192
                    - type: 'null'
                  description: >-
                    Template for the external calendar event's description, or
                    null to use the default.
                externalEventAttendeesTemplate:
                  anyOf:
                    - type: string
                      maxLength: 8192
                    - type: 'null'
                  description: >-
                    Template for the external calendar event's attendee list, or
                    null to use the default.
                availability:
                  type: array
                  maxItems: 70
                  items:
                    type: object
                    properties:
                      weekday:
                        type: integer
                        minimum: 0
                        maximum: 6
                        description: Day of week, 0 (Sunday) through 6 (Saturday).
                      startMinute:
                        type: integer
                        minimum: 0
                        maximum: 1425
                        multipleOf: 15
                        description: >-
                          Interval start, in minutes from midnight, on a
                          15-minute step.
                      endMinute:
                        type: integer
                        minimum: 15
                        maximum: 1439
                        description: >-
                          Interval end, in minutes from midnight, on a 15-minute
                          step (or 23:59).
                    required:
                      - weekday
                      - startMinute
                      - endMinute
                  description: Weekly recurring availability intervals.
                reminders:
                  type: array
                  maxItems: 50
                  items:
                    type: object
                    properties:
                      flowId:
                        type: string
                        pattern: ^\d+$
                        description: >-
                          Flow to trigger for this reminder. Get it from
                          `flows.list`.
                      timingValue:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                        description: >-
                          Number of timing units before the appointment to send
                          the reminder.
                      timingUnit:
                        enum:
                          - minutes
                          - hours
                          - days
                        type: string
                        description: Unit for timingValue, e.g. minutes/hours/days.
                    required:
                      - flowId
                      - timingValue
                      - timingUnit
                  description: Reminder flows to trigger before each appointment.
              required:
                - name
                - active
                - timezone
                - durationMinutes
                - bufferAfterMinutes
                - locationType
                - scheduleWindowConfig
                - maxAppointmentsPerUser
                - dailyLimitEnabled
                - maxPerDay
                - allowGroupMeeting
                - maxPerSlot
                - externalEventTitleTemplate
                - externalEventDescriptionTemplate
                - externalEventAttendeesTemplate
                - availability
                - reminders
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                anyOf:
                  - {}
                  - not: {}
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: businessError
                      status:
                        const: 400
                      message:
                        type: string
                        default: An error occurred while processing your request
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: UNAUTHORIZED
                      status:
                        const: 401
                      message:
                        type: string
                        default: Authentication required
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INVALID_CHATBOT_TOKEN
                      status:
                        const: 401
                      message:
                        type: string
                        default: Invalid or missing workspace API token
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: FORBIDDEN
                      status:
                        const: 403
                      message:
                        type: string
                        default: You do not have permission to perform this action
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: trialExpired
                      status:
                        const: 403
                      message:
                        type: string
                        default: Trial expired
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: macLimitReached
                      status:
                        const: 403
                      message:
                        type: string
                        default: Monthly active contact limit reached
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: notFound
                      status:
                        const: 404
                      message:
                        type: string
                        default: Resource not found
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '409':
          description: '409'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: nameAlreadyExists
                      status:
                        const: 409
                      message:
                        type: string
                        default: Calendar name already exists
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: duplicateReminder
                      status:
                        const: 409
                      message:
                        type: string
                        default: >-
                          Duplicate reminder: same flow and timing already
                          exists
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '422':
          description: '422'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: invalidRequestData
                      status:
                        const: 422
                      message:
                        type: string
                        default: Input validation failed
                      data:
                        type: object
                        properties:
                          issues:
                            type: array
                            items:
                              type: object
                              properties:
                                message:
                                  type: string
                                path:
                                  type: array
                                  items:
                                    anyOf:
                                      - type: string
                                      - type: number
                                      - type: object
                                        properties:
                                          key:
                                            anyOf:
                                              - type: string
                                              - type: number
                                        required:
                                          - key
                                        additionalProperties: {}
                              required:
                                - message
                              additionalProperties: {}
                        required:
                          - issues
                        additionalProperties: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                      - data
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: validation
                      status:
                        const: 422
                      message:
                        type: string
                        default: Validation error
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '429':
          description: '429'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: tooManyRequests
                      status:
                        const: 429
                      message:
                        type: string
                        default: Too many requests
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INTERNAL_SERVER_ERROR
                      status:
                        const: 500
                      message:
                        type: string
                        default: An unexpected error occurred
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - $ref: '#/components/schemas/UndefinedError'
components:
  schemas:
    UndefinedError:
      type: object
      properties:
        defined:
          const: false
        code:
          type: string
        status:
          type: number
        message:
          type: string
        data: {}
      required:
        - defined
        - code
        - status
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    developerAccessToken:
      type: http
      scheme: bearer
    tokenInSearchParams:
      type: apiKey
      in: query
      name: token

````