Blog

ElevenLabs AI Audio: Voices, Pricing and API Code (2026)

Unicorn API Team · · 10 min read

ElevenLabs AI audio workflow showing a script turned into voice, dialogue and music tracks

ElevenLabs AI audio is the family of speech models people reach for when they need a voiceover that sounds like a person rather than a GPS unit: narration for videos, audiobook chapters, podcast intros, product demos and character dialogue. This guide explains which ElevenLabs models exist for which job, what a real script costs to voice, and how to call them from code, then covers the parts most guides skip: chunking long text, keeping a voice consistent, adding music, and staying on the right side of consent and disclosure rules.

What Is ElevenLabs AI Audio?

ElevenLabs is a voice AI company whose core product is text to speech (TTS): you give it written text and a voice, and it returns an audio file of that voice reading the text. Older TTS engines read word by word and sounded flat. ElevenLabs models read for meaning, so a question rises at the end, a list sounds like a list, and an emotional line gets some weight.

On its own website, ElevenLabs bundles this into an editor for podcasts, audiobooks and dubbing, plus voice cloning (building a voice from recordings of a real speaker), sound effects and voice agents. If you are interested in the agents side, our coverage of ElevenLabs’ Eleven Realtime voice agent model goes into that release.

For developers, “ElevenLabs AI audio” usually means the models themselves, called over an API so the voice is generated inside your own app or pipeline. That is the angle this article takes. There are two ways to do it:

  • Directly with ElevenLabs, using an ElevenLabs account and API key.
  • Through Unicorn API, where the same ElevenLabs models sit next to image, video, music and chat models behind one key and one bill, priced in credits.

The second route matters when audio is one step in a bigger workflow, for example generating a script with a chat model, voicing it, adding a music bed and pairing it with generated video. You write one integration instead of four.

Which ElevenLabs Models Can You Use Through an API?

Unicorn API currently offers three ElevenLabs models. They share a voice catalogue and a request style but are built for different jobs.

ModelModel IDPriceBest for
Elevenlabs Text to Speech Turbo V2.5elevenlabs-text-to-speech-turbo-2-56 credits per 1,000 charactersHigh-volume narration, drafts, app prompts, anything where cost per minute matters
Elevenlabs Text to Speech Multilingual V2elevenlabs-text-to-speech-multilingual-v212 credits per 1,000 charactersFinal voiceovers, long-form narration, non-English content
Elevenlabs Text to Dialogue V3elevenlabs-text-to-dialogue-v314 credits per requestConversations between two or more voices in one file

Turbo V2.5 vs Multilingual V2

Both speech models take the same input fields: text, voice, speed, style, stability, similarity_boost, language_code, previous_text, next_text and timestamps. The practical difference is the trade between price and polish. Turbo is the fast, cheaper tier, at half the price of Multilingual V2. Multilingual V2 is the one ElevenLabs positions for quality and for languages beyond English.

A sensible workflow is to draft with Turbo, listen for pacing and pronunciation problems in the script, then render the final take with Multilingual V2. Fixing a script costs far less on the cheap model, and you only pay the higher rate once.

Text to Dialogue V3

The dialogue model takes a dialogue array instead of a single text string. Each item has a line of text and the voice that speaks it, and the model returns one audio file with the whole exchange. It also accepts stability and language_code. Because it is billed per request rather than per character, it is good value for scenes with many short lines.

You can try all three in the browser audio playground before writing any code, which is the quickest way to pick a voice.

Diagram comparing the three ElevenLabs models available through Unicorn API
The three ElevenLabs models on Unicorn API, and the job each one is best at.

How Much Does ElevenLabs AI Audio Cost per Request?

Pricing for ElevenLabs AI audio on Unicorn API is in credits. Monthly plans give you credits at $0.01 each (Starter $25, Creator $50, Studio $100, Pro $200 per month). Top-up credits cost $0.015 each and never expire. Full details are on the pricing page.

The speech models charge per started block of 1,000 characters. The formula is price × ceil(characters / 1000), so 1,001 characters is billed as two blocks. Characters include spaces and punctuation.

