ElevenLabs API

How to get an ElevenLabs API key, and what speech and music cost: Eleven v3 and Turbo v2.5 per 1,000 characters and Eleven Music per minute, worked out per chapter and per track next to ElevenLabs’ own API rates and plans.

Checked 2026-10-19

·All guides·Models

ElevenLabs API price per 1,000 characters and per minute

ModelHereUnitLimit per requestTakes
Eleven v3 (text to speech)$0.10per 1,000 characters5,000 characters21 voices, stability, timestamps, language code
Eleven Turbo v2.5 (text to speech)$0.05per 1,000 characters40,000 charactersvoice, stability, similarity, style, speed 0.7 to 1.2, previous and next text
Eleven Music$0.80per minute, started3 to 600 secondsprompt or composition plan, instrumental switch, 19 output formats

USD, live from GET /v1/catalog/media. Speech bills the exact character count divided by 1,000; music bills whole minutes, rounded up.

Speech is billed by the character: a 113-character line on Eleven v3 costs 0.113 of the per-1,000 price, and a 10,000-character chapter costs ten times it. Music is billed by the started minute, the larger of the duration you ask for and the sections of a composition plan. Prices on this page are read from the catalog when the page is built, at most five minutes old, and a top-up locks your rate for 30 days.

What speech and music cost, worked out

JobSizeEleven v3Turbo v2.5Eleven Music
One line of UI copy100 characters$0.01$0.005—
A product description1,000 characters$0.10$0.05—
A 10-minute audiobook chapter10,000 characters$1.00$0.50—
An 8-hour audiobook480,000 characters$48.00$24.00—
A 30-second jingle30 seconds——$0.80
A 3-minute track3 minutes——$2.40
A 10-minute ambient piece10 minutes——$8.00

USD at our live prices. Characters per minute follow ElevenLabs' own rule of thumb on its pricing page: about 1,000 characters a minute of speech. A 30-second track bills one started minute.

A ten-minute chapter is about 10,000 characters, so it is $1.00 on Eleven v3 and $0.50 on Turbo v2.5 here. On Eleven v3 it is at least two requests, since v3 takes 5,000 characters at a time; Turbo v2.5 takes the whole chapter in one. An eight-hour audiobook at the same rate is $48.00 on v3 and $24.00 on Turbo. A $10 top-up speaks 100 thousand characters on v3, about 1 hours of audio, or twice that on Turbo.

ElevenLabs’ own prices, for comparison

ElevenLabs sells the same models two ways: a usage-billed API in dollars, and monthly plans whose credits are spent one per character. These are its figures, read 2026-10-19 from the API pricing page and the plans page.

ElevenLabs modelElevenLabs API rateNoteOn this key
Eleven v4$0.08 per 1K charactersnewest, 90+ languagesno
Eleven v4 Turbo$0.04 per 1K characters~100 ms, for agentsno
Eleven v3$0.08 per 1K characters5,000-character limit, multi-speakeryes, $0.10 per 1,000 characters
Eleven v3 Conversational$0.04 per 1K characters~280 msno
Eleven v2 Multilingual$0.08 per 1K characters10,000-character limitno
Flash / Turbo$0.04 per 1K characters40,000-character limit, ~75 msyes, $0.05 per 1,000 characters
Music$0.15 per minute5-minute limit per trackyes, $0.80 a minute
Scribe v2 (speech to text)$0.22 per hour—no

ElevenLabs' usage-billed rates from elevenlabs.io/pricing/api, read 2026-10-19, excluding taxes. The right column is the catalog today.

ElevenLabs planPer monthCreditsPer 1,000 characters
Free$010,000non-commercial
Starter$630,000$0.20
Creator$22121,000$0.1818
Pro$99600,000$0.165
Scale$2991,800,000$0.1661
Business$9906,000,000$0.165

ElevenLabs' monthly plans from elevenlabs.io/pricing, read 2026-10-19; one credit is one character on the multilingual models. The last column divides the plan price by its credits. Annual billing is about 17% less per ElevenLabs.

