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

# Get a meeting

> The meeting with its schedule, people, settings, recordings and the status of its
results. Fetch the content with `GET /meetings/{id}/results`.




## OpenAPI

````yaml /openapi.yaml get /meetings/{id}
openapi: 3.1.0
info:
  title: MeetingKit API
  description: >
    The MeetingKit API lets you build a meetings feature into your product:
    users connect

    a calendar, a notetaker joins their calls, and you get the transcript,
    speakers and

    summary of each meeting.
  version: '2026-10-12'
  contact:
    name: MeetingKit Developer Support
    email: dev@happyscribe.co
servers:
  - url: https://api.meetingkit.com/api/v1
security:
  - apiKeyAuth: []
tags:
  - name: Agent sessions
    description: Exchange the code a user hands their AI agent for API credentials.
  - name: Uploads
    description: Get signed URLs to upload media files directly to MeetingKit storage.
  - name: Transcribe
    description: Create transcription orders from media URLs.
  - name: Subtitle
    description: Create subtitling orders from media URLs.
  - name: Translate
    description: Create translation orders from existing conversations.
  - name: Orders
    description: Retrieve and confirm the orders created by the service endpoints.
  - name: Conversations
    description: List, retrieve, update, and delete conversations.
  - name: Exports
    description: Export conversations to text, subtitle, video-editing, and data formats.
  - name: Bots
    description: Send a notetaker bot to Zoom, Google Meet, or Microsoft Teams calls.
  - name: Glossaries
    description: List glossaries to apply custom terminology to orders.
  - name: Style guides
    description: List style guides to apply formatting preferences to orders.
  - name: Workspaces
    description: List the workspaces the authenticated user belongs to.
  - name: Organization memberships
    description: Manage which users belong to a workspace.
  - name: Members
    description: A partner's end users inside a workspace (MeetingKit).
  - name: Meetings
    description: >-
      Every meeting of a workspace, from calendars and bots, with its results
      (MeetingKit).
  - name: Calendar connections
    description: >-
      Members' Google and Microsoft calendars, connected through a hosted
      consent link and synced by MeetingKit.
  - name: Calendar events
    description: Calendar events a partner pushes from its own calendar sync (MeetingKit).
  - name: Settings
    description: >-
      What gets recorded and how, as values you assign to a workspace, a member,
      a meeting category or one meeting (MeetingKit).
  - name: Settings assignments
    description: Where settings apply (MeetingKit).
  - name: Files
    description: Images uploaded to a workspace, to use in a brand kit (MeetingKit).
  - name: Webhook endpoints
    description: Register the receivers of a workspace's webhooks, and test them.
  - name: Webhook events
    description: >-
      The webhooks sent to a workspace's endpoints, how each delivery went, and
      redelivery.
  - name: People
    description: >-
      Language Services. People found in your transcripts (Memory API, private
      beta).
  - name: Companies
    description: >-
      Language Services. Companies found in your transcripts (Memory API,
      private beta).
paths:
  /meetings/{id}:
    parameters:
      - $ref: '#/components/parameters/MeetingIdPath'
    get:
      tags:
        - Meetings
      summary: Get a meeting
      description: >
        The meeting with its schedule, people, settings, recordings and the
        status of its

        results. Fetch the content with `GET /meetings/{id}/results`.
      operationId: getMeeting
      responses:
        '200':
          description: The meeting.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Meeting'
        '401':
          description: >-
            Missing or invalid API key, or the key is not an owner or admin of
            the workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: No meeting with that ID, or not one the key can see.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
