Цены

ElevenLabs API pricing: every voice model per 1,000 characters, with code

You want ElevenLabs voices inside your own app, billed by what your users actually generate. Here is what each ElevenLabs model costs through an API, what a minute, an hour and a whole audiobook add up to, and the code to make the first MP3 in a few minutes.

ElevenLabs API pricing (November 2026)

ElevenLabs text to speech is priced by the characters it reads: spaces and punctuation count, the voice you pick does not change the price. Every request is charged once, when the audio is delivered:

ElevenLabs API price per 1,000 characters
МодельId моделиPer 1,000 characters10,000 characters1 million charactersДля чего
ElevenLabs V4elevenlabs-v4$0.12$1.20$120.00Narration, voiceovers and long reads: natural and steady
ElevenLabs V3elevenlabs-v3$0.12$1.20$120.00The most expressive: emotion, audio tags such as [whispers], dialogue
ElevenLabs Multilingual v2elevenlabs-multilingual-v2$0.12$1.20$120.00Proven, consistent narration in many languages
ElevenLabs Turbo 2.5elevenlabs-turbo-2.5$0.06$0.60$60.00Half the price: quick voiceovers, drafts, high volume

V4, V3 and Multilingual v2 cost the same, so pick them on sound, not price. Turbo 2.5 is half the price and quick: the right default for drafts, previews and anything made at volume. A request can be up to 5,000 characters; split longer scripts at paragraph breaks.

What a minute and an hour of speech cost

Spoken English runs at roughly 800 to 1,000 characters a minute, so 1,000 characters is about one minute of audio. A few common jobs, on V4 and on Turbo 2.5:

ElevenLabs API cost for common jobs
ЗадачаCharactersV4, V3 or Multilingual v2Turbo 2.5
A 30 second ad read500$0.06$0.03
A 5 minute explainer video5,000$0.60$0.30
An hour-long audiobook chapter60,000$7.20$3.60
A 10 hour audiobook600,000$72.00$36.00

Each request is rounded up to a whole credit (one cent), so very short lines cost at least one cent each. Batch short lines into one request where you can.

Pay per character, no subscription

ElevenLabs' own plans are monthly subscriptions with a character allowance. That suits a creator voicing videos every week. It suits an app less well: you pick a tier before you know your volume, and you pay for the month whether your users read ten lines or ten thousand.

  • Prepaid credit. Top up from the pricing page and spend it on ElevenLabs or any other model. 100 credits are one dollar.
  • Charged once, on delivery. The price is held when you submit and released if the job fails. A failed request costs nothing.
  • A cap on every job. Send max_cost_usd and the request never costs more than that.
  • One key for voice and video. The same request shape calls ElevenLabs, Suno for music and every video model, so a voiceover and the clip it goes on come from one account and one bill.

Turn text into speech with the ElevenLabs API

Send POST /v1/generations with a model id such as elevenlabs-v4, the text to read and a voice id, then poll the generation until it has succeeded or failed. The result is an MP3. The voice ids (more than 60 stock voices, with a short description each) are on the ElevenLabs V4 model page; leave voice out and the default voice reads. This line is about 100 characters, so it costs a cent or two.

cURL
export REVANA_API_KEY="sr_live_..."

# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)

# 1. Submit the job (returns 202 with the generation id). max_cost_usd is your cap: the most it may cost.
curl https://api.revana.si/v1/generations \
  -H "Authorization: Bearer $REVANA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $KEY" \
  -d '{
    "model": "elevenlabs-v4",
    "input": {
      "text": "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
      "voice": "EkK5I93UQWFDigLMpZcX"
    },
    "max_cost_usd": 0.8
  }'

# 2. Poll with the id from step 1 until status is "succeeded" or "failed".
#    A failed job is free; make a new KEY before you submit it again.
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
  -H "Authorization: Bearer $REVANA_API_KEY"
Python
import os
import time
import uuid

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
# One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
# same KEY: you get the same job back, never a second charge.
KEY = str(uuid.uuid4())

resp = requests.post(f"{API}/generations", headers={**HEADERS, "Idempotency-Key": KEY}, json={
    "model": "elevenlabs-v4",
    "input": {
        "text": "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
        "voice": "EkK5I93UQWFDigLMpZcX",
    },
    "max_cost_usd": 0.8,  # your cap: the most this job may cost
})
resp.raise_for_status()
job = resp.json()