Worked example: a 2,400-character voiceover

A 2,400-character script is roughly a short explainer video voiceover. It rounds up to three blocks.

ModelCreditsOn a monthly planWith top-up credits
Turbo V2.53 × 6 = 18$0.18$0.27
Multilingual V23 × 12 = 36$0.36$0.54
Text to Dialogue V3 (one request)14$0.14$0.21

If you draft twice with Turbo and render once with Multilingual V2, that script costs 18 + 18 + 36 = 72 credits, or $0.72 on a plan. On the $25 Starter plan’s 2,500 credits, you could run that full draft-and-final routine for about 34 scripts a month.

Check the price before you run it

You never have to guess. Send the same body you would send to create a job to the price endpoint and you get the exact credit cost back:

curl -X POST https://api.unicornapi.net/v1/models/price \
  -H "Authorization: Bearer $UNICORN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs-text-to-speech-multilingual-v2",
    "input": {
      "text": "Welcome back to the channel. Today we are looking at three ways to brew coffee at home.",
      "voice": "EkK5I93UQWFDigLMpZcX"
    }
  }'

This is worth wiring into any app where end users submit their own text, so you can show a cost or enforce a limit before anything is generated.

How to Generate Speech With the ElevenLabs API

Audio models on Unicorn API run as jobs. You create a job with POST /v1/jobs, poll GET /v1/jobs/{id} until its status is "succeeded", then download the file from job.outputs[0].url. You need an API key first: create one on the keys page and export it as UNICORN_API_KEY.

Python: voice a script and save the MP3

import os
import time
import requests

API = "https://api.unicornapi.net"
HEADERS = {
    "Authorization": f"Bearer {os.environ['UNICORN_API_KEY']}",
    "Content-Type": "application/json",
}


def run_job(body, poll_every=2, timeout=300):
    """Create a job, wait for it to finish, return the output URL."""
    resp = requests.post(f"{API}/v1/jobs", json=body, headers=HEADERS)
    resp.raise_for_status()
    job = resp.json()

    deadline = time.time() + timeout
    while job["status"] != "succeeded":
        if job["status"] in ("failed", "error", "canceled"):
            raise RuntimeError(f"Job {job['id']} ended with status {job['status']}")
        if time.time() > deadline:
            raise TimeoutError(f"Job {job['id']} did not finish in {timeout}s")
        time.sleep(poll_every)
        poll = requests.get(f"{API}/v1/jobs/{job['id']}", headers=HEADERS)
        poll.raise_for_status()
        job = poll.json()

    return job["outputs"][0]["url"]


script = (
    "Most people brew coffee too hot. "
    "Water just off the boil pulls out bitterness you do not want. "
    "Let the kettle rest for thirty seconds, and taste the difference."
)

audio_url = run_job({
    "model": "elevenlabs-text-to-speech-multilingual-v2",
    "input": {
        "text": script,
        "voice": "EkK5I93UQWFDigLMpZcX",
    },
})

with open("voiceover.mp3", "wb") as f:
    f.write(requests.get(audio_url).content)

print("Saved voiceover.mp3 from", audio_url)

To switch to the cheaper model for drafts, change the model value to elevenlabs-text-to-speech-turbo-2-5. Nothing else in the code changes. The file extension above is a convenience; check the content type of the response if your pipeline cares about the exact format.

What the optional fields do

  • voice: the voice ID. Pick one in the playground, copy the ID, and reuse it everywhere so your brand voice stays the same.
  • stability: how consistent the delivery is. Higher values give an even, predictable read; lower values give more variation and emotion, with more risk of odd takes.
  • similarity_boost: how closely the output sticks to the reference voice’s character.
  • style: how much stylistic exaggeration the voice adds.
  • speed: reading pace.
  • language_code: tells the model which language the text is in, which helps with short or ambiguous lines.
  • previous_text and next_text: the text before and after this chunk, so the model can match intonation across separate requests.
  • timestamps: requests timing data alongside the audio, useful for captions and lip-sync.

Accepted value ranges and output formats are listed in the API documentation. Start with defaults, change one setting at a time, and listen.