components:
  parameters:
    MeetingIdPath:
      name: id
      in: path
      required: true
      description: Meeting ID, beginning with `mtg_`. Treat it as an opaque string.
      schema:
        type: string
        example: mtg_01k6a2r9s8x7c2dvq3m5n6p4ab
  schemas:
    Meeting:
      type: object
      description: >
        Which label to show for a meeting, read from the fields that own it:


        | Label | Read |

        | --- | --- |

        | Will be recorded | `phase: upcoming` and `settings.recording.enabled:
        true` |

        | Not going to be recorded | `phase: upcoming` and
        `settings.recording.enabled: false` (`settings.sources` says why) |

        | Recording | `phase: live` |

        | Processing | `results.status: processing` |

        | Ready / Failed | `results.status: ready` / `failed` |

        | Not recorded | `phase: past` or `cancelled` with `results.status:
        none` |
      properties:
        id:
          type: string
          description: >-
            Beginning with `mtg_`. Stays the same through reschedules, URL
            changes and bot retries.
        object:
          type: string
          description: Always `meeting`.
        workspace_id:
          type: string
          description: Workspace ID, beginning with `wks_`. Treat it as an opaque string.
          example: wks_01k6a2r9s8x7c2dvq3m5n6p4ab
        source:
          description: |
            Where the meeting came from.

            - `calendar_connection`: a calendar the member connected.
            - `calendar_sync`: an event you pushed with `POST /calendar_events`.
            - `bot`: a bot you sent with `POST /bots`.
          type: string
          enum:
            - calendar_connection
            - calendar_sync
            - bot
        phase:
          $ref: '#/components/schemas/MeetingPhase'
        title:
          description: >
            The calendar event's title, or a generated one for a bot sent
            without a calendar event.
          type:
            - string
            - 'null'
        starts_at:
          type:
            - string
            - 'null'
          format: date-time
          description: A bot meeting starts at the bot's `join_at`.
        ends_at:
          description: |
            Scheduled end, or `null` when unknown.
          type:
            - string
            - 'null'
          format: date-time
        meeting_url:
          description: |
            The link to join the call, or `null` when the event has none.
          type:
            - string
            - 'null'
        platform:
          description: >
            The meeting platform, from the link. `null` for any other link
            (Webex, a dial-in page) or none.


            - `meet`: Google Meet.

            - `zoom`: Zoom.

            - `teams`: Microsoft Teams, Teams Live included.
          type:
            - string
            - 'null'
          enum:
            - meet
            - zoom
            - teams
            - null
        organizer:
          description: |
            Who organizes the meeting, or `null` when unknown.
          oneOf:
            - $ref: '#/components/schemas/MeetingPerson'
            - type: 'null'
        participants:
          type: array
          description: The people on the invite, or given when the bot was sent.
          items:
            $ref: '#/components/schemas/MeetingPerson'
        calendar_event:
          description: >-
            The calendar event of this meeting, the object `POST
            /calendar_events` returns. `null` for bot meetings.
          oneOf:
            - $ref: '#/components/schemas/CalendarEvent'
            - type: 'null'
        settings:
          $ref: '#/components/schemas/SettingsBlock'
          description: >
            What applies to this meeting, which assignment supplied each value,
            and every assignment that reaches it. On

            [List meetings](#operation/listMeetings), only with
            `include=settings`.
        recordings:
          type: array
          description: How audio came in. Each bot sent to the meeting, oldest first.
          items:
            type: object
            properties:
              id:
                type: string
                description: The bot's `bot_` ID.
              type:
                description: |
                  How the audio came in. Only `bot` for now.
                type: string
                enum:
                  - bot
              status:
                description: >
                  - `queued`: scheduled, or waiting to join.

                  - `joining`: joining the call.

                  - `in_call`: in the call and recording.

                  - `completed`: left the call; what it recorded is processed
                  into the results.

                  - `failed`: ended without a recording.

                  - `cancelled`: cancelled before it joined.
                type: string
                enum:
                  - queued
                  - joining
                  - in_call
                  - completed
                  - failed
                  - cancelled
              started_at:
                description: |
                  When the bot joined, or is scheduled to join.
                type:
                  - string
                  - 'null'
                format: date-time
              ended_at:
                description: |
                  When the bot left.
                type:
                  - string
                  - 'null'
                format: date-time
        results:
          type: object
          description: Statuses only. The content is at `GET /meetings/{id}/results`.
          properties:
            status:
              $ref: '#/components/schemas/PartStatus'
            transcript:
              description: |
                The transcript: its status and language.
              type: object
              properties:
                status:
                  $ref: '#/components/schemas/PartStatus'
                language:
                  description: |
                    The transcript's language tag.
                  type:
                    - string
                    - 'null'
            summary:
              description: |
                The summary: its status.
              type: object
              properties:
                status:
                  $ref: '#/components/schemas/PartStatus'
            media:
              description: |
                The recording: its status and length.
              type: object
              properties:
                status:
                  $ref: '#/components/schemas/PartStatus'
                duration_seconds:
                  description: |
                    Length of the recording, in seconds.
                  type:
                    - number
                    - 'null'
        metadata:
          $ref: '#/components/schemas/Metadata'
          description: >-
            Yours; change it with `PATCH /meetings/{id}`. Never used to identify
            a meeting.
        created_at:
          description: |
            When the meeting first appeared, in ISO 8601.
          type: string
          format: date-time
        updated_at:
          description: |
            When anything in the meeting last changed, in ISO 8601.
          type: string
          format: date-time
      example:
        id: mtg_01k6a2r9s8x7c2dvq3m5n6p4ab
        object: meeting
        workspace_id: wks_01k6a2r9s8x7c2dvq3m5n6p4ab
        source: calendar_connection
        phase: past
        title: Weekly sync with Acme
        starts_at: '2026-09-29T09:00:00Z'
        ends_at: '2026-09-29T09:30:00Z'
        meeting_url: https://meet.google.com/abc-defg-hij
        platform: meet
        organizer:
          name: Marc
          email: marc@gurusup.com
          member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
        participants:
          - name: Marc
            email: marc@gurusup.com
            member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
          - name: Ana Ruiz
            email: ana@acme.com
            member_id: null
        calendar_event:
          id: cev_01k6a2r9s8x7c2dvq3m5n6p4ab
          object: calendar_event
          meeting_id: mtg_01k6a2r9s8x7c2dvq3m5n6p4ab
          ical_uid: 7kq2b@google.com
          recurring: true
          title: Weekly sync with Acme
          starts_at: '2026-09-29T09:00:00Z'
          ends_at: '2026-09-29T09:30:00Z'
          meeting_url: https://meet.google.com/abc-defg-hij
          organizer:
            name: Marc
            email: marc@gurusup.com
            member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
          attendees:
            - name: Marc
              email: marc@gurusup.com
              member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
              response: accepted
            - name: Ana Ruiz
              email: ana@acme.com
              member_id: null
              response: needs_action
          source: calendar_connection
          metadata: {}
          cancelled_at: null
          created_at: '2026-09-22T08:00:00Z'
          updated_at: '2026-09-29T09:31:10Z'
        settings:
          recording:
            enabled: true
            methods:
              bot:
                start: on_join
                mode: audio_and_video
                silence_detection:
                  alert: true
          transcription:
            language: auto
          summary:
            template: general_meeting_notes
            language: same_as_transcript
          branding:
            brand_kit_id: none
          sources:
            recording.enabled:
              assignment_id: asg_01k6a3ext00000000000000000
            recording.methods.bot.start:
              assignment_id: asg_01k6a1ana00000000000000000
            recording.methods.bot.mode:
              assignment_id: asg_01k6a1ana00000000000000000
            recording.methods.bot.silence_detection.alert:
              assignment_id: asg_01k6a1ana00000000000000000
            transcription.language:
              assignment_id: asg_01k6a1ana00000000000000000
            summary.template:
              assignment_id: null
              reason: happyscribe_default
            summary.language:
              assignment_id: asg_01k6a1ana00000000000000000
            branding.brand_kit_id:
              assignment_id: asg_01k6a0wks00000000000000000
          assignments:
            - id: asg_01k6a3ext00000000000000000
              settings_id: set_01k6rec00000000000000000000
              scope:
                - member:mem_01k69x9s8x7c2dvq3m5n6p4ab
                - meetings:external
              own: false
            - id: asg_01k6a1ana00000000000000000
              settings_id: set_01k6sa1es0000000000000000a
              scope:
                - member:mem_01k69x9s8x7c2dvq3m5n6p4ab
              own: false
            - id: asg_01k6a0wks00000000000000000
              settings_id: set_01k6wks00000000000000000000
              scope:
                - workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab
              own: false
        recordings:
          - id: bot_01k6b0r9s8x7c2dvq3m5n6p4ab
            type: bot
            status: completed
            started_at: '2026-09-29T09:00:00Z'
            ended_at: '2026-09-29T09:31:10Z'
        results:
          status: ready
          transcript:
            status: ready
            language: en
          summary:
            status: ready
          media:
            status: ready
            duration_seconds: 1834
        metadata: {}
        created_at: '2026-09-22T10:14:03Z'
        updated_at: '2026-09-29T09:41:10Z'
    Errors:
      type: object
      required:
        - errors
      description: >
        Every error the API returns, `401` and `429` included. See
        [Errors](/api-reference/errors).
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        retry_in_seconds:
          type: integer
          description: >-
            On `429`, how long to wait before retrying. Also sent as
            `Retry-After`.
      example:
        errors:
          - code: invalid
            field: recording.methods.bot.mode
            message: 'must be one of: audio_and_video, audio_only, inherit'
    MeetingPhase:
      description: >
        About time only; what happens after the call is in `results`.


        - `upcoming`: not started, and nothing recording yet.

        - `live`: a recording is active. An early start counts: activity beats
        the calendar.

        - `past`: the recording ended, or the scheduled end went by.

        - `cancelled`: the source event was cancelled. Listed only with
        `phase=cancelled`.
      type: string
      enum:
        - upcoming
        - live
        - past
        - cancelled
    MeetingPerson:
      type: object
      properties:
        name:
          description: |
            The person's name, or `null` when unknown.
          type:
            - string
            - 'null'
        email:
          description: |
            The person's email, or `null` when unknown.
          type:
            - string
            - 'null'
        member_id:
          type:
            - string
            - 'null'
          description: Set when the person is a member of the meeting's workspace.
    CalendarEvent:
      type: object
      description: >
        One calendar event per occurrence and workspace: every member's copy of
        it shares this

        object, as they share the meeting. Its times, link and title are the
        occurrence's; its people

        come from the organizer's copy.
      properties:
        id:
          type: string
          description: >-
            Beginning with `cev_`. One per meeting; stays the same through
            reschedules and every member's push.
        object:
          type: string
          description: Always `calendar_event`.
        meeting_id:
          type: string
          description: The meeting of this occurrence, beginning with `mtg_`.
        ical_uid:
          description: >
            The iCal UID shared by every attendee's copy of the event, or `null`
            when the calendar sent none.
          type:
            - string
            - 'null'
        recurring:
          type:
            - boolean
            - 'null'
          description: >-
            Whether the event is an occurrence of a recurring series. `null`
            only in a webhook event from before 2026-10-12, which did not record
            it.
        title:
          description: |
            The event title.
          type:
            - string
            - 'null'
        starts_at:
          description: |
            Scheduled start, in ISO 8601.
          type:
            - string
            - 'null'
          format: date-time
        ends_at:
          description: |
            Scheduled end, in ISO 8601.
          type:
            - string
            - 'null'
          format: date-time
        meeting_url:
          description: |
            The link to join the call, or `null` when the event has none.
          type:
            - string
            - 'null'
        organizer:
          description: |
            Who organizes the event, or `null` when unknown.
          oneOf:
            - $ref: '#/components/schemas/MeetingPerson'
            - type: 'null'
        attendees:
          type: array
          description: >-
            Everyone on the invite, the organizer included. Empty once no member
            has the event.
          items:
            type: object
            properties:
              name:
                type:
                  - string
                  - 'null'
                description: The attendee's name, when the calendar has one.
              email:
                type:
                  - string
                  - 'null'
                description: The attendee's email.
              member_id:
                type:
                  - string
                  - 'null'
                description: Set when the attendee is a member of the workspace.
              response:
                description: >
                  The attendee's answer to the invite, or `null` when the
                  calendar does not say.


                  - `accepted`: accepted.

                  - `declined`: declined.

                  - `tentative`: answered maybe.

                  - `needs_action`: has not answered.
                type:
                  - string
                  - 'null'
                enum:
                  - accepted
                  - declined
                  - tentative
                  - needs_action
                  - null
        source:
          description: |
            Where the event came from.

            - `calendar_connection`: a calendar the member connected.
            - `calendar_sync`: an event you pushed with `POST /calendar_events`.
          type: string
          enum:
            - calendar_connection
            - calendar_sync
        metadata:
          $ref: '#/components/schemas/Metadata'
          description: >-
            Yours; set it with `POST /calendar_events`. Never copied to the
            meeting.
        cancelled_at:
          description: >
            When the event was cancelled, once no member of the workspace still
            has it; otherwise `null`.
          type:
            - string
            - 'null'
          format: date-time
        created_at:
          description: |
            When the event first appeared, in ISO 8601.
          type: string
          format: date-time
        updated_at:
          description: |
            When the event or its meeting last changed, in ISO 8601.
          type: string
          format: date-time
      example:
        id: cev_01k6a2r9s8x7c2dvq3m5n6p4ab
        object: calendar_event
        meeting_id: mtg_01k6a2r9s8x7c2dvq3m5n6p4ab
        ical_uid: 7kq2abc@google.com
        recurring: true
        title: Weekly sync with Acme
        starts_at: '2026-09-29T09:00:00Z'
        ends_at: '2026-09-29T09:30:00Z'
        meeting_url: https://meet.google.com/abc-defg-hij
        organizer:
          name: Marc
          email: marc@gurusup.com
          member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
        attendees:
          - name: Marc
            email: marc@gurusup.com
            member_id: mem_01k69x9s8x7c2dvq3m5n6p4ab
            response: accepted
          - name: Laia Puig
            email: laia@gurusup.com
            member_id: mem_01k69x2m4q8r7t6v5w4x3y2z1a
            response: accepted
          - name: null
            email: ana@acme.com
            member_id: null
            response: needs_action
        source: calendar_sync
        metadata:
          gurusup_event_id: evt_311
        cancelled_at: null
        created_at: '2026-09-22T08:00:00Z'
        updated_at: '2026-09-28T17:12:03Z'
    SettingsBlock:
      type: object
      description: >
        What applies to this object, which assignment supplied each value, and
        every assignment that reaches it.

        A meeting is resolved exactly; a member as for a meeting in no category;
        a workspace as for a member with nothing

        of their own. See [Settings](/meetingkit/settings).
      properties:
        recording:
          description: |
            Whether the meeting is recorded, and how. Always a value.
          type: object
          properties:
            enabled:
              type: boolean
              description: Whether it is recorded.
            methods:
              description: |
                How it is recorded.
              type: object
              properties:
                bot:
                  description: |
                    The notetaker bot that joins the call.
                  type: object
                  properties:
                    start:
                      type: string
                      enum:
                        - on_join
                        - on_command
                      description: >
                        - `on_join`: records as soon as it joins.

                        - `on_command`: joins paused, until someone types
                        `!resume`.
                    mode:
                      type: string
                      enum:
                        - audio_and_video
                        - audio_only
                      description: |
                        - `audio_and_video`: audio and video.
                        - `audio_only`: audio only.
                    silence_detection:
                      description: |
                        What the bot does when nobody speaks for a while.
                      type: object
                      properties:
                        alert:
                          type: boolean
                          description: >-
                            Whether the bot posts a chat message after a long
                            silence.
        transcription:
          description: |
            How the recording is transcribed.
          type: object
          properties:
            language:
              type: string
              description: A language tag, `auto` or `multi`.
        summary:
          description: |
            How the summary is written.
          type: object
          properties:
            template:
              type: string
              description: The template's slug or `tpl_` id.
            language:
              type: string
              description: A language tag, or `same_as_transcript`.
        branding:
          description: |
            How the notetaker is branded.
          type: object
          properties:
            brand_kit_id:
              type: string
              description: >-
                The brand kit the bot is sent with, or `none` (also when the
                plan does not include notetaker customization).
        sources:
          type: object
          description: >
            For every field, by its dotted path (`recording.enabled`,
            `transcription.language`…), where the value came from.
          additionalProperties:
            $ref: '#/components/schemas/SettingsSource'
        assignments:
          type: array
          description: Every assignment that reaches the object, most specific first.
          items:
            type: object
            properties:
              id:
                type: string
                description: Beginning with `asg_`.
              settings_id:
                type: string
                description: The settings it applies, beginning with `set_`.
              scope:
                type: array
                description: Its conditions.
                items:
                  $ref: '#/components/schemas/SettingsCondition'
              own:
                type: boolean
                description: >-
                  Whether the assignment names this object itself, rather than
                  reaching it from above.
      example:
        recording:
          enabled: true
          methods:
            bot:
              start: on_join
              mode: audio_only
              silence_detection:
                alert: true
        transcription:
          language: ca
        summary:
          template: discovery_call
          language: same_as_transcript
        branding:
          brand_kit_id: brk_01k6acme00000000000000000
        sources:
          recording.enabled:
            assignment_id: asg_01k6a3ext00000000000000000
          recording.methods.bot.start:
            assignment_id: asg_01k6a1ana00000000000000000
          recording.methods.bot.mode:
            assignment_id: asg_01k6a1ana00000000000000000
          recording.methods.bot.silence_detection.alert:
            assignment_id: asg_01k6a1ana00000000000000000
          transcription.language:
            assignment_id: asg_01k6a1ana00000000000000000
          summary.template:
            assignment_id: asg_01k6a1ana00000000000000000
          summary.language:
            assignment_id: asg_01k6a1ana00000000000000000
          branding.brand_kit_id:
            assignment_id: asg_01k6a0wks00000000000000000
        assignments:
          - id: asg_01k6a3ext00000000000000000
            settings_id: set_01k6rec00000000000000000000
            scope:
              - member:mem_01k69x9s8x7c2dvq3m5n6p4ab
              - meetings:external
            own: false
          - id: asg_01k6a1ana00000000000000000
            settings_id: set_01k6sa1es0000000000000000a
            scope:
              - member:mem_01k69x9s8x7c2dvq3m5n6p4ab
            own: false
          - id: asg_01k6a0wks00000000000000000
            settings_id: set_01k6wks00000000000000000000
            scope:
              - workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab
            own: false
    PartStatus:
      type: string
      enum:
        - processing
        - ready
        - failed
        - none
      description: >
        `none` until a recording produces it (and for good when nothing was
        recorded, or no

        summary for a failed transcript), `processing` while it is made, then
        `ready` or

        `failed`. Results never forecast: whether a recording will come is the
        meeting's

        `phase`, `recordings` and `settings.recording`.
    Metadata:
      type: object
      description: >
        Your own key-value pairs, for your ids and context. MeetingKit stores
        them, returns them on

        the object and in every webhook that carries it, and never acts on them.
        Up to 50 keys of up

        to 40 characters (no square brackets), values up to 500 characters. See

        [metadata](/meetingkit/setup#a-workspace-per-customer).
      maxProperties: 50
      propertyNames:
        minLength: 1
        maxLength: 40
        pattern: ^[^\[\]]+$
      additionalProperties:
        type: string
        maxLength: 500
      example:
        gurusup_user_id: usr_8812
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: >-
            A stable snake_case word, safe to branch on. See
            [Errors](/api-reference/errors) for the list.
        message:
          type: string
          description: A sentence for humans. It may change; do not parse it.
        field:
          type: string
          description: >-
            The dotted path to the request field at fault, such as
            `recording.methods.bot.mode`. Present only when one field is.
    SettingsSource:
      type: object
      properties:
        assignment_id:
          type:
            - string
            - 'null'
          description: >-
            The assignment whose settings supplied the value; `null` when none
            did, and `reason` says why.
        reason:
          type: string
          enum:
            - happyscribe_default
            - no_meeting_url
            - unsupported_platform
            - member_paused
            - bot_cancelled
          description: >
            Present when no assignment supplied the value.


            - `happyscribe_default`: nothing sets it; MeetingKit's default
            applies.

            - `no_meeting_url`: the meeting has no link to join, so nothing
            records it.

            - `unsupported_platform`: the link is not Zoom, Google Meet or
            Microsoft Teams.

            - `member_paused`: the member paused their notetaker.

            - `bot_cancelled`: the bot sent to this meeting was cancelled before
            it joined.
    SettingsCondition:
      type: string
      description: >
        One condition of an assignment's `scope`, written `<kind>:<name>`. Every
        condition of a scope must hold.


        - `workspace:wks_…`: the workspace's members and meetings. A scope names
        exactly one `workspace:` or `member:`.

        - `member:mem_…`: one member's meetings.

        - `meeting:mtg_…`: one meeting, this occurrence only. It implies its
        workspace; a scope with it names no member.

        - `meetings:organized`: meetings the member organizes.

        - `meetings:internal`: meetings where every participant is a workspace
        member.

        - `meetings:domain`: meetings where every participant is on the member's
        email domain.

        - `meetings:external`: meetings with at least one participant outside
        the workspace.


        One category per scope for now; to record external *or* organized
        meetings, make two assignments of the same settings.
      example: meetings:external
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your API key, sent bare. See
        [Authentication](/api-reference/authentication).

````