Delivery profiles
Choose how an agent's voice performs its speech, hear exactly that in the voice preview, and know which providers honour it.
A delivery profile decides how the selected voice performs a reply: its pace, stability and emphasis. It does not change the voice, the model, the language or the words. Four profiles exist:
| Profile | Intent |
|---|---|
natural | Warm, varied cadence with restrained expressiveness. |
lively | Brighter delivery with more pace and emphasis variation. |
calm | Slower, softer and more consistent. |
precise | Stable delivery for names, dates, amounts and compliance-sensitive content. |
Unset means the provider's own defaults. That is what every agent had before this setting existed, and an agent that never chooses a profile keeps sending exactly the request it sent before.
Choose it in the agent editor
Open the agent in the workspace and choose Voice stack. The Delivery chooser sits directly under the chosen voice and offers Provider default, the unset state every agent starts in, and the four profiles with the same summaries as the table above. A short example describes how the agent's own voice performs the same line under each choice.
The profile is one intent per agent, but providers cannot change the same things, so the truth is written on each voice: every voice card, the shared voice and each per-language override, carries a Delivery on this voice line stating what the current choice changes for that voice, in the values the platform will send. For an ElevenLabs Flash voice, Precise reads "Steadiest of the four, digits kept level and separate. About 3% slower. Sets stability 0.80 · similarity 0.80 · speed 0.97"; a Soniox or Cartesia voice reads "Pace only" with its rate; a Gemini voice shows the instruction it is given; a voice whose provider and model have no truthful control (Fish Audio and Azure neural voices today) reads "no delivery controls for this voice yet": the choice is kept and takes effect if you move that language to a voice that has them. With Provider default chosen, every card says the voice sounds as its provider ships it. The line comes from the same table the call runtime reads, so it follows the voice you pick in the editor even before you save.
Listen on a voice card plays your text with the chosen profile through the voice preview, resolved exactly as a call resolves it. Changes apply to new calls after you save the agent.
Set it through the API
PATCH /v1/agents/{agent_id}/voice-stack accepts the profile inside
voice_polish, beside the existing closing line:
{
"voice_polish": {
"delivery": "calm",
"end_of_call_phrase": "Thanks for calling. Goodbye."
}
}The value must be one of the four names; anything else is rejected with 400.
The stored profile is returned by GET /v1/agents/{agent_id}/voice-stack and
applied when a call starts. Saving never changes a call already in progress.
Over MCP, set_agent_voice_stack takes the same voice_polish object.
Hear it before you save
POST /v1/voice-previews takes an optional delivery with the same four
values. The preview is rendered from the same table the call runtime reads, so
the provider request carries the identical settings a call with that profile
would send: the audition sounds like the call, not like a polished sample the
call could never reproduce. The response echoes delivery and reports
delivery_applied, which is false when the selected provider and model have
no truthful control for the profile. Over MCP, preview_voice takes the same
field. Generated speech is nondeterministic and phone-network audio can sound
different from browser audio.
What each provider honours
Profiles are never a universal slider. Each maps to allowlisted controls the provider actually exposes; where a provider has none, the setting is accepted, stored and returned, and the audio is unchanged.
| TTS provider and model | Control the profile drives |
|---|---|
ElevenLabs eleven_flash_v2_5, eleven_turbo_v2_5 | Voice settings: stability, similarity, speed. Style stays at zero. |
ElevenLabs eleven_v3 | Stability only, at the values that model documents. |
| Gemini TTS | A bounded synthesis instruction for style and pace; the instruction is never spoken. |
Soniox tts-rt-v2 | Speaking rate. |
Cartesia sonic-3.6 | Speaking rate. |
Fish Audio s2-pro | None yet. Accepted and returned, audio unchanged. |
| Azure neural voices | None yet. Accepted and returned, audio unchanged. |
Every TTS row of GET /v1/agent-catalog, and the voice object of
GET /v1/agents/{agent_id}/voice-stack, carries delivery_control:
voice_settings, instruction or speed when a profile changes that
engine's audio, or unsupported when it is stored without effect; and
delivery_profiles, the exact value each of the four profiles resolves to on
that engine: a settings object for ElevenLabs, a speaking rate for Soniox and
Cartesia, an instruction sentence for Gemini TTS, and an empty object where
the control is unsupported. Both are read from the same table, so a client
can show the state above, and the values a profile sets, without keeping its
own provider list.
Provider instructions and tags are generated from the platform's own table. Customer text never becomes provider control syntax, and no profile inserts laughter, sighs, accents or filler words.
Related
- Voice library for choosing and previewing a voice.
- Audio environments for optional background ambience, which is a separate setting.
- Acknowledgements for the short "One moment" an
agent can say while a slow reply is prepared; it shares the
voice_polishobject with the delivery profile.
Acknowledgements
Let an agent say a short "One moment" in its own voice while a slow reply is still being prepared, and choose what the caller hears while a slow tool call runs.
Agent workflows
Design governed conversations on a visual canvas, compile them into a deterministic runtime contract, and test them by talking, typing, simulating, or phoning before you publish.