Read side by side: on ElevenLabs' usage-billed API Eleven v3 is $0.08 per 1,000 characters and here it is $0.10; the Flash and Turbo tier is $0.04 there and Turbo v2.5 is $0.05 here; Music is $0.15 a minute there and $0.80 here. Against the plan credits, $0.20 to $0.165 per 1,000 characters on Starter through Pro, both speech models here are under. What the key here changes is the shape of the bill: no monthly plan, no credits that expire at month end, $10 to start, and the same key and endpoint for Kling and Veo video, Nano Banana and Seedream images and every chat model.

ElevenLabs API key: two ways to get one

From ElevenLabs

  1. Sign in at elevenlabs.io and open Developers, then API Keys.
  2. Click Create API Key, name it, and set a credit limit and scopes if you want them (an IP allowlist is enterprise only).
  3. Copy the key at once: the dashboard shows it one time. Send it as the xi-api-key header on api.elevenlabs.io.
shell
# ElevenLabs' own key: dashboard -> Developers -> API Keys -> Create API Key (copy it once)
export ELEVENLABS_API_KEY="..."
curl https://api.elevenlabs.io/v1/models -H "xi-api-key: $ELEVENLABS_API_KEY"

Steps from ElevenLabs' API keys documentation and dashboard, read 2026-10-19. The free plan's 10,000 credits a month are non-commercial; a commercial licence starts with the Starter plan.

One key for ElevenLabs and every other model

  1. Sign in to the console and add credit, from $10. There is no subscription and the credit does not reset at month end.
  2. Create a key. It calls elevenlabs-v3, elevenlabs-turbo-2.5, elevenlabs-music, every video, image and 3D model, and every chat model.
  3. Send the model and its input to POST /v1/generations on our base URL, below.
shell
export UPLINK_API_KEY="sk-uplink-live-..."
# one base URL for Eleven v3, Turbo v2.5, Eleven Music and every other model on the list:
# https://api.uplinkswitch.com/v1

Make speech with Eleven v3

Send the model and its input to POST /v1/generations. The answer comes back at once, 202, with the generation id and the price. text is required; the voice defaults to Rachel.

shell
curl https://api.uplinkswitch.com/v1/generations \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs-v3",
    "input": {
      "text": "Chapter one. The lighthouse keeper had not spoken to anyone in eleven days, and he was beginning to prefer it.",
      "voice": "George",
      "stability": 0.5
    }
  }'

# 202 with the generation id and the price already set; units are characters / 1,000:
# {"id": "gen_...", "status": "queued", "model": "elevenlabs-v3", "charge": {"amount_usd": "...", "units": 0.113, "unit": "1k_characters"}}

Poll the generation until its status is succeeded or failed. Speech is quick, usually seconds. A finished one lists its audio URL in outputs.

shell
curl https://api.uplinkswitch.com/v1/generations/gen_... \
  -H "Authorization: Bearer $UPLINK_API_KEY"

# "status" moves queued -> running -> succeeded (or failed, which is refunded); the audio is the first entry in "outputs":
# {"id": "gen_...", "status": "succeeded", "outputs": [{"url": "https://api.uplinkswitch.com/v1/files/media/...", "content_type": "audio/mpeg", "bytes": 123456}]}

ElevenLabs API in Python: a chapter at a time

No SDK to install: two calls with requests, one POST and GETs until the status is final. The script sends a chapter to Turbo v2.5 in one request, then shows the split a v3 chapter needs at its 5,000-character limit.

elevenlabs_chapter.py
import os, time, requests

BASE = "https://api.uplinkswitch.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['UPLINK_API_KEY']}"}

def speak(text: str, model: str = "elevenlabs-turbo-2.5", voice: str = "Rachel") -> str:
    """One generation; returns the audio URL. Turbo v2.5 takes up to 40,000 characters a request."""
    gen = requests.post(
        f"{BASE}/generations",
        headers=HEADERS,
        json={"model": model, "input": {"text": text, "voice": voice, "speed": 1.0}},
    ).json()
    print("charged", gen["charge"]["amount_usd"], "for", gen["charge"]["units"], "thousand characters")
    while gen["status"] not in ("succeeded", "failed"):
        time.sleep(3)
        gen = requests.get(f"{BASE}/generations/{gen['id']}", headers=HEADERS).json()
    if gen["status"] != "succeeded":
        raise RuntimeError(f"failed and refunded: {gen}")
    return gen["outputs"][0]["url"]   # an .mp3, served from https://api.uplinkswitch.com/v1 for 30 days

