> ## 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.

# Approve Meeting Agent Results

> Releases the results of a meeting held for compliance review. Only a meeting whose status is success and whose review_status is pending can be approved. Once the approval is recorded, the owner can see the summary and transcript, and the result email is sent. No request body is required. The API key's user must be a compliance viewer in the meeting owner's organization; a viewer may approve their own meeting.

Release the results of a meeting held for compliance review. When your organization
holds results for review, a meeting's summary and transcript are produced as usual
but stay hidden from its owner, and no result email is sent, until a compliance
viewer approves it. Approving releases them: the owner can see the summary and
transcript, and the result email is sent.

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>/approve' \
  --header 'x-api-key: <your-api-key>'
```

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

The response confirms the approval was recorded. The result email is sent after the
response, so it may arrive a short time later.

A held meeting has `review_status` `pending` from the moment its recording starts. It
can be approved once its recording has finished, that is, when its `status` is
`success`. To list the meetings waiting for a decision, filter on both:
`GET /v1/meetings?status=success&review_status=pending`.

The user associated with your API key must have compliance-viewer access in the
meeting owner's organization, otherwise the request returns
`403 MEETING_REVIEW_NOT_PERMITTED`. A compliance viewer may approve their own
meeting. Unknown meetings and meetings outside your organization return
`404 MEETING_NOT_FOUND`.

A meeting that is not waiting for a decision returns `409 MEETING_NOT_REVIEWABLE`:
it was rejected, its results were already released, its recording has not finished
successfully, or its content is past its retention period. Repeating an approval never
sends the result email twice.

If the response is lost, or the API returns `503 MEETING_REVIEW_UNAVAILABLE` or
`502 MEETING_REVIEW_FAIL`, fetch the meeting using `GET /v1/meetings/{meeting_id}`
before retrying. If its `review_status` is already `approved`, no further request is
needed. 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}/approve
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}/approve:
    post:
      tags:
        - Meeting Agent
      summary: Approve a meeting held for compliance review
      description: >-
        Releases the results of a meeting held for compliance review. Only a
        meeting whose status is success and whose review_status is pending can
        be approved. Once the approval is recorded, the owner can see the
        summary and transcript, and the result email is sent. No request body is
        required. The API key's user must be a compliance viewer in the meeting
        owner's organization; a viewer may approve their own meeting.
      operationId: approveMeetingAgentReview
      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: Approval recorded; the results are being released.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingAgentReviewResponse'
        '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: >-
            MEETING_REVIEW_NOT_PERMITTED: the API key's user is not a compliance
            viewer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: >-
            MEETING_NOT_FOUND: unknown meeting, or a meeting outside the API
            key's organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '409':
          description: >-
            MEETING_NOT_REVIEWABLE: the meeting is not waiting for a decision.
            It was rejected, its results were already released, its recording
            has not finished successfully, or its content is past retention.
          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_REVIEW_FAIL: the decision could not be confirmed. Fetch the
            meeting before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '503':
          description: >-
            MEETING_REVIEW_UNAVAILABLE: the decision could not be confirmed, or
            upstream timed out. Fetch the meeting before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
components:
  schemas:
    MeetingAgentReviewResponse:
      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
                - review_status
              properties:
                id:
                  type: string
                  format: uuid
                status:
                  type: string
                  nullable: true
                  description: The meeting's status, reported as is.
                review_status:
                  type: string
                  enum:
                    - approved
                    - rejected
                  description: The decision just recorded.
    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_REASON_REQUIRED`,
            `MEETING_CANCEL_UNAVAILABLE`, `MEETING_CANCEL_FAIL`

            - Meeting compliance review: `MEETING_NOT_FOUND`,
            `MEETING_REVIEW_NOT_PERMITTED`, `MEETING_NOT_REVIEWABLE`,
            `MEETING_REVIEW_UNAVAILABLE`, `MEETING_REVIEW_FAIL`

            - Transcriptions: `TRANSCRIPTION_UPLOAD_FAIL`,
            `TRANSCRIPTION_SUBMIT_FAIL`, `TRANSCRIPTION_GET_FAIL`,
            `TRANSCRIPTION_NOT_FOUND`, `TRANSCRIPTION_REQUEST_INVALID`,
            `TRANSCRIPTION_RESULT_UNAVAILABLE` (503, poll again),
            `TRANSCRIPTION_SUBMIT_UNAVAILABLE` (503, submit again with the same
            Idempotency-Key)
          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.