id when starting a session — instead of wiring up voice, context, and language on every request.
Define your avatar’s persona once, then reuse it across sessions and embeds. The same agent can be reused with different per-session values each time.
Build and manage your voice agents in the dashboard at app.liveavatar.com/voice-agent. Each agent has an id you reference when starting a session.
Agent types
A voice agent has a storedagent_type that determines how the session is built and which configuration applies. The server resolves the type from the agent id — you do not pass it at session time.
liveavatar_agent
Backed by LiveAvatar’s managed conversational pipeline (STT → LLM → TTS). This is a FULL Mode agent: LiveAvatar runs the entire real-time stack. A liveavatar_agent builds its persona from the two building blocks documented in this section:
See FULL Mode Overview for the pipeline details.
elevenlabs_agent
Backed by an ElevenLabs-hosted agent, which handles the conversational AI while LiveAvatar renders the avatar video. An elevenlabs_agent produces a LITE Mode session even when referenced from a FULL Mode token request.
See the ElevenLabs Agent Connector for setup.
cartesia_agent
Backed by a Cartesia-hosted agent, which handles the conversational AI while LiveAvatar renders the avatar video. Like an elevenlabs_agent, it produces a LITE Mode session even when referenced from a FULL Mode token request.
A Cartesia agent owns its voice and prompt on Cartesia’s side, so its stored configuration is just two fields: the agent_id of your Cartesia agent, and the secret_id of a stored CARTESIA_API_KEY secret.
See the Cartesia Agent Connector for setup.
Referencing a voice agent
Pass the stored agentid where the request accepts one:
- Session tokens — supply a
voice_agentobject on a FULL ModePOST /v1/sessions/tokenrequest. Mutually exclusive withavatar_persona. - Embeds — supply
voice_agent_idonPOST /v2/embeddings. Mutually exclusive withvoice_id/context_id.
Per-session overrides
A voice agent stores defaults, but you can layer per-session values over them at creation time. Overrides apply to that session only — they do not modify the stored agent. Which overrides are accepted depends on the resolvedagent_type; an override that does not apply is rejected with a 400 rather than silently ignored.
A provider-hosted agent (
elevenlabs_agent, cartesia_agent) is used as-is — configure its language and prompt variables on the provider side.
dynamic_variables here is mutually exclusive with the top-level dynamic_variables (400 if both are set). Values must be strings. At most 50 entries, with keys ≤ 64 chars and values ≤ 1000 chars.