chapter = open("chapter-01.txt").read()          # ~10,000 characters, about ten minutes of audio
print(speak(chapter))

# Eleven v3 takes 5,000 characters a request: split a chapter at paragraph breaks and send the parts.
parts, buf = [], ""
for para in chapter.split("\n\n"):
    if len(buf) + len(para) + 2 > 5000:
        parts.append(buf); buf = ""
    buf += para + "\n\n"
parts.append(buf)
urls = [speak(p, model="elevenlabs-v3", voice="George") for p in parts]

Pass previous_text and next_text on Turbo v2.5 when you split a long text, so the prosody carries across the seam. timestamps on either model returns word timings for captions. The media guide has the endpoint in full.

Make music with Eleven Music

Describe the track in text, or pass a composition_plan with named sections and their lengths, and set duration in seconds. The charge is per started minute, so ask for the length you will use.

shell
curl https://api.uplinkswitch.com/v1/generations \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs-music",
    "input": {
      "text": "Slow lo-fi hip hop, warm vinyl crackle, soft piano chords, 72 bpm, for a study playlist",
      "duration": 180,
      "is_instrumental": true,
      "output_format": "mp3_44100_128"
    }
  }'

# billed per started minute: 180 seconds is 3 units of a minute

is_instrumental drops the vocals; output_format picks the codec, sample rate and bitrate from 19 choices, MP3 at 44.1 kHz and 128 kbps by default, with PCM, Opus, u-law and A-law for telephony and post-production. ElevenLabs caps its own Music API at 5 minutes a track; here the duration setting runs to 3 to 600 seconds.

Settings: voice, stability, speed, format

SettingEleven v3Turbo v2.5Notes
textrequired, 5,000 maxrequired, 40,000 maxWhat to say. Billed by length.
voice21 names, Rachel defaulta name, Rachel defaultStock voices. No cloning on this key.
stability0 to 1, 0.5 default0 to 1, 0.5 defaultLower is more expressive, higher more even.
similarity_boost—0 to 1, 0.75 defaultHow closely the voice tracks its reference.
style—0 to 1, 0 defaultStyle exaggeration; 0 is neutral.
speed—0.7 to 1.2, 1 defaultSpeaking rate.
timestampstrue or falsetrue or falseWord timings with the audio.
previous_text, next_text—textContext across split requests.
language_codecodecodeForces the language; otherwise detected.
apply_text_normalizationauto, on, offauto, on, offSpells out numbers and symbols when on.

Read from GET /v1/catalog/media when the page was built. An unknown setting or value is refused before anything runs, and nothing is charged.

Timing and errors

  • POST /v1/generations answers at once with the price set. Speech is usually ready in seconds, music in a minute or two; poll every few seconds.
  • Text past the model's limit (5,000 characters on v3, 40,000 on Turbo v2.5), an unknown voice name, or a music duration outside 3 to 600 seconds is refused with a 400 before anything runs.
  • 401 is a missing or revoked key. 402 is an empty balance or a key at its monthly spend limit, so top up or raise the limit in the console. 429 is the key's rate limit, or a busy model; the response says which.
  • A generation that fails is refunded in full, and one still unfinished after 6 hours is marked failed and refunded.
  • The file is an .mp3 on api.uplinkswitch.com, kept 30 days. Download what you want to keep.

Keep the key safe

Anyone holding the key spends your credit. Keep it in an environment variable or a secrets manager, out of git and out of code that runs in a browser: make the audio from your server and hand the finished URL to the page. A key can carry a monthly spend limit and a list of the models it may call, set in the console. If it leaks, revoke it there and create a new one.

Billing, receipts and the daily check

The price is charged when the request is accepted and refunded in full if it fails. Every charge sits on a signed receipt and a monthly statement you can check at /statements/verify. Whether each model answered today is public at /proof, which calls every model on the list once a day. Every setting and price is on the model pages and at GET /v1/catalog/media; the text-to-speech list has every speech model. For video on the same key, the Veo 3.1 guide and the Kling API guide have the per-clip and per-second prices.

