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

# Cancel Meeting Agent

> Cancels a booking owned by the API key user and requests that active bot workflows stop. Does not cancel the provider meeting for other participants. A successful response confirms cancellation and acceptance of applicable stop requests, not that the bot has already disconnected. No request body is required. Terminal bookings (cancelled, success, failed, expired) return 409. After a timeout or 5xx, fetch the booking status before retrying. Repeated cancellation cannot issue another refund.

Cancel a Meeting Agent booking owned by the user associated with your API key. Before
the call, cancellation prevents the bot from joining. During validation or recording,
it also requests that the bot's active workflows stop. This does not cancel the
underlying Zoom, Teams, or other provider's meeting for its participants.

Use the booking UUID returned by the Meeting Agent API, not the meeting provider's
join ID. No request body is required for an organization API key.

```bash theme={null}
curl --request POST \
  'https://api.linqalpha.com/v1/meetings/<meeting_id>/cancel' \
  --header 'x-api-key: <your-api-key>'
```

```json theme={null}
{
  "error": null,
  "payload": {
    "data": {
      "id": "6f1a0f6e-8e0c-4c7e-9d2b-3c9c6f5a1b2c",
      "status": "cancelled"
    }
  }
}
```

The response confirms the cancellation was recorded and applicable workflow stop
requests were accepted. An active bot may take time to disconnect; this is not an
acknowledgement from the meeting provider that it has already left.

Only the owner can cancel. Organization-wide access to meeting lists or details does
not grant permission to cancel another user's booking. Unknown and unowned bookings
both return `404 MEETING_NOT_FOUND`.

Bookings in `cancelled`, `success`, `failed`, or `expired` status return
`409 MEETING_NOT_CANCELABLE`. Repeating a successful cancellation does not issue
another refund. Existing booking rules restore usage before recording; cancellation
after the booking enters `recording` does not restore usage.

If the response is lost, or the API returns `503 MEETING_CANCEL_UNAVAILABLE` or
`502 MEETING_CANCEL_FAIL`, fetch the booking using `GET /v1/meetings/{meeting_id}`
before retrying. If it is already `cancelled`, no further request is needed. If it is
still cancellable, retry with backoff. Stop failures do not report a successful
cancellation. Organization rate limits also apply (`429`).

For platform API keys, supply the same `organization_id`, `user_id`, and `user_email`
identity selectors used when booking, as query parameters. `user_id` is your external
customer user identifier, not LinqAlpha's internal user UUID.


## OpenAPI

````yaml POST /v1/meetings/{meeting_id}/cancel
openapi: 3.0.1
info:
  title: LinqAlpha API
  description: >-
    Linq helps finance professionals make informed decisions using
    Retrieval-Augmented Generation (RAG)-enhanced answers. By leveraging
    cutting-edge Large Language Models (LLM) and supplementary technology, Linq
    provides the most optimized responses based on your queries.
  version: 1.0.0
  license:
    name: MIT
servers:
  - url: https://api.linqalpha.com
security:
  - ApiKeyAuth: []
tags:
  - name: Meeting Agent
    description: Book and manage meeting recording agents
  - name: Search
    description: Search and generate responses
  - name: Data
    description: Data retrieval and mapping
  - name: Feedback
    description: Conversation feedback
  - name: RMS
    description: Research Management System
  - name: Source Management
    description: Source batch and file management
  - name: MCP
    description: >-
      LinqAlpha MCP — Financial data tools for AI assistants via Model Context
      Protocol
  - name: Connectors
    description: Customer Connectors — customer-owned MCP connector management
  - name: Briefing
    description: Briefing Agent — automated market briefings with scheduling and delivery
  - name: Status
    description: Sync status — check organization, document, and container sync progress
