---
title: "Web Call"
method: POST
path: "/v1/voice/web-call"
tags: ["voice"]
---

# Web Call

`POST /v1/voice/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.

## Request body

- WebCallRequest — 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.
  - `agent_id` string, uuid, nullable — Agent whose VoicePipelineConfig drives the call. Provide this XOR `team_id`.
  - `team_id` string, uuid, nullable — 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` object, nullable — 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).

## Response `200`

Successful Response

- WebCallResponse
  - `livekit_url` string, required — wss:// URL the browser passes to livekit-client.connect().
  - `access_token` string, required — Short-lived (5 min) LiveKit JWT. Embeds RoomAgentDispatch so the voice-worker auto-joins when the browser connects.
  - `room_name` string, required
  - `session_id` string, uuid, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/888bdd5c076e/schema)
