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
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’smax_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:
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
voice_agents:read | Status: 200 OK
Optional query parameter: status — filter by "active", "paused", or "archived".
Response
Get a voice agent
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.voice_agents:write | Status: 200 OK
Archive a voice agent
Soft-deletes the voice agent by settingstatus: "archived". The UUID
remains valid for foreign-key references (existing calls, campaigns) but
new calls will not route to an archived agent.
voice_agents:write | Status: 200 OK
Delete a voice agent
Hard-deletes the voice agent. Returns409 while anything still depends on it:
- an in-progress AI session;
- a
draft,running, orpausedcampaign bound to it, adraftorpublishedflow whose AI node points at it, or the tenant default — thedetailnames 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.
voice_agents:write | Status: 204 No Content