Questions

How do I get my ElevenLabs API key?
Sign in at elevenlabs.io, open Developers in the sidebar, then API Keys, and click Create API Key. Name it, set an optional credit limit and scopes, and copy the key at once, since the dashboard shows it only that one time. Send it as the xi-api-key header. The steps and a curl check are in the first section; the alternative is one key from our console that calls Eleven v3, Turbo v2.5, Eleven Music and every other model on the list.
Is the ElevenLabs API key free?
The key itself costs nothing on either side. On ElevenLabs the free plan includes 10,000 credits a month for non-commercial use, and ElevenLabs' help centre says most endpoints work on every plan including free (read 2026-10-19). Here there is no free tier: credit starts at $10, there is no subscription, and every request bills the characters it speaks.
How much does the ElevenLabs API cost?
On ElevenLabs' usage-billed API, Eleven v4, v3 and v2 Multilingual are $0.08 per 1,000 characters and v4 Turbo, v3 Conversational and Flash/Turbo are $0.04; Music is $0.15 a minute (elevenlabs.io/pricing/api, read 2026-10-19). On its plans the included credits work out to about $0.17 to $0.20 per 1,000 characters. Here Eleven v3 is $0.10 and Turbo v2.5 $0.05 per 1,000 characters and Eleven Music $0.80 a minute, from prepaid credit with no subscription.
How much is an ElevenLabs API key?
Nothing: ElevenLabs bills usage or a plan, not the key, and so do we. What a key spends is in the tables above; a ten-minute chapter of about 10,000 characters is $1.00 on Eleven v3 here and $0.50 on Turbo v2.5.
Which ElevenLabs models does this key serve?
Three: Eleven v3 (elevenlabs-v3), Eleven Turbo v2.5 (elevenlabs-turbo-2.5) and Eleven Music (elevenlabs-music). ElevenLabs' own lineup also has Eleven v4 and v4 Turbo, v3 Conversational, v2 Multilingual, Scribe speech to text, voice cloning, dubbing and agents (read 2026-10-19); for those, use ElevenLabs directly.
Can I use my own cloned voice through this key?
No. Voice cloning and custom voices live in your ElevenLabs account. Here Eleven v3 takes 21 stock voices by name (Aria, Roger, Sarah, Laura, Charlie, George and 15 more), Rachel by default, and Turbo v2.5 takes a voice name with Rachel as the default.
How is ElevenLabs API usage metered?
By character, on both sides. ElevenLabs counts one credit per character of text on its multilingual models and bills its API per 1,000 characters. Here the charge is the text length divided by 1,000 times the per-1,000 price, so a 113-character line costs 0.113 of a unit, not a whole unit; the charge object on the generation shows the exact figure.
Which text-to-speech API costs the least?
It depends on the model and the volume, and the answer moves monthly, so this page prints prices rather than a ranking. Among speech models on this key, Turbo v2.5 is the lower-priced of the two at $0.05 per 1,000 characters; the text-to-speech list has every speech model with its price per unit, read live.
Which free TTS API is the best?
There is no free text to speech on this key, and ElevenLabs’ free plan is 10,000 credits a month for non-commercial use. If free is the requirement, start there; if a commercial licence, long texts or a single key for speech, video, images and chat is the requirement, the prices above are what that costs.
Does the ElevenLabs Python SDK work with this key?
No. The ElevenLabs SDK talks to api.elevenlabs.io with the xi-api-key header. Here speech and music go through POST /v1/generations with the model id and an input object, the same endpoint as every video and 3D model on the key; the Python on this page is the whole client in twenty lines.
What is the ElevenLabs API rate limit?
On ElevenLabs, concurrency depends on the plan (its plans page lists about 2 to 25 concurrent requests). Here a key has its own rate limit and an optional monthly spend limit, both in the console; a 429 names which one you hit, and a busy model is worth a retry in a minute.
How long can a request be?
Eleven v3 takes up to 5,000 characters of text a request and Turbo v2.5 up to 40,000, the same limits ElevenLabs publishes for v3 and Flash/Turbo. Eleven Music takes 3 to 600 seconds, billed per started minute, and a composition plan whose sections add up to more than the duration is billed at the plan's length.