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

# Update calendar preferences

> Update a scheduling link's calendar settings for one calendar integration. Send only the fields you want to change; the others keep their current values.

Overriding the calendars works only on one-on-one scheduling links, and only with the host's calendars listed in `available_calendars`. Group scheduling links always use their own event layout, with `summary_type` set to `meeting_name` or `custom`.


<Info>Replace `{your-subdomain}` with your workspace’s subdomain. <br /> Learn how to find your subdomain in [Workspace subdomain](/api/workspace-subdomain).</Info>


## OpenAPI

````yaml bundled/calendar-preferences.yaml PATCH /meetings/{meeting_sid}/calendar-preferences/{integration}
openapi: 3.0.3
info:
  title: NeetoCal Calendar Preferences APIs
  version: 2.0.0
servers:
  - description: NeetoCal APIs
    url: https://{your-subdomain}.neetocal.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/api/workspace-subdomain).
security: []
tags:
  - name: Calendar Preferences
    description: >
      APIs to manage a scheduling link's calendar settings for each calendar
      integration: which calendars booking events are added to, which calendars
      are checked for conflicts, and how the calendar event looks.
paths:
  /meetings/{meeting_sid}/calendar-preferences/{integration}:
    patch:
      tags:
        - Calendar Preferences
      summary: Update calendar preferences
      description: >
        Update a scheduling link's calendar settings for one calendar
        integration. Send only the fields you want to change; the others keep
        their current values.


        Overriding the calendars works only on one-on-one scheduling links, and
        only with the host's calendars listed in `available_calendars`. Group
        scheduling links always use their own event layout, with `summary_type`
        set to `meeting_name` or `custom`.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - $ref: '#/components/parameters/meeting_sid_param'
        - $ref: '#/components/parameters/integration'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/calendar_preference_update_request'
      responses:
        '200':
          description: OK - Calendar preferences updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/calendar_preference_response'
        '404':
          $ref: '#/components/responses/meeting_not_found'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/api/authentication) for more information.
      required: true
      schema:
        type: string
    meeting_sid_param:
      in: path
      name: meeting_sid
      description: >
        The unique identifier (SID) of the scheduling link you want to use. You
        can get `sid` in different ways. Visit the scheduling link page and then
        click on "Settings" > "Show SID". That will give you `sid`. You can also
        get this from the response of the [List scheduling
        links](/api/scheduling-links/list) endpoint, where it appears as the
        `sid` property for each scheduling link in the response.
      required: true
      schema:
        type: string
        example: vj5pgkh
    integration:
      in: path
      name: integration
      description: The calendar integration whose settings you want to use.
      required: true
      schema:
        type: string
        enum:
          - google_calendar
          - outlook
          - icloud
        example: google_calendar
  schemas:
    calendar_preference_update_request:
      type: object
      properties:
        override_calendars:
          type: boolean
          description: >
            Add booking events to `event_add_calendar_ids` instead of the host's
            own calendars. One-on-one scheduling links only.
        event_add_calendar_ids:
          type: array
          description: >
            IDs of the calendars to add booking events to, in order. Replaces
            the current list; send `[]` to clear it. Each ID must be in
            `available_calendars` and have `is_editable` set to `true`.
          items:
            type: string
          example:
            - 70232544-0b90-4ddd-801d-b9f53c3fff3c
            - f7ce6127-6e4d-4a4d-9472-aaa21c37d881
        override_conflict_check_calendars:
          type: boolean
          description: >
            Check `conflict_check_calendar_ids` for conflicts instead of the
            host's own calendars. One-on-one scheduling links only.
        conflict_check_calendar_ids:
          type: array
          description: >
            IDs of the calendars to check for conflicts. Replaces the current
            list; send `[]` to clear it. Each ID must be in
            `available_calendars`.
          items:
            type: string
          example:
            - 70232544-0b90-4ddd-801d-b9f53c3fff3c
        busy_statuses:
          type: array
          description: >-
            Outlook only, ignored for the other integrations. The Outlook event
            statuses that block a slot.
          items:
            type: string
            enum:
              - tentative
              - busy
              - oof
              - workingElsewhere
          example:
            - busy
            - oof
        override_event_layout:
          type: boolean
          description: >-
            Use this scheduling link's own event title and description. Cannot
            be turned off for group scheduling links.
        summary_type:
          type: string
          enum:
            - host_and_client
            - client_and_host
            - meeting_name
            - custom
          description: >
            How the calendar event title is built. Group scheduling links accept
            only `meeting_name` and `custom`.
          example: custom
        custom_summary:
          type: string
          description: >
            The event title. Required when `summary_type` is `custom`, except on
            group scheduling links, where a blank title uses the default.
          example: Consultation
        body:
          type: string
          nullable: true
          description: >-
            The event description (HTML). Send `null` or an empty string to use
            the default description.
          example: <p>Agenda</p>
        event_color:
          type: string
          nullable: true
          description: >
            Google Calendar only, ignored for the other integrations. One of the
            Google Calendar event colors as a hex code, in either case:
            `#D50000`, `#E67C73`, `#F4511E`, `#F6BF26`, `#33B679`, `#0B8043`,
            `#039BE5`, `#3F51B5`, `#7986CB`, `#8E24AA` or `#616161`. Send `null`
            or an empty string to use the default color.
          example: '#039BE5'
    calendar_preference_response:
      type: object
      properties:
        calendar_preference:
          $ref: '#/components/schemas/calendar_preference'
    calendar_preference:
      type: object
      properties:
        integration:
          type: string
          enum:
            - google_calendar
            - outlook
            - icloud
          description: The calendar integration these settings apply to.
          example: google_calendar
        override_calendars:
          type: boolean
          description: >
            Whether bookings of this scheduling link are added to
            `event_add_calendars` instead of the calendars the host picked in
            their own calendar integration settings.
        event_add_calendars:
          type: array
          description: >-
            The calendars booking events are added to when `override_calendars`
            is `true`, in order.
          items:
            $ref: '#/components/schemas/calendar'
        override_conflict_check_calendars:
          type: boolean
          description: >
            Whether this scheduling link checks `conflict_check_calendars` for
            conflicts instead of the calendars the host checks in their own
            calendar integration settings.
        conflict_check_calendars:
          type: array
          description: >-
            The calendars checked for conflicts when
            `override_conflict_check_calendars` is `true`.
          items:
            $ref: '#/components/schemas/calendar'
        busy_statuses:
          type: array
          nullable: true
          description: >
            Outlook only. The Outlook event statuses that block a slot. `null`
            for the other integrations.
          items:
            type: string
            enum:
              - tentative
              - busy
              - oof
              - workingElsewhere
          example: null
        override_event_layout:
          type: boolean
          description: >
            Whether this scheduling link uses its own event title and
            description instead of the host's. Always `true` for group
            scheduling links.
        summary_type:
          type: string
          enum:
            - host_and_client
            - client_and_host
            - meeting_name
            - custom
          description: >-
            How the calendar event title is built. `custom` uses
            `custom_summary`.
          example: client_and_host
        custom_summary:
          type: string
          nullable: true
          description: The event title used when `summary_type` is `custom`.
          example: null
        body:
          type: string
          nullable: true
          description: The event description (HTML). `null` uses the default description.
          example: null
        event_color:
          type: string
          nullable: true
          description: >-
            Google Calendar only. The event color as a hex code. `null` uses the
            default color.
          example: null
        available_calendars:
          type: array
          description: >
            The host's calendars for this integration that can be used in
            `event_add_calendar_ids` and `conflict_check_calendar_ids`. Empty
            for scheduling links that are not one-on-one, and when the host has
            not connected an account for this integration.
          items:
            $ref: '#/components/schemas/calendar'
    calendar:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique identifier of the calendar. Use it in
            `event_add_calendar_ids` and `conflict_check_calendar_ids`.
          example: 70232544-0b90-4ddd-801d-b9f53c3fff3c
        name:
          type: string
          description: Name of the calendar.
          example: Work
        is_primary:
          type: boolean
          description: Whether this is the primary calendar of the connected account.
        is_editable:
          type: boolean
          description: >
            Whether events can be added to this calendar. Read-only calendars
            can be checked for conflicts, but cannot be used in
            `event_add_calendar_ids`.
  responses:
    meeting_not_found:
      description: Not Found - The scheduling link does not exist
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                example: Meeting does not exist.
    unprocessable_entity:
      description: Unprocessable Entity - The request is invalid
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
          examples:
            unknown_integration:
              summary: Unknown calendar integration
              value:
                error: >-
                  Unknown calendar integration zoho. Use one of:
                  google_calendar, outlook, icloud
            not_one_on_one:
              summary: Calendar override on a scheduling link that is not one-on-one
              value:
                error: Calendar overrides are only supported on one-on-one meetings
            unknown_calendars:
              summary: Calendar that is not one of the host's calendars
              value:
                error: >-
                  These calendars are not connected to the meeting host's
                  google_calendar account: 4c3c9435-327f-47de-920c-2226b1e47c21
            read_only_calendars:
              summary: Read-only calendar used to add events
              value:
                error: 'Events cannot be added to read-only calendars: Holidays'
            not_an_array:
              summary: Calendar IDs sent as a string
              value:
                error: The event_add_calendar_ids parameter needs to be an array
            invalid_value:
              summary: Unsupported summary type, event color or busy status
              value:
                error: Summary type is not included in the list
            custom_summary_missing:
              summary: >-
                Custom summary type without a title on a scheduling link that is
                not a group
              value:
                error: Custom summary can't be blank

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.