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.
ElevenLabs API price per 1,000 characters and per minute
| Model | Here | Unit | Limit per request | Takes |
|---|---|---|---|---|
| Eleven v3 (text to speech) | $0.10 | per 1,000 characters | 5,000 characters | 21 voices, stability, timestamps, language code |
| Eleven Turbo v2.5 (text to speech) | $0.05 | per 1,000 characters | 40,000 characters | voice, stability, similarity, style, speed 0.7 to 1.2, previous and next text |
| Eleven Music | $0.80 | per minute, started | 3 to 600 seconds | prompt 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
| Job | Size | Eleven v3 | Turbo v2.5 | Eleven Music |
|---|---|---|---|---|
| One line of UI copy | 100 characters | $0.01 | $0.005 | — |
| A product description | 1,000 characters | $0.10 | $0.05 | — |
| A 10-minute audiobook chapter | 10,000 characters | $1.00 | $0.50 | — |
| An 8-hour audiobook | 480,000 characters | $48.00 | $24.00 | — |
| A 30-second jingle | 30 seconds | — | — | $0.80 |
| A 3-minute track | 3 minutes | — | — | $2.40 |
| A 10-minute ambient piece | 10 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 model | ElevenLabs API rate | Note | On this key |
|---|---|---|---|
| Eleven v4 | $0.08 per 1K characters | newest, 90+ languages | no |
| Eleven v4 Turbo | $0.04 per 1K characters | ~100 ms, for agents | no |
| Eleven v3 | $0.08 per 1K characters | 5,000-character limit, multi-speaker | yes, $0.10 per 1,000 characters |
| Eleven v3 Conversational | $0.04 per 1K characters | ~280 ms | no |
| Eleven v2 Multilingual | $0.08 per 1K characters | 10,000-character limit | no |
| Flash / Turbo | $0.04 per 1K characters | 40,000-character limit, ~75 ms | yes, $0.05 per 1,000 characters |
| Music | $0.15 per minute | 5-minute limit per track | yes, $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 plan | Per month | Credits | Per 1,000 characters |
|---|---|---|---|
| Free | $0 | 10,000 | non-commercial |
| Starter | $6 | 30,000 | $0.20 |
| Creator | $22 | 121,000 | $0.1818 |
| Pro | $99 | 600,000 | $0.165 |
| Scale | $299 | 1,800,000 | $0.1661 |
| Business | $990 | 6,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
- Sign in at elevenlabs.io and open Developers, then API Keys.
- Click Create API Key, name it, and set a credit limit and scopes if you want them (an IP allowlist is enterprise only).
- Copy the key at once: the dashboard shows it one time. Send it as the
xi-api-keyheader onapi.elevenlabs.io.
# 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
- Sign in to the console and add credit, from $10. There is no subscription and the credit does not reset at month end.
- Create a key. It calls
elevenlabs-v3,elevenlabs-turbo-2.5,elevenlabs-music, every video, image and 3D model, and every chat model. - Send the model and its
inputtoPOST /v1/generationson our base URL, below.
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/v1Make 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.
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.
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.
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.
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 minuteis_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
| Setting | Eleven v3 | Turbo v2.5 | Notes |
|---|---|---|---|
text | required, 5,000 max | required, 40,000 max | What to say. Billed by length. |
voice | 21 names, Rachel default | a name, Rachel default | Stock voices. No cloning on this key. |
stability | 0 to 1, 0.5 default | 0 to 1, 0.5 default | Lower is more expressive, higher more even. |
similarity_boost | — | 0 to 1, 0.75 default | How closely the voice tracks its reference. |
style | — | 0 to 1, 0 default | Style exaggeration; 0 is neutral. |
speed | — | 0.7 to 1.2, 1 default | Speaking rate. |
timestamps | true or false | true or false | Word timings with the audio. |
previous_text, next_text | — | text | Context across split requests. |
language_code | code | code | Forces the language; otherwise detected. |
apply_text_normalization | auto, on, off | auto, on, off | Spells 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/generationsanswers 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.