ElevenLabs Text to Dialogue v3 API
/v1/tasks All models are called through the Unified Async API POST /v1/tasks endpoint; only the input fields differ (see input parameters below).
Model summary
| Model name | elevenlabs/text-to-dialogue-v3 |
|---|---|
| Type | Audio generation (text-to-dialogue) |
| Endpoint | POST /v1/tasks |
| Pricing | See HiAPI Pricing (per character) |
ElevenLabs Eleven v3 multi-speaker text-to-dialogue: turn scripted lines into natural, expressive conversation audio with a distinct voice per line, 70+ languages, billed per character.
Production guidance
- For production, pass callback.url at the top level of the request body so HiAPI can notify your service when the task reaches a terminal state.
- GET /v1/tasks/:id is better for local debugging, low-volume jobs, or fallback reconciliation if a callback is missed.
- Use callback.when=final. Both success and fail are terminal states, so your service should deduplicate by taskId.
- Split long scripts into multiple calls under the 5000-character limit; keep the same voice_id per character across calls for a consistent sound.
Best suited for
Assign a voice per line and generate whole conversation passages in one call — Eleven v3 excels at expressive narration.
dialogueHost + guest two-voice dialogue for podcast openers, news reads, and interview simulations.
dialoguestabilityPin one voice_id per character for a consistent sound and batch-generate quest dialogue.
dialogue70+ languages with auto-detection by default; rewrite the text per language to produce localized versions.
language_codeRequest parameters
model string required Fixed value elevenlabs/text-to-dialogue-v3.
input object required Business parameters. Put ElevenLabs Text to Dialogue v3-specific configuration here.
dialogue object[] required Array of dialogue lines, each { text, voice }, synthesized in order into one conversation audio. · Total characters across all text fields must not exceed 5000; requests over the limit return 400 (no charge) · Keep the same voice for the same character across lines for a consistent sound · All 67 preset voices are listed in the Preset voices table below
text string required The spoken text of this line (at least 1 character).
voice string required Voice ID for this line (67 presets, defaults to James). See the full Preset voices table below ↓
language_code enum optional Language of the generated speech (ISO code). Leave empty to auto-detect. See the full Supported languages table below ↓
stability enum optional Voice stability: 0 = more emotional and varied, 0.5 = balanced, 1 = most stable and consistent.
callback object optional Optional callback configuration. When set, HiAPI notifies your service when the task reaches a terminal state.
url string required Required when callback is set; HTTPS URL that receives terminal task notifications.
when enum optional Callback trigger timing. Use final.
Preset voices (67)
Pass a voice_id from this table in dialogue[].voice; keep one voice per character across lines for a consistent sound.
Show all 67 voices
| Voice | Style | voice_id |
|---|---|---|
| James | Husky, Engaging | EkK5I93UQWFDigLMpZcX |
| Arabella | Mysterious, Emotional | Z3R5wn05IrDiVCyEkUrK |
| Bradford | Expressive, Articulate | NNl6r8mD7vthiJatiJt1 |
| Xavier | Bold, Metallic Announcer | YOq2y2Up4RgXP2HyXjE5 |
| Kuon | Cheerful, Clear, Steady | B8gJV1IhpuegLxdpXFOE |
| Monika Sogam | Deep, Natural | 2zRM7PkgwBPiau2jvVXc |
| Mark | Casual, Relaxed | 1SM7GgM6IMuvQlz2BwM3 |
| Adeline | Feminine, Conversational | 5l5f8iK3YPeGga21rQIX |
| Sam | Support Agent | scOwDtmlUjD3prqpp97I |
| Spuds Oxley | Wise, Approachable | NOpBlnGInO9m6vDvFkFC |
| Eve | Genuine, Lively, Happy | BZgkqPqms7Kj9ulSkVzn |
| Northern Terry | — | wo6udizrrtpIxWGp2qJk |
| British Football Announcer | — | gU0LNdkMOQCOrPrwtbee |
| Brock | Commanding Sergeant | DGzg6RaUqxGRTHSBjfgF |
| Nathan | Virtual Radio Host | x70vRnQBMBu4FAYhjJbO |
| Anika | Lively, Friendly, Engaging | Sm1seazb4gs7RSlUVw7c |
| Viraj | Rich, Soft | P1bg08DkjqiVEzOn76yG |
| Taksh | Calm, Serious, Smooth | qDuRKMlYmrm8trt5QyBn |
| Horatius | Energetic Character | qXpMhyvQqiRxWQs4qSSB |
| Liam | Energetic Creator | TX3LPaxmHKxFdv7VOQHJ |
| Callum | Husky Rogue | N2lVS1w4EtoT3dr4eOWO |
| Laura | Warm, Quirky | FGY2WhTYpPnrIDTdsKH5 |
| Brittney | Fun, Young, Informative | kPzsL2i3teMYv0FxEYQ6 |
| Mark | Natural Conversation | UgBBYS2sOqTuMpoF3BR0 |
| Bella | Professional, Bright, Warm | hpp4J3VqNfWAUOO0d1Us |
| Brian | Deep, Resonant, Reassuring | nPczCjzI2devNBz1zQrb |
| Hope | Lively, Gossipy, Youthful | uYXf8XasLslADfZ2MB4u |
| Jeff | Elegant, Resonant, Strong | gs0tAILXbY5DNrJrsM6F |
| Jamahal | Young, Energetic, Natural | DTKMou8ccj1ZaWGBiotd |
| Finn | Young, Eager, Energetic | vBKc2FfBKJfcZNyEt1n6 |
| Tom | Conversation & Books | DYkrAHD8iwork3YSUBbs |
| Cassidy | Crisp, Direct, Clear | 56AoDkrOh6qfVPDXZ7Pt |
| Addison 2.0 | Australian Audiobook | eR40ATw9ArzDf9h3v7t7 |
| Jessica Anne Bogart | Chatty, Friendly | g6xIsTj2HwM6VR4iXFCw |
| Lucy | Fresh, Casual | lcMyyd2HUfFzxdCaC4Ta |
| Tiffany | Natural, Warm | 6aDn1KB0hjpdcocrUkmq |
| Felix | Warm, Positive, Modern RP | Sq93GQT4X1lKDXsQcixO |
| Jessica Anne Bogart | Eloquent Villain | flHkNRp1BlvT73UL6gyz |
| Lutz | Giggly, Cheerful | 9yzdeviXkFddZ4Oz8Mok |
| Emma | Cute, Upbeat | pPdl9cQBQq4p6mRkZy2Z |
| Edward | Loud, Confident, Cocky | zYcjlYFOd3taleS0gkk3 |
| Marshal | Friendly, Witty Professor | nzeAacJi50IvxcyDnMXa |
| John Morgan | Rugged Cowboy | ruirxsoakN0GWmGNIo04 |
| Aria | Sultry Villain | TC0Zp7WVFzhA8zpTlRqV |
| Viking Bjorn | Epic Medieval Raider | ljo9gAlSqKOvF6D8sOsX |
| Pirate Marshal | — | PPzYpIqttlTYA83688JI |
| Johnny Kid | Serious, Calm Narration | 8JVbfL6oEdmuxKn5DK2C |
| Hope | Poetic, Romantic, Charming | iCrDUkL56s3C8sCRl7wb |
| Ana Rita | Smooth, Expressive, Bright | wJqPPQ618aTW29mptyoc |
| John Doe | Deep | EiNlNiXeDU1pqqOPrYMO |
| Burt Reynolds™ | Deep, Smooth, Clear | 4YYIPFl9wE5c4L2eu2Gb |
| Hank | Deep, Engaging Narration | 6F5Zhi321D3Oq7v1oNT4 |
| Wyatt | Wise Country Cowboy | YXpFCvM1S3JbWEJhoskW |
| Phil | Explosive, Passionate Announcer | LG95yZDEHg6fCZdQjLqj |
| Johnny Dynamite | Retro Radio DJ | CeNX9CMwmxDxUF5Q2Inm |
| Rachel M | Pro British Radio Host | aD6riP1btT197c6dACmy |
| Rex Thunder | Deep, Tough | mtrellq69YZsNwzUSyXh |
| Ed | Late-Night Announcer | dHd5gvgSOzSfduK4CvEg |
| Jean | Charming, Playful Femme Fatale | eVItLK1UvXctxuaRV2Oq |
| Britney | Cool, Calculating Villain | esy0r39YPLQjOczyOib8 |
| Sven | Emotive, Kind | Tsns2HvNFKfGiNjllgqo |
| Viraj | Smooth, Gentle | 1U02n4nD6AdIZ9CjF053 |
| Nathaniel | Engaging, British, Calm | AeRdCCKzvd23BpJoofzx |
| Benjamin | Deep, Warm, Calm | LruHrtVF6PSyGItzMNHS |
| Allison | Calm, Soothing, Meditative | 1wGbFxmAM3Fgw63G1zZJ |
| Theodore HQ | Serene, Composed | hqfrgApggtO1785R4Fsn |
| Leon | Soothing, Composed | MJ0RnG71ty4LH3dvNfSd |
Supported languages (73)
All accepted language_code values; leave empty (default) to auto-detect.
Show all 73 languages
| Language | Code |
|---|---|
| Auto-detect (default) | "" |
| Afrikaans | af |
| Arabic | ar |
| Armenian | hy |
| Assamese | as |
| Azerbaijani | az |
| Belarusian | be |
| Bangla | bn |
| Bosnian | bs |
| Bulgarian | bg |
| Catalan | ca |
| Cebuano | ceb |
| Nyanja | ny |
| Croatian | hr |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| English | en |
| Estonian | et |
| Filipino | fil |
| Finnish | fi |
| French | fr |
| Galician | gl |
| Georgian | ka |
| German | de |
| Greek | el |
| Gujarati | gu |
| Hausa | ha |
| Hebrew | he |
| Hindi | hi |
| Hungarian | hu |
| Icelandic | is |
| Indonesian | id |
| Irish | ga |
| Italian | it |
| Japanese | ja |
| Javanese | jv |
| Kannada | kn |
| Kazakh | kk |
| Kyrgyz | ky |
| Korean | ko |
| Latvian | lv |
| Lingala | ln |
| Lithuanian | lt |
| Luxembourgish | lb |
| Macedonian | mk |
| Malay | ms |
| Malayalam | ml |
| Chinese | zh |
| Marathi | mr |
| Nepali | ne |
| Norwegian | no |
| Pashto | ps |
| Persian | fa |
| Polish | pl |
| Portuguese | pt |
| Punjabi | pa |
| Romanian | ro |
| Russian | ru |
| Serbian | sr |
| Sindhi | sd |
| Slovak | sk |
| Slovenian | sl |
| Somali | so |
| Spanish | es |
| Swahili | sw |
| Swedish | sv |
| Tamil | ta |
| Telugu | te |
| Thai | th |
| Turkish | tr |
| Ukrainian | uk |
| Urdu | ur |
| Vietnamese | vi |
| Welsh | cy |
Example requests
Two characters alternate lines (James × Arabella) at the balanced default stability.
{
"model": "elevenlabs/text-to-dialogue-v3",
"input": {
"dialogue": [
{
"text": "Welcome to HiAPI — one API for every AI model.",
"voice": "EkK5I93UQWFDigLMpZcX"
},
{
"text": "Really? Video, image and speech, all with the same key?",
"voice": "Z3R5wn05IrDiVCyEkUrK"
},
{
"text": "Exactly, and it is usage-based pricing.",
"voice": "EkK5I93UQWFDigLMpZcX"
}
],
"stability": 0.5
}
}Host + guest dialogue with language_code pinned to en and stability 1 for a steadier read.
{
"model": "elevenlabs/text-to-dialogue-v3",
"input": {
"dialogue": [
{
"text": "Welcome to today's podcast.",
"voice": "x70vRnQBMBu4FAYhjJbO"
},
{
"text": "Happy to be here — today I want to talk about the future of AI voice.",
"voice": "uYXf8XasLslADfZ2MB4u"
}
],
"language_code": "en",
"stability": 1
}
}Getting the result
- The response returns a taskId immediately without waiting for generation to finish.
- In production, prefer waiting for callback.url to receive the terminal notification. For local debugging, poll GET /v1/tasks/:id.
- When status=success, download the generated audio from output[].url.
- When status=fail, fix the request based on the returned error instead of retrying the same invalid payload.
FAQ
How is it billed?
Billing is per character: the total character count across all text fields, multiplied by the per-1000-characters rate. See the live pricing page for the current rate. View live pricing
How much text can one call synthesize?
Up to 5000 characters total across all lines per call. Requests over the limit return 400 without charging. Split long scripts into multiple calls, ideally by paragraph.
How do I pick voices?
Pass a preset voice_id in each line (67 presets covering narration, characters, male and female voices). The full list is in the Preset voices table on this page; keep one voice_id per character. See the preset voices table
Which languages are supported?
70+ languages. The language is auto-detected by default; pass language_code (e.g. en / zh / ja) to pin it. Keep one language per conversation for best results.
What is the output format?
The result is MP3 audio (audio/mpeg). After status=success, download it from output[].url; result URLs expire, so copy them to your own storage promptly.