Pipeline from text script to API job to polling to finished audio file URL
Every audio request follows the same pattern: create a job, poll it, download the output.

Multi-Speaker Dialogue and Long Scripts

Two problems come up as soon as you move past a single paragraph: voicing a conversation, and voicing something long without the read drifting.

Generating a conversation with Text to Dialogue V3

Instead of rendering each line separately and stitching files together, send the whole exchange as one dialogue array. Here is the same job pattern in JavaScript (Node 18 or later, which has fetch built in):

const API = "https://api.unicornapi.net";
const headers = {
  Authorization: `Bearer ${process.env.UNICORN_API_KEY}`,
  "Content-Type": "application/json",
};

// Replace VOICE_B with a second voice ID from the playground.
const VOICE_A = "EkK5I93UQWFDigLMpZcX";
const VOICE_B = "EkK5I93UQWFDigLMpZcX";

async function runJob(body) {
  const res = await fetch(`${API}/v1/jobs`, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
  });
  if (!res.ok) throw new Error(`Create failed: ${res.status}`);
  let job = await res.json();

  while (job.status !== "succeeded") {
    if (["failed", "error", "canceled"].includes(job.status)) {
      throw new Error(`Job ${job.id} ended with status ${job.status}`);
    }
    await new Promise((r) => setTimeout(r, 2000));
    const poll = await fetch(`${API}/v1/jobs/${job.id}`, { headers });
    job = await poll.json();
  }
  return job.outputs[0].url;
}

const url = await runJob({
  model: "elevenlabs-text-to-dialogue-v3",
  input: {
    dialogue: [
      { text: "Did you really rewrite the whole onboarding flow last night?", voice: VOICE_A },
      { text: "Only the parts that made people quit. So, most of it.", voice: VOICE_B },
      { text: "Fair. Show me.", voice: VOICE_A },
    ],
  },
});

console.log("Dialogue audio:", url);

Save it as dialogue.mjs so top-level await works. At 14 credits per request, a scene like this costs the same whether it has three lines or a dozen, so group related lines into one request rather than splitting a scene into many.

Voicing long text without drift

For an audiobook chapter or a long tutorial, split the script at paragraph boundaries and pass the neighbouring text in previous_text and next_text. Keep the voice, stability, similarity_boost and speed values identical across chunks. Then concatenate the files in order.

Chunk size affects cost because billing rounds up per request. Splitting 3,000 characters into three 1,000-character chunks costs three blocks, the same as sending it whole. Splitting the same text into ten 300-character chunks costs ten blocks, more than three times as much. Aim for chunks just under a multiple of 1,000 characters.

Adding Music and Sound Effects to ElevenLabs AI Audio

A voiceover on its own can sound bare. ElevenLabs’ own platform has a sound effects generator, but on Unicorn API the music and short-sound tools come from Suno-based models, which you call with the same key and the same job pattern.

  • Ai Music API Sounds generates short sounds and loops from a prompt. It costs 2.5 credits per track, rounded up to whole credits, and accepts fields such as sound_loop, sound_tempo and sound_key.
  • Ai Music API Mashup builds a track from uploaded audio plus a style and prompt, at 12 credits per track.
  • Ai Music API Boost Music Style expands a short style description, at 0.4 credits per output, before rounding.
  • Ai Music API Generate Lyrics writes lyrics from a prompt, also at 0.4 credits per output, before rounding.

A minimal request for a background bed looks like this:

curl -X POST https://api.unicornapi.net/v1/jobs \
  -H "Authorization: Bearer $UNICORN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-music-api-sounds",
    "input": {
      "model": "V5",
      "prompt": "A calm lo-fi beat with soft piano, suitable under a spoken voiceover"
    }
  }'

Poll it exactly as you did the speech job. Mix the music well below the voice in your editor or with a tool like ffmpeg. If you are building full videos around music, our guide to a Suno AI music video generator shows how to chain audio into video models. The full list of audio, image and video models is in the model catalog, and if you work inside an AI coding tool, the agents page shows how to call all of this from Cursor or Claude Code.

Free options

