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

# Disconnect a meeting calendar

> Disconnect the calendar, cancel future joins, and clear retained calendar identity fields. Previously created session records, transcripts, artifacts, and Storage objects remain. The response is the updated connection.



## OpenAPI

````yaml /openapi/source/external/meeting-sessions/meeting-sessions.json delete /calendar_connections/{id}
openapi: 3.1.0
info:
  title: Telnyx Meeting Sessions API
  version: 2.0.0
  description: >-
    Programmatically create, control, and inspect Telnyx Meeting Sessions,
    including real-time actions, events, transcripts, and artifacts.
  x-latency-category: interactive
  x-endpoint-cost: light
servers:
  - url: https://api.telnyx.com/v2
security:
  - bearerAuth: []
tags:
  - name: Meeting Sessions
    description: Create, list, retrieve, update, and stop meeting sessions.
  - name: Meeting Session Actions
    description: Send real-time speech and chat actions to an active meeting session.
  - name: Meeting Session Data
    description: >-
      Read lifecycle events and transcript segments for a meeting session, and
      delete its recording media.
  - name: Meeting Session Artifacts
    description: Create and retrieve asynchronous summaries and action-item artifacts.
  - name: Meeting Session Webhooks
    description: Outbound webhook deliveries for meeting session events.
  - name: Meeting Calendar Connections
    description: Connect calendars and manage automatic meeting joins.
paths:
  /calendar_connections/{id}:
    delete:
      tags:
        - Meeting Calendar Connections
      summary: Disconnect a meeting calendar
      description: >-
        Disconnect the calendar, cancel future joins, and clear retained
        calendar identity fields. Previously created session records,
        transcripts, artifacts, and Storage objects remain. The response is the
        updated connection.
      operationId: disconnectMeetingCalendar
      parameters:
        - name: id
          in: path
          required: true
          description: Calendar connection ID.
          schema:
            type: string
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalendarConnectionResponse'
              example:
                data:
                  id: calconn_example
                  platform: google_calendar
                  platform_email: organizer@example.com
                  status: disconnected
                  status_detail: null
                  auto_join_policy: all_meetings
                  bot_name: Notetaker
                  default_barge_in: null
                  default_summarize_on_end: null
                  default_voice: null
                  default_assistant: null
                  default_recording: null
                  default_recording_export: null
                  default_webhook_url: null
                  created_at: '2026-11-05T09:00:00Z'
                  updated_at: '2026-11-05T09:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/MeetingReadUnavailable'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - bearerAuth: []
