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

# Answer a pending interaction

> Answer a pending interaction through the authenticated human door.

Audience gate (after the existence/format/status guards): a question's
``audience`` identity OR any unrestricted caller (the operator can always unblock
a stuck question) may answer; every OTHER restricted caller is a loud ``403``.
An unaddressed question is answerable by any unrestricted caller and by no
restricted caller. This gate is sound ONLY because a restricted caller can never
obtain a question's callback ticket — the ticket is delivered exclusively over the
configured channel (never on any read/stream frame), so the unauthenticated
callback door stays the sole ticket-bearing surface and no filtered stream leaks
it.



## OpenAPI

````yaml /openapi.json post /api/interactions/{interaction_id}/answer
openapi: 3.1.0
info:
  description: The operator HTTP surface served under /api/*.
  title: tai42-skeleton API
  version: 0.1.1
servers: []
security: []
paths:
  /api/interactions/{interaction_id}/answer:
    post:
      tags:
        - interactions
      summary: Answer a pending interaction
      description: >-
        Answer a pending interaction through the authenticated human door.


        Audience gate (after the existence/format/status guards): a question's

        ``audience`` identity OR any unrestricted caller (the operator can
        always unblock

        a stuck question) may answer; every OTHER restricted caller is a loud
        ``403``.

        An unaddressed question is answerable by any unrestricted caller and by
        no

        restricted caller. This gate is sound ONLY because a restricted caller
        can never

        obtain a question's callback ticket — the ticket is delivered
        exclusively over the

        configured channel (never on any read/stream frame), so the
        unauthenticated

        callback door stays the sole ticket-bearing surface and no filtered
        stream leaks

        it.
      operationId: post_api_interactions_interaction_id_answer
      parameters:
        - in: path
          name: interaction_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InteractionAnswer'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data: {}
                required:
                  - data
                type: object
          description: Success.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Malformed request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Missing or invalid api key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Forbidden.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Resource not found.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Conflict with the current resource state.
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Request body too large.
      security:
        - ApiKeyAuth: []
components:
  schemas:
    InteractionAnswer:
      description: |-
        An answer to a pending interaction — the ``answer`` value validated at
        runtime against the interaction's own answer schema.
      properties:
        answer:
          title: Answer
      required:
        - answer
      title: InteractionAnswer
      type: object
    Error:
      properties:
        error:
          type: string
      required:
        - error
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: x-api-key
      type: apiKey

````