ElevenLabs runs a free tier on its own site, with usage limits and licensing conditions that change, so read the current terms before you publish free output commercially. On Unicorn API there is no free tier: you pay per request, but the cheapest option is small. One block of Turbo V2.5 is 6 credits, or $0.06 on a plan, which covers roughly a minute of narration for a typical script.

Generating speech with AI voices is legal in most places. Trouble starts with how the audio is used:

  • Voice cloning without consent. Copying a real person’s voice without written permission can violate publicity and privacy rights. ElevenLabs voice cloning on its own platform requires you to confirm you have rights to the voice.
  • Impersonation and fraud. Using a synthetic voice to pass as someone else is where most of the real legal risk sits.
  • Automated calls. Telemarketing and robocall rules in many countries treat AI-generated voices as artificial voices, with consent requirements to match.
  • Disclosure. Some regions, including the EU under its AI Act, require that synthetic audio meant to resemble real people be labelled as AI-generated.

The safe habit is simple: use library voices or voices you have permission for, and say plainly when audio is AI-generated.

Common mistakes

  1. Writing for the eye, not the ear. Long sentences, brackets and abbreviations trip up any TTS model. Write numbers and acronyms the way you want them spoken.
  2. Tiny chunks. As covered above, many short requests cost more than a few full ones, because each request rounds up to the next 1,000 characters.
  3. Changing settings between chunks. A different stability or speed value halfway through a chapter is audible. Store your voice settings in one config object.
  4. Rendering finals on the draft model, or drafts on the final model. Use Turbo to iterate, Multilingual V2 to finish.
  5. Not handling failed jobs. Always check for a terminal error status and set a timeout, or a stuck job will hang your pipeline.

ElevenLabs AI audio is at its best when it is treated as one dependable step in a pipeline: a clean script in, a consistent voice out, a price you know in advance. Pick a voice in the playground, grab a key, and run the Python example above with your own script.

Frequently asked questions

Is ElevenLabs AI voice free?

ElevenLabs runs a free tier on its own website, but it comes with usage limits and licensing conditions that change over time, so check its current terms before using free output commercially. Through Unicorn API there is no free tier. You pay per request in credits: Turbo V2.5 costs 6 credits per 1,000 characters, which works out to $0.06 per 1,000 characters on a monthly plan.

Is using AI voice illegal?

Generating speech with an AI voice is legal in most places. The legal risk comes from how you use it: cloning a real person's voice without consent, impersonating someone, committing fraud, or placing automated calls with synthetic voices can break laws on privacy, publicity rights, consumer protection and telemarketing. Some regions, including the EU, also require you to disclose synthetic content. Get written consent and label AI audio clearly.

Which is the best AI audio generator?

It depends on the job. For spoken voiceovers, ElevenLabs is the common reference point, with Multilingual V2 for quality narration and Turbo V2.5 for cheaper, high-volume work. For conversations between characters, Text to Dialogue V3 handles several speakers in one request. For music, beds and short sounds, Suno-based models fit better. On Unicorn API you can test all of them with one key and compare.

Does ElevenLabs have AI voices?

Yes. ElevenLabs offers a large library of prebuilt AI voices, and its own platform also supports voice design and voice cloning. When you call its speech models through Unicorn API, you choose a voice by passing its ID in the voice field, for example EkK5I93UQWFDigLMpZcX. The model page and documentation list the voices you can use.

How much does ElevenLabs text to speech cost on Unicorn API?

Turbo V2.5 costs 6 credits and Multilingual V2 costs 12 credits per started block of 1,000 characters, so a 2,400-character script is billed as three blocks. Text to Dialogue V3 is a flat 14 credits per request. Plan credits cost $0.01 each and top-up credits $0.015. You can get the exact price of any request first with POST /v1/models/price.

Can I use the ElevenLabs API without an ElevenLabs account?

Yes, if you go through Unicorn API. You create one Unicorn API key, send requests to api.unicornapi.net with the ElevenLabs model ID, and pay in credits on a single bill. The same key also works for image, video, music and chat models, which is useful when a voiceover is one step of a larger pipeline.