paths:
  /v1/meetings/{meeting_id}/cancel:
    post:
      tags:
        - Meeting Agent
      summary: Cancel a Meeting Agent booking
      description: >-
        Cancels a booking owned by the API key user and requests that active bot
        workflows stop. Does not cancel the provider meeting for other
        participants. A successful response confirms cancellation and acceptance
        of applicable stop requests, not that the bot has already disconnected.
        No request body is required. Terminal bookings (cancelled, success,
        failed, expired) return 409. After a timeout or 5xx, fetch the booking
        status before retrying. Repeated cancellation cannot issue another
        refund.
      operationId: cancelMeetingAgent
      parameters:
        - name: meeting_id
          in: path
          required: true
          description: >-
            Booking UUID returned by the Meeting Agent API, not the provider
            join ID.
          schema:
            type: string
            format: uuid
        - name: organization_id
          in: query
          required: false
          description: 'Platform keys: organization selected when booking.'
          schema:
            type: string
        - name: user_id
          in: query
          required: false
          description: >-
            Platform keys: external customer user identifier selected when
            booking (not an internal UUID).
          schema:
            type: string
        - name: user_email
          in: query
          required: false
          description: 'Platform keys: email for the selected customer user.'
          schema:
            type: string
      responses:
        '200':
          description: Cancellation recorded; active workflows were asked to stop.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingAgentCancelResponse'
        '400':
          description: Invalid meeting UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: The API user is not permitted to cancel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: 'MEETING_NOT_FOUND: unknown booking or booking owned by another user.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '409':
          description: >-
            MEETING_NOT_CANCELABLE: booking is cancelled, success, failed, or
            expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '429':
          description: Organization rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '502':
          description: >-
            MEETING_CANCEL_FAIL: cancellation could not be confirmed. Fetch the
            booking status before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '503':
          description: >-
            MEETING_CANCEL_UNAVAILABLE: stop failed, meeting changed during
            cancellation, or upstream timed out. Fetch status before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
components:
  schemas:
    MeetingAgentCancelResponse:
      type: object
      required:
        - error
        - payload
      properties:
        error:
          nullable: true
          description: Null on success.
        payload:
          type: object
          required:
            - data
          properties:
            data:
              type: object
              required:
                - id
                - status
              properties:
                id:
                  type: string
                  format: uuid
                status:
                  type: string
                  enum:
                    - cancelled
    ApiErrorResponse:
      type: object
      description: Standard error response wrapper
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        payload:
          description: Always null for error responses
          nullable: true
      required:
        - error
        - payload
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: >-
            Error code indicating the type of error. Common codes:

            - Authentication: `API_KEY_MISSING`, `INVALID_API_KEY`

            - Validation: `INVALID_REQUEST_BODY`, `ORGANIZATION_ID_MISSING`,
            `TICKERS_MISSING`, `CHAT_MESSAGE_ID_MISSING`, `DOCUMENT_ID_MISSING`

            - Service: `SEARCH_FAIL`, `TTS_FAIL`, `CREATE_CONV_FAIL`,
            `GET_STOCK_FAIL`, `CREATE_MSG_FAIL`, `ALPHA_COMP_FAIL`,
            `GET_REF_FAIL`

            - Connectors: `CONNECTOR_LIST_FAIL`, `CONNECTOR_NOT_FOUND`,
            `CONNECTOR_CREATE_FAIL`, `CONNECTOR_UPDATE_FAIL`,
            `CONNECTOR_DELETE_FAIL`, `CONNECTOR_TEST_FAIL`

            - Not Found: `NOT_FOUND`

            - Meeting cancellation: `MEETING_NOT_FOUND`,
            `MEETING_NOT_CANCELABLE`, `MEETING_CANCEL_UNAVAILABLE`,
            `MEETING_CANCEL_FAIL`
          example: INVALID_REQUEST_BODY
        msg:
          type: string
          description: Error message (deprecated, use `message` instead)
          example: query is required and must be a string
        message:
          type: string
          description: Error message providing more details about the error
          example: query is required and must be a string
      required:
        - code
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````

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