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

# Web Call

> Mint a LiveKit access token + auto-dispatch directive for a browser call.

The browser passes the returned ``access_token`` to ``livekit-client``'s
``connect(livekit_url, access_token)``. LiveKit creates the room and
auto-dispatches the voice-worker into it; ``agent_id`` is JWT-signed
and tamper-proof. The supervisor selects which enabled procedure runs
from the agent's active-revision catalog on turn 1. The session is
created with ``session_type="test"`` so post-processing (summary,
memory sync) is skipped.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/voice/web-call
openapi: 3.1.0
info:
  title: Feather API
  description: >-
    Unified customer experience platform API. Manages identity, conversations,
    memory, agents, procedures, policies, model routing, knowledge bases,
    integrations, and runtime execution.
  version: 1.21.0
servers:
  - url: https://api-sandbox.featherhq.com
    description: Sandbox
  - url: http://localhost:8000
    description: Local dev
security: []
paths:
  /v1/voice/web-call:
    post:
      tags:
        - voice
      summary: Web Call
      description: >-
        Mint a LiveKit access token + auto-dispatch directive for a browser
        call.


        The browser passes the returned ``access_token`` to ``livekit-client``'s

        ``connect(livekit_url, access_token)``. LiveKit creates the room and

        auto-dispatches the voice-worker into it; ``agent_id`` is JWT-signed

        and tamper-proof. The supervisor selects which enabled procedure runs

        from the agent's active-revision catalog on turn 1. The session is

        created with ``session_type="test"`` so post-processing (summary,

        memory sync) is skipped.
      operationId: web_call_v1_voice_web_call_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebCallRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebCallResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    WebCallRequest:
      properties:
        agent_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Agent Id
          description: >-
            Agent whose VoicePipelineConfig drives the call. Provide this XOR
            `team_id`.
        team_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Team Id
          description: >-
            Team to test against — the team-level VoicePipelineConfig drives the
            call and the team's default active agent (initial member)
            answers/greets. Provide this XOR `agent_id`.
        context_variables:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Context Variables
          description: >-
            Optional seed values for the bound agent's typed context variables,
            applied once at session bootstrap (same contract as the
            outbound-call door). Unknown key / uncoercible value → 422.
            Single-agent bindings only in v1 (ignored for team-bound test
            calls).
      type: object
      title: WebCallRequest
      description: |-
        Browser-initiated test call against an agent.

        Mints a short-lived LiveKit access token whose ``RoomConfiguration``
        embeds an ``agent_dispatch`` directive — when the browser connects, the
        voice-worker is auto-dispatched into the freshly-created room. The
        server signs ``agent_id`` into the token metadata so the browser cannot
        tamper with which agent it is testing. The supervisor picks which
        enabled procedure runs from the agent's active-revision catalog on
        turn 1.
    WebCallResponse:
      properties:
        livekit_url:
          type: string
          title: Livekit Url
          description: wss:// URL the browser passes to livekit-client.connect().
        access_token:
          type: string
          title: Access Token
          description: >-
            Short-lived (5 min) LiveKit JWT. Embeds RoomAgentDispatch so the
            voice-worker auto-joins when the browser connects.
        room_name:
          type: string
          title: Room Name
        session_id:
          type: string
          format: uuid
          title: Session Id
      type: object
      required:
        - livekit_url
        - access_token
        - room_name
        - session_id
      title: WebCallResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: x-api-key

````