Assign a distinct ElevenLabs voice to every script line and turn one API call into multi-character product voiceovers, ad reads, and promo dialogue.
Choose a model, enter your prompt, and see the result.
HiAPI Blog
HiAPI
Generate it with HiAPI
ElevenLabs Text-to-Dialogue turns a written script into one finished, multi-speaker audio file: give it an ordered list of lines, assign a different preset voice to each, and get back a single take with no manual editing or clip-stitching. Through the hiapi API, it's priced at $0.125 per 1,000 characters of dialogue and runs on the same async task flow as every other model on the platform. For e-commerce teams, that's a fast way to produce two-host product demo voiceovers, multi-character ad reads, and promo scripts without booking voice talent for every SKU or seasonal push.
Standard text-to-speech gives you one voice per call. To fake a conversation, you'd normally run separate TTS calls per speaker, then stitch the clips together yourself and hope the pacing and tone line up. ElevenLabs Text-to-Dialogue skips that: you send the entire script — every speaker turn, in order — as one request, and the model handles the turn-taking, pacing, and delivery itself. The output is a single audio file, not a folder of clips you have to assemble.
That matters most when the "conversation" is actually a piece of marketing audio: a two-host product demo, a customer-and-rep exchange in an ad, or an announcer trading lines with a "hype" voice on a promo. Those all read naturally as dialogue, and the model is built specifically for that shape of script.
The request body is intentionally narrow. Each entry in the dialogue array accepts exactly two fields — text and voice — and nothing else. Sending an extra field, or an invalid voice ID, gets rejected with a schema error before the task ever runs, which is how this was verified:
{
"model": "elevenlabs/text-to-dialogue",
"input": {
"dialogue": [
{"text": "This blender just tore through frozen mango in four seconds.", "voice": "EkK5I93UQWFDigLMpZcX"},
{"text": "Four seconds? Show me the smoothie.", "voice": "Z3R5wn05IrDiVCyEkUrK"},
{"text": "Already poured. Link's in the description.", "voice": "EkK5I93UQWFDigLMpZcX"}
]
}
}
voice has to be one of roughly 70 fixed IDs the platform exposes for this model (EkK5I93UQWFDigLMpZcX, NNl6r8mD7vthiJatiJt1, YOq2y2Up4RgXP2HyXjE5, and so on) — there's no field for a free-text voice name or an uploaded voice clone here.
One thing worth flagging directly: the model's own description talks about being able to "control stability" per line. In practice, the deployed schema doesn't expose a stability parameter (or a model_id, or an emotion tag) — only text and voice are accepted. If you're writing internal docs or a UI around this endpoint, don't promise a stability slider that isn't actually there yet.
Submission follows hiapi's standard async task flow: POST the request above to create a task, poll for its status, and download the resulting audio file once it completes — the same pattern used for image and video models on the platform, so it drops straight into an existing production pipeline.
Product video voiceovers. If you're already producing short-form product clips — for example with Kling for short-form video — text-to-dialogue is a natural audio layer for the same footage: write a two-voice script (host + reaction voice) that narrates the beats the video already hits, instead of a flat single-voice voiceover.
Multi-character ad reads. A short back-and-forth between two "customers" reads more like a real testimonial than a single narrated ad script, and it's one API call instead of coordinating two separate voice recordings.
Promo and sale scripts. Alternate an announcer voice with a second "hype" voice for flash-sale or seasonal promo audio, then keep the same script skeleton and voice pairing across different SKUs — swap only the product name, price, and offer details between calls.

At $0.125 per 1,000 characters, a typical 15–20 second two-voice ad script (roughly 250–350 characters) costs a fraction of a cent to generate; a longer 60–90 second, multi-turn product demo script running 700–900 characters comes out to roughly $0.09–$0.11. Billing is purely a function of total characters across the whole dialogue array — the number of speakers or lines doesn't change the formula. Check current, exact pricing on the hiapi pricing page before budgeting a batch, and browse the rest of the audio model lineup if you need single-voice narration or music alongside dialogue.
Can I use a custom or cloned voice with text-to-dialogue?
No. The live schema only accepts a voice ID from the platform's own preset list of about 70 voices. There's no field for uploading or referencing a custom voice clone on this endpoint.
Does it support an adjustable "stability" or emotion setting?
Not currently. Even though the model's own description mentions controlling stability, sending anything beyond text and voice in a dialogue line is rejected by the live API — don't build docs or UI around a stability slider until that actually ships.
How is pricing calculated for a multi-speaker script? By total character count across the entire dialogue array, at $0.125 per 1,000 characters — not per line, per speaker, or per second of output audio.
What do I get back from the task? A downloadable audio file URL, delivered the same way as any other hiapi task output. Download and store the bytes right away — task output links are time-limited, not permanent hosting.
Can I use it for non-English scripts? The model is listed for 70+ languages in hiapi's own model catalog, so multilingual dialogue is supported at the platform level. Test your target language's script on a short sample before committing a full production run to it.
Text-to-Dialogue is one option in a growing audio API lineup on hiapi. Open the model page to run your own script through it, or check the pricing page for current rates across every model.