while job["status"] in ("queued", "running"):
    time.sleep(3)
    job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()

if job["status"] == "succeeded":
    print(job["output"]["urls"], job["cost_usd"])
else:
    # A failed job is free. To try again, make a new KEY: this one answers with the failure.
    print("Failed:", job["error"])
Node.js
// Node 18 or later. Save as generate.mjs and run: node generate.mjs
import { randomUUID } from "node:crypto";

const API = "https://api.revana.si/v1";
const headers = {
  Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
  "Content-Type": "application/json",
};
// One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
// same key: you get the same job back, never a second charge.
const key = randomUUID();

const res = await fetch(`${API}/generations`, {
  method: "POST",
  headers: { ...headers, "Idempotency-Key": key },
  body: JSON.stringify({
    model: "elevenlabs-v4",
    input: {
      text: "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
      voice: "EkK5I93UQWFDigLMpZcX",
    },
    max_cost_usd: 0.8, // your cap: the most this job may cost
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();

while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 3000));
  job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}

if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error); // free; to try again, make a new key
Ответ
{
  "id": "gen_01JC2V8K5T",
  "model": "elevenlabs-v4",
  "status": "succeeded",
  "output": {
    "urls": [
      "https://cdn.revana.si/g/gen_01JC2V8K5T/0.mp3"
    ]
  },
  "cost_usd": 0.6,
  "attempts": 1,
  "error": null,
  "created_at": "2026-11-12T10:14:02Z",
  "completed_at": "2026-11-12T10:15:08Z"
}

Dialogue with ElevenLabs V3

V3 can read a conversation in one take: send dialogue, a list of lines each with its own voice, instead of text. V3 also follows audio tags in the text, such as [whispers], [laughs] or [sighs]. You pay for the characters of all the lines together: 1,000 characters on V3 are $0.12.

Тело запроса
{
  "model": "elevenlabs-v3",
  "input": {
    "dialogue": [
      { "voice": "EkK5I93UQWFDigLMpZcX", "text": "[whispers] Are you still awake?" },
      { "voice": "5l5f8iK3YPeGga21rQIX", "text": "[laughs] It is three in the morning. Of course I am." }
    ]
  },
  "max_cost_usd": 0.8
}

A voice, field or language the model does not take comes back straight away as 422 invalid_input, with what it does take, and nothing is charged.

Which ElevenLabs model to call

  • Voiceovers, explainers, audiobooks: V4. It reads long text steadily, without the drift that very expressive models can have over a long passage.
  • Characters, ads, games: V3. The widest range of emotion, audio tags and multi-voice dialogue, and 70+ languages.
  • A voice you already tuned: Multilingual v2, if your product was built and tested on it.
  • Volume and previews: Turbo 2.5 at $0.06 per 1,000 characters, with a language_code to keep it in one language.

Need the voice inside a video instead of next to it? Several video models now make speech and sound with the picture: see ElevenLabs alternatives for when that beats a separate voiceover, and the models page for every model with its live price. The full request reference is in the docs, or get an API key.

Частые вопросы

How much does the ElevenLabs API cost?

In November 2026, ElevenLabs V4, V3 and Multilingual v2 cost $0.12 per 1,000 characters and Turbo 2.5 costs $0.06. There is no monthly plan: you prepay credit and each request is charged once, when the audio is delivered.

How many characters is a minute of audio?

About 800 to 1,000 characters of English text, so one minute of speech costs roughly $0.12 on V4 and $0.06 on Turbo 2.5.

Do I need an ElevenLabs subscription to use the API?

No. You call the ElevenLabs models with a Revana API key and pay per character from prepaid credit. There is nothing to cancel and no monthly minimum.

Does the voice change the price?

No. Every stock voice costs the same; only the model and the number of characters set the price.

Am I charged for a failed request?

No. The price is held when you submit and released if the job fails, so a failed request costs nothing.

How long can one request be?

Up to 5,000 characters, about five minutes of speech. Split longer scripts at paragraph breaks and send them as separate requests.

Call ElevenLabs with one key

One API key for ElevenLabs voices, music and every image and video model. Prepaid credit from $10, charged only for audio that is delivered.