ElevenLabs Dialogue
What is ElevenLabs Dialogue?
ElevenLabs Dialogue is a multi-speaker audio endpoint that takes an array of {text, voice} turns and returns one combined audio file for the conversation. Up to 10 distinct ElevenLabs voices can appear in a single call, each turn picks any voice ID from your account (presets or clones), and the model handles the joins between turns so the result sounds like a real exchange rather than stitched TTS calls. The endpoint always uses the eleven_v3 model under the hood, so there is no model picker to manage. You control language via language_code (default en) and steadiness via stability (0 to 1). Inline emotion tags like [excitedly] or [whispered] at the start of a turn shape the delivery without any extra parameters.
Key features of ElevenLabs Dialogue
Five features cover what you'll set on a typical job.
Up to 10 speakers in one call
Each entry in the `dialogue` array names a `voice` ID and a piece of `text`. Mix presets, clones, and custom voices freely in the same conversation. The model returns one combined audio file instead of separate per-turn renders.
Native turn handoff
Pacing, breath, and room tone carry across speaker changes. That is the difference from stitching independent TTS calls, where each turn comes back with its own ambient signature and the joins read as cuts.
Inline emotion tags
Square-bracket tags at the start of a turn, such as `[excitedly]`, `[warmly]`, `[whispered]`, or `[shouted]`, steer the delivery for that line. No extra fields, no parallel script for direction notes.
V3 quality without a model picker
The endpoint always uses `eleven_v3`, the most expressive ElevenLabs model. No `model_id` to choose, no fallback path, no per-turn quality drift across a long conversation.
Per-conversation language and stability
`language_code` defaults to `en` and accepts ISO codes for other languages. `stability` (0 to 1) controls voice steadiness across turns, so you can dial drama up for fiction or down for narration in the same payload.
Best for
Scripted podcasts
Alternating hosts with distinct timbres in one API call. Inline emotion tags carry tone shifts without separate direction notes.
Audiobook scenes
Multiple cast voices for dialogue passages while the narrator stays on a different ElevenLabs voice. Mix in clones for branded narrator voices.
Training simulators
Role-play lines with fixed casting per character. Up to 10 voices fits a typical scenario script (customer, agent, supervisor, observer).
Game NPC barks and short scenes
Short turn-based dialogue between NPCs in a single render. Pair with a fixed `stability` to keep the cast tonally consistent across patches.
Product walkthroughs
Conversational two-host explainer instead of single-narrator voiceover. Reads as a podcast more than as a tutorial.
Language learning dialogue
Per-conversation stability for clarity in listening exercises. Switch `language_code` per scene to deliver content in the target language.
Use cases
Generate a podcast intro by writing a 4-turn dialogue between two hosts and dropping [warmly] and [excitedly] tags on the lines that need them. Build a compliance training scenario with three speakers (employee, customer, manager) and re-render with different stability values to A/B test how steady the cast should sound. Add an in-game dialogue system that batches NPC exchanges into single Dialogue calls so room tone matches across the scene. Localize a conversational explainer by switching language_code and the per-turn voice IDs while keeping the script structure constant.
API examples
Call ElevenLabs Dialogue from any language by POSTing to /v1/tasks. Full parameter docs live at docs.unifically.com/models/audio/elevenlabs/text-to-dialogue.
curl -X POST https://api.unifically.com/v1/tasks \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "elevenlabs/text-to-dialogue",
"input": {
"stability": 0.5,
"language_code": "en",
"dialogue": [
{
"text": "[excitedly] Hey Jessica! Have you tried the new ElevenLabs V3?",
"voice": "TX3LPaxmHKxFdv7VOQHJ"
},
{
"text": "[curiously] Yeah, just got it! The emotion is so amazing.",
"voice": "cgSgspJ2msm6clMCkdW9"
}
]
}
}'
Successful submission returns a task_id. Poll GET /v1/tasks/<task_id> or set a callback_url on the request to receive the finished audio URL.
FAQs
People also ask
ElevenLabs Dialogue is a multi-speaker audio endpoint that takes an array of {text, voice} turns and returns one combined audio file for the conversation. Each turn names an ElevenLabs voice ID, and the model handles the joins between them so the result sounds like a real chat instead of stitched-together TTS calls.
Fill Speaker 1 and Speaker 2 at minimum. Optional speakers 3 to 10 appear when you enable their toggles, each with its own voice and text fields. The payload becomes the dialogue array on the API call.
No. Dialogue always uses the eleven_v3 model under the hood, so there is no model_id to set. You control language via language_code (default en) and timbre via the stability field.
Use Dialogue when conversational pacing and voice handoff matter. Stitching separate TTS renders gives flat turn boundaries and inconsistent room tone. Dialogue handles the joins natively, with audible breath and timing between speakers.
Inline tags in square brackets at the start of a turn, such as [excitedly], [curiously], [warmly], [sadly], [angrily], [whispered], and [shouted]. Drop one in front of the text and the speaker delivers the line in that tone.
Up to 10 distinct voices in one call. Each turn picks any voice ID from your ElevenLabs account, so cloned voices and presets mix freely in the same conversation.
stability accepts a value from 0 to 1 (default 0.5). Lower values give more emotional range and variation. Higher values keep the voice steadier across turns. Use lower values for drama, higher for narration-style consistency.