components:
  schemas:
    CalendarConnectionResponse:
      type: object
      additionalProperties: false
      properties:
        data:
          $ref: '#/components/schemas/CalendarConnection'
      required:
        - data
    CalendarConnection:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: Calendar connection ID.
        platform:
          type: string
          description: 'Calendar provider: Google Calendar or Microsoft Outlook.'
          enum:
            - google_calendar
            - microsoft_outlook
        platform_email:
          anyOf:
            - type: string
              description: Connected calendar email address.
            - type: 'null'
        status:
          type: string
          description: Connection status.
          enum:
            - connected
            - disconnected
            - error
        status_detail:
          anyOf:
            - type: string
              description: Additional connection status detail.
            - type: 'null'
        auto_join_policy:
          type: string
          description: >-
            all_meetings joins eligible events; external_organizer_excluded
            requires the connected user to be the organizer; per_meeting
            requires an explicit opt-in.
          enum:
            - all_meetings
            - external_organizer_excluded
            - per_meeting
        bot_name:
          anyOf:
            - type: string
              description: Bot display name; null clears the override.
              minLength: 1
              maxLength: 100
            - type: 'null'
        default_barge_in:
          anyOf:
            - type: boolean
              description: >-
                Default manual speech interruption. Cannot be true with
                default_assistant.
            - type: 'null'
        default_summarize_on_end:
          anyOf:
            - type: boolean
              description: >-
                Generate a summary when each future session transcript
                finalizes.
            - type: 'null'
        default_voice:
          anyOf:
            - type: string
              description: Manual-speech voice; must be null when default_assistant is set.
              minLength: 1
              maxLength: 100
            - type: 'null'
        default_assistant:
          anyOf:
            - $ref: '#/components/schemas/MeetingSessionAssistant'
            - type: 'null'
        default_recording:
          anyOf:
            - type: boolean
              description: >-
                Google Meet and Teams recording intent. When null, recording is
                enabled only if a destination is set. True requires
                default_recording_export; false cannot be combined with a
                destination.
            - type: 'null'
        default_recording_export:
          anyOf:
            - $ref: '#/components/schemas/MeetingSessionRecordingDestination'
            - type: 'null'
        default_webhook_url:
          anyOf:
            - type: string
              description: >-
                HTTPS destination for future session webhooks. Null clears the
                default. A non-null update returns webhook_secret once; save it
                to verify signatures for sessions created with this default.
                Existing sessions retain their original signing secret.
              format: uri
              maxLength: 2048
            - type: 'null'
        created_at:
          type: string
          description: Creation time.
          format: date-time
        updated_at:
          type: string
          description: Last update time.
          format: date-time
      required:
        - id
        - platform
        - platform_email
        - status
        - status_detail
        - auto_join_policy
        - bot_name
        - default_barge_in
        - default_summarize_on_end
        - default_voice
        - default_assistant
        - default_recording
        - default_recording_export
        - default_webhook_url
        - created_at
        - updated_at
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
      examples:
        - error:
            code: invalid_request
            message: webhook_url is disabled
        - error:
            code: not_found
            message: meeting session not found
        - error:
            code: unsupported_capability
            message: avatar video is not supported on platform 'unknown'
        - error:
            code: internal_error
            message: internal server error
    MeetingSessionAssistant:
      title: MeetingSessionAssistant
      type: object
      additionalProperties: false
      required:
        - id
        - audio_gate
        - leave_on_end
      properties:
        id:
          type: string
          description: Identifier of the assistant.
        audio_gate:
          type: string
          enum:
            - half_duplex
            - full_duplex
          description: Audio gating strategy in force for the assistant call leg.
        dynamic_variables:
          anyOf:
            - type: object
              additionalProperties:
                type: string
            - type: 'null'
          description: >-
            Dynamic variables in individual-session responses; null when none
            were supplied. Omitted from session list items.
        leave_on_end:
          type: boolean
          description: >-
            Whether the bot leaves when the Assistant's conversation ends or
            fails.
    MeetingSessionRecordingDestination:
      type: object
      additionalProperties: false
      required:
        - bucket
      description: >-
        Customer-owned Telnyx Storage destination for recording exports. Uses
        the authenticated organization and user; do not supply credentials,
        region, organization ID or object key.
      properties:
        bucket:
          type: string
          minLength: 3
          maxLength: 63
          pattern: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
          description: >-
            Existing accessible bucket. Consecutive dots and IPv4-address names
            are rejected.
        prefix:
          type: string
          minLength: 1
          maxLength: 256
          pattern: ^[A-Za-z0-9/_.-]+$
          description: >-
            Optional object-key prefix. One trailing slash is normalized. Empty
            path segments, . and .. segments are rejected.
  responses:
    Unauthorized:
      description: >-
        Unauthorized. On api.telnyx.com, authentication is enforced by the API
        gateway before the request reaches the Meeting service, so a missing or
        invalid API key returns the standard Telnyx error envelope (`{"errors":
        [{"code": "10009", ...}]}`) rather than the single-`error` shape below.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: unauthorized
              message: invalid or missing credentials
    Forbidden:
      description: The authenticated credential is not permitted to perform this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: forbidden
              message: credential is not permitted
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: not_found
              message: meeting session not found
    TooManyRequests:
      description: >-
        Authentication is temporarily overloaded. Retry after the number of
        seconds in `Retry-After`.
      headers:
        Retry-After:
          required: true
          description: Seconds to wait before retrying.
          schema:
            type: integer
            minimum: 1
            maximum: 5
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: auth_overloaded
              message: authentication temporarily overloaded
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: internal_error
              message: internal server error
    MeetingReadUnavailable:
      description: >-
        Current meeting data could not be retrieved. Retry the read with
        backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            provider_error:
              value:
                error:
                  code: provider_error
                  message: Meeting data is temporarily unavailable.
    ServiceUnavailable:
      description: >-
        A required feature or dependency is not configured, authentication is
        unavailable, or (`assistant_lookup_unavailable`) the assistant could not
        be read to check its avatar.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: not_configured
              message: required feature is not configured
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````