Skip to main content
A voice agent is a tenant-scoped routing alias that tells Yotel where to send audio when a call is answered. It maps a name to a WebSocket URL, authentication config, audio format, and concurrency limits.
Voice agents define routing, not behavior. Your AI service receives the audio stream and decides what to do. See the Voice agents quickstart for the integration flow.

Create a voice agent

Scope: voice_agents:write  |  Status: 201 Created

Request body

When this agent is the ceiling

Three separate numbers can bound how many calls run at once: your channel allocation (what your account was sold), a campaign’s max_concurrent, and this agent’s max_concurrent. The lowest one wins. When you create or update an agent whose max_concurrent is below your channel allocation, the response carries an advisory:
The request still succeeds — a lower cap is a legitimate choice, because your voice pipeline may have a lower limit than the carrier does. The advisory exists because the alternative is silence: an agent capped below the channels looks identical to a healthy one on every screen, and raising the channel allocation then changes nothing. advisory is null when the cap is at or above the allocation, and when the account has no allocation at all (there is no number to be below). Treat it as informational: it is not an error code, and it may describe other configuration notes in future.

Default audio format


List voice agents

Scope: voice_agents:read  |  Status: 200 OK Optional query parameter: status — filter by "active", "paused", or "archived".

Response


Get a voice agent

Scope: voice_agents:read  |  Status: 200 OK

Update a voice agent

PATCH semantics — only include fields you want to change. Null or absent fields are not modified.
Scope: voice_agents:write  |  Status: 200 OK

Archive a voice agent

Soft-deletes the voice agent by setting status: "archived". The UUID remains valid for foreign-key references (existing calls, campaigns) but new calls will not route to an archived agent.
Scope: voice_agents:write  |  Status: 200 OK

Delete a voice agent

Hard-deletes the voice agent. Returns 409 while anything still depends on it:
  • an in-progress AI session;
  • a draft, running, or paused campaign bound to it, a draft or published flow whose AI node points at it, or the tenant default — the detail names each one so you can re-point or archive them first (completed campaigns and archived flows do not block);
  • any past AI session at all — call history references the agent, so it cannot be deleted; archive it instead to retire it while keeping the history.
Scope: voice_agents:write  |  Status: 204 No Content

Response fields


Errors