ElevenLabs Eleven v3 API, ElevenLabs Dubbing API, ElevenLabs Music API, ElevenLabs Multilingual v2 API: Pricing, Documentation

by ElevenLabs

ElevenLabs Eleven v3 API, developers can generate lifelike speech in multiple languages, clone voices from short audio samples, and create original music tracks. The API powers applications ranging from audiobook narration and podcast production to real-time voice assistants and multilingual content localization with human-quality audio output.

Get API Key
ElevenLabs Audio API

Models Version

WELCOME BONUS

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

ElevenLabs Eleven v3 TTS API Documentation

https://gateway.pixazo.ai/elevenlabs-eleven-v3-tts/v1/elevenlabs-eleven-v3-tts-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

ElevenLabs Eleven v3 TTS generate request

Request Code

POST https://gateway.pixazo.ai/elevenlabs-eleven-v3-tts/v1/elevenlabs-eleven-v3-tts-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "text": "[excited] Welcome to the future of voice. [whispers] Listen closely. [laughs] This is amazing.",
  "voice": "Rachel",
  "stability": 0.5,
  "timestamps": false,
  "apply_text_normalization": "auto"
}
import requests

url = "https://gateway.pixazo.ai/elevenlabs-eleven-v3-tts/v1/elevenlabs-eleven-v3-tts-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "text": "[excited] Welcome to the future of voice. [whispers] Listen closely. [laughs] This is amazing.",
    "voice": "Rachel",
    "stability": 0.5,
    "timestamps": false,
    "apply_text_normalization": "auto"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/elevenlabs-eleven-v3-tts/v1/elevenlabs-eleven-v3-tts-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "text": "[excited] Welcome to the future of voice. [whispers] Listen closely. [laughs] This is amazing.",
  "voice": "Rachel",
  "stability": 0.5,
  "timestamps": false,
  "apply_text_normalization": "auto"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/elevenlabs-eleven-v3-tts/v1/elevenlabs-eleven-v3-tts-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "text": "[excited] Welcome to the future of voice. [whispers] Listen closely. [laughs] This is amazing.",
    "voice": "Rachel",
    "stability": 0.5,
    "timestamps": false,
    "apply_text_normalization": "auto"
  }'

Output

{
  "request_id": "elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - ElevenLabs Eleven v3 TTS generate request

Parameter Required Type Default Allowed values / range Description
textYesstring1–5000 charactersText to convert to speech (1–5000 characters). Supports inline emotion tags such as [whispers], [laughs], [excited].
voiceNostring"Rachel"Any ElevenLabs voice name or voice IDVoice used for speech generation. Accepts a voice name or an ElevenLabs voice ID. Voices supported by Eleven v3 include: Rachel, Aria, Roger, Sarah, Laura, Charlie, George, Callum, River, Liam, Charlotte, Alice, Matilda, Will, Jessica, Eric, Chris, Brian, Daniel, Lily and Bill.
stabilityNofloat0.50.0–1.0Voice stability (0.0–1.0). Lower values (e.g., 0.2) produce more expressive, variable speech; higher values (e.g., 0.8) produce more consistent, steady speech.
timestampsNobooleanfalseIf true, returns an array of per-word timestamps alongside the audio output.
language_codeNostringISO 639-1 language code (e.g., "en", "es", "ja") to enforce a specific spoken language. Overrides auto-detection.
apply_text_normalizationNoenum"auto""auto", "on", "off"Whether to apply text normalization rules. Allowed values: auto, on, off. auto applies normalization only when beneficial; on forces it; off disables it entirely.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
audio1MP3, WAVReference voice.

Example Request

{
  "text": "[excited] Welcome to the future of voice. [whispers] Listen closely. [laughs] This is amazing.",
  "voice": "Rachel",
  "stability": 0.5,
  "timestamps": false,
  "apply_text_normalization": "auto"
}

Response

{
  "request_id": "elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'elevenlabs-eleven-v3-tts' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-eleven-v3-tts",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "elevenlabs-eleven-v3-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-eleven-v3-tts",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/elevenlabs-eleven-v3-tts_019dxxxx/output.mp3"],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

ElevenLabs Eleven v3 TTS API Pricing

Your request will cost $0.10 per 1,000 characters.
about $0.120 for a typical 200-word paragraph
equivalent to $100 per 1M characters
2. ElevenLabs Music

ElevenLabs Music API Documentation

https://gateway.pixazo.ai/elevenlabs-music/v1/elevenlabs-music-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

ElevenLabs Music generate request

Request Code

POST https://gateway.pixazo.ai/elevenlabs-music/v1/elevenlabs-music-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies",
  "music_length_ms": 30000,
  "force_instrumental": false,
  "respect_sections_durations": true,
  "output_format": "mp3_44100_128"
}
import requests

url = "https://gateway.pixazo.ai/elevenlabs-music/v1/elevenlabs-music-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies",
    "music_length_ms": 30000,
    "force_instrumental": false,
    "respect_sections_durations": true,
    "output_format": "mp3_44100_128"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/elevenlabs-music/v1/elevenlabs-music-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies",
  "music_length_ms": 30000,
  "force_instrumental": false,
  "respect_sections_durations": true,
  "output_format": "mp3_44100_128"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/elevenlabs-music/v1/elevenlabs-music-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies",
    "music_length_ms": 30000,
    "force_instrumental": false,
    "respect_sections_durations": true,
    "output_format": "mp3_44100_128"
  }'

Output

{
  "request_id": "elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - ElevenLabs Music generate request

Parameter Required Type Default Allowed values / range Description
promptConditionalstringText prompt describing the music to generate. Example: "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies". Provide either prompt or composition_plan: the two cannot be used together, and at least one must be supplied.
composition_planConditionalobjectStructured composition plan used instead of prompt for fine-grained control. Contains positive_global_styles, negative_global_styles, and sections. Each section requires section_name (1–100 characters), positive_local_styles, negative_local_styles, duration_ms (3000–120000), and lines (max 30 lines, up to 200 characters each). When supplied, the track length is the sum of the section durations, so music_length_ms is ignored.
music_length_msNointeger3000–600000Length of the generated track in milliseconds (3 seconds to 10 minutes). Used only with prompt and ignored when composition_plan is supplied. If omitted, the model chooses a suitable length.
force_instrumentalNobooleanfalseIf true, guarantees an instrumental track with no vocals. Applies to prompt-based generation.
respect_sections_durationsNobooleantrueIf true, enforces strict adherence to the duration_ms of each section in composition_plan; if false, the model may vary section timing. Applies only when composition_plan is supplied.
output_formatNoenum"mp3_44100_128"mp3_22050_32, mp3_44100_32, mp3_44100_64, mp3_44100_96, mp3_44100_128, mp3_44100_192, pcm_8000, pcm_16000, pcm_22050, pcm_24000, pcm_44100, pcm_48000, ulaw_8000, alaw_8000, opus_48000_32, opus_48000_64, opus_48000_96, opus_48000_128, opus_48000_192Audio codec, sample rate, and bitrate.

Example Request

{
  "prompt": "Uplifting indie folk track with acoustic guitar, soft piano, and warm harmonies",
  "music_length_ms": 30000,
  "force_instrumental": false,
  "respect_sections_durations": true,
  "output_format": "mp3_44100_128"
}

Response

{
  "request_id": "elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'elevenlabs-music' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-music",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "elevenlabs-music_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-music",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/elevenlabs-music_019dxxxx/output.mp3"],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

ElevenLabs Music API Pricing

Your request will cost $0.80 per minute of generated music.
billed in 1-minute increments, rounded up
3. ElevenLabs Dubbing

ElevenLabs Dubbing API Documentation

Dub a video or audio file into another language while preserving each speaker's voice. Video sources come back as dubbed video with the picture intact; audio sources come back as audio. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED.

POST https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Dubbing - ElevenLabs Dubbing

Request Code

POST https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "target_lang": "de",
  "source_lang": "en",
  "name": "q3-webinar-de",
  "num_speakers": 2,
  "start_time": 0,
  "end_time": 120,
  "drop_background_audio": true,
  "highest_resolution": true
}
import requests

url = "https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "target_lang": "de",
  "source_lang": "en",
  "name": "q3-webinar-de",
  "num_speakers": 2,
  "start_time": 0,
  "end_time": 120,
  "drop_background_audio": True,
  "highest_resolution": True
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "target_lang": "de",
  "source_lang": "en",
  "name": "q3-webinar-de",
  "num_speakers": 2,
  "start_time": 0,
  "end_time": 120,
  "drop_background_audio": true,
  "highest_resolution": true
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg", "target_lang": "de", "source_lang": "en", "name": "q3-webinar-de", "num_speakers": 2, "start_time": 0, "end_time": 120, "drop_background_audio": true, "highest_resolution": true}'

Output

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Webhook Headers

HeaderRequiredDescription
X-Webhook-URLTo enableHTTPS URL to receive the Webhook callback. Must respond 2xx.
X-Webhook-ModeNoterminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks).

Example: enable Webhook

curl -X POST 'https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  -H 'X-Webhook-Mode: terminal' \
  --data-raw '{"source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg", "target_lang": "de"}'

Callback Payload (success)

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-dubbing",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/elevenlabs-dubbing/019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mp4",
    "media_type": "video/mp4"
  },
  "duration": 15.86
}

Failure callback shape

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-dubbing",
  "error": "Couldn't extract audio from the downloaded file.",
  "output": null
}

Delivery semantics

  • terminal mode (default): one Webhook callback when the request is COMPLETED or ERROR.
  • sync mode: a Webhook callback on every poll.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 OK within a few seconds; the Webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
source_urlYesstring (uri)public http(s); max 600 seconds of mediaPublic URL of the video or audio file to dub. Must be reachable without authentication and must contain an audible speech track. These aliases are also accepted: video_url, audio_url, media_url, url.
target_langYesstringISO-639-1 or ISO-639-3 code; 86 languagesLanguage to dub into, for example es, fr, de, hi, ja, pt. Use the base language tag — region-qualified tags such as pt-BR or es-MX are not supported. Alias: target_language.
source_langNostringautoISO-639-1 or ISO-639-3 code, or autoLanguage of the source media, as a base language tag. auto detects it. Alias: source_language.
nameNostringtruncated to 200 charactersOptional name for the dubbing job, useful for your own reconciliation. Longer values are truncated to the first 200 characters.
num_speakersNointeger00 – 32Number of distinct speakers in the source. 0 detects the count automatically.
start_timeNointeger0 – 86400 (seconds)Dub only from this offset into the source media, in seconds.
end_timeNointeger0 – 86400 (seconds), must exceed start_timeDub only up to this offset into the source media, in seconds.
target_accentNostringfree text; truncated to 200 charactersExperimental. Preferred accent for the dubbed voices; also informs the dialect chosen during translation.
highest_resolutionNobooleanfalsetrue, falseRender the dubbed video at the highest resolution available.
drop_background_audioNobooleanfalsetrue, falseRemove background audio. Improves quality for speeches and monologues.
use_profanity_filterNobooleantrue, falseBeta. Censors profanities in the transcript as [censored].
disable_voice_cloningNobooleanfalsetrue, falseUse a similar voice from the ElevenLabs Voice Library instead of cloning the speaker's own voice. Library voices count against your workspace voice limit, and the dub fails if no slot is free.

Minimum request

Only source_url and target_lang are required. Everything else has a working default.

{
  "source_url": "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
  "target_lang": "es"
}

Source Media & Languages

Source requirements

  • source_url must be a public http(s) URL reachable without authentication — no signed-header or private-bucket URLs.
  • The file must contain an audible speech track. Silent video, music-only audio and files whose audio stream cannot be read are rejected.
  • A video source returns dubbed video with the original picture intact (video/mp4). An audio source returns audio (audio/mpeg).

Limits

LimitValueBehaviour when exceeded
Maximum source length600 seconds (10 minutes)Submit still returns 202. The source is measured after the request is queued and before anything is sent to ElevenLabs, so an over-length source ends the job there: the next status poll returns status: "ERROR" with Source media is <N>s long; this endpoint accepts up to 600s. Nothing is charged — the hold on your balance is released.
Concurrent dubbing jobs3Submit further jobs only after one finishes; keep no more than three in flight.

To dub media longer than 600 seconds, split it into segments and submit each segment separately — or use start_time and end_time to dub only the portion you need.

The length check is best-effort: it depends on reading the duration out of the file at source_url. If that duration cannot be read, the job is not blocked — it is dubbed and billed normally. Keep your sources within 600 seconds rather than relying on the check to stop them.

Processing time

Processing time scales with media length. Measured: about 12 seconds for 15 seconds of audio, and about 22 seconds for 16 seconds of video.

Supported languages

This endpoint runs ElevenLabs dubbing_v1, which supports the 86 languages below. Give the code in target_lang (and optionally in source_lang). Use the base language tag — region-qualified variants such as pt-BR, es-MX or en-GB are not supported:

CodeLanguageCodeLanguage
afAfrikaansarArabic
hyArmenianasAssamese
astAsturianazAzerbaijani
beBelarusianbnBengali
bsBosnianbgBulgarian
myBurmeseyueCantonese
caCatalancebCebuano
nyChichewazhChinese
hrCroatiancsCzech
daDanishnlDutch
enEnglishetEstonian
filFilipinofiFinnish
frFrenchglGalician
kaGeorgiandeGerman
elGreekguGujarati
haHausaheHebrew
hiHindihuHungarian
isIcelandicidIndonesian
gaIrishitItalian
jaJapanesejvJavanese
knKannadakkKazakh
koKoreankyKyrgyz
lvLatvianlnLingala
ltLithuanianlbLuxembourgish
mkMacedonianmsMalay
mlMalayalammtMaltese
miMaorimrMarathi
mnMongolianneNepali
noNorwegianocOccitan
orOdiapsPashto
faPersianplPolish
ptPortuguesepaPunjabi
roRomanianruRussian
srSerbiansdSindhi
skSlovakslSlovenian
soSomaliesSpanish
swSwahilisvSwedish
tlTagalogtgTajik
taTamilteTelugu
thThaitrTurkish
ukUkrainianurUrdu
uzUzbekviVietnamese
cyWelshyoYoruba

Example Request

{
  "source_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "target_lang": "de",
  "source_lang": "en",
  "name": "q3-webinar-de",
  "num_speakers": 2,
  "start_time": 0,
  "end_time": 120,
  "drop_background_audio": true,
  "highest_resolution": true
}

Example Response

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable Webhook callbacks (see Webhook section).
X-Webhook-ModeNoterminal (default) or sync.

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — invalid or missing parameters: a missing or non-http(s) source_url, a missing or malformed target_lang, an end_time that is not greater than start_time, or a value outside its allowed range. Nothing is charged. Source media longer than 600 seconds is not a 400 — it is accepted here and fails on the status poll instead.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
403Forbidden.
429Too many requests.
500Internal server error.

Error Responses

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-dubbing",
  "error": "Couldn't extract audio from the downloaded file.",
  "output": null
}

A failed dub is reported via the status endpoint (or Webhook) with status: "ERROR", an error message and output: null. The messages you are most likely to see:

CauseMessage
Source URL unreachable, or its audio/video metadata cannot be readURL 'https://…/does-not-exist.mp4' is invalid or audio/video metadata cannot be extracted from it.
Source has no audible speech trackCouldn't extract audio from the downloaded file.
Source media longer than the 600-second limit. Submit returns 202; the job then fails on the first status poll, before anything is sent to ElevenLabs, and nothing is chargedSource media is 667s long; this endpoint accepts up to 600s.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR).

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
curl 'https://gateway.pixazo.ai/v2/requests/status/elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response (video source)

{
  "request_id": "elevenlabs-dubbing_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-dubbing",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/elevenlabs-dubbing/019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mp4",
    "media_type": "video/mp4"
  },
  "duration": 15.86
}

An audio source returns the same envelope with media_type of audio/mpeg and an audio media_url. output.media_url is a Pixazo-hosted URL. The top-level duration is the length of the source media in seconds — it is what the per-minute charge is computed from.

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request.
output.media_urlstringPixazo-hosted URL of the dubbed media.
output.media_typestringMIME type of the output — video/mp4 for video sources, audio/mpeg for audio sources.
durationnumberLength of the source media in seconds. The per-minute charge is computed from this value.
polling_urlstringStatus URL for this request.
errorstringError message when status is FAILED/ERROR; output is null in that case.

Status Values & Flow

QUEUEDPROCESSINGCOMPLETED (success) or FAILED/ERROR (failure).

Typical Workflow

  1. POST https://gateway.pixazo.ai/elevenlabs-dubbing/v1/dub with source_url and target_lang; read request_id from the 202 response.
  2. Poll GET https://gateway.pixazo.ai/v2/requests/status/{request_id} — or supply X-Webhook-URL on submit and skip polling.
  3. When status is COMPLETED, download output.media_url.
  4. Keep no more than 3 dubbing jobs in flight at once.

Pricing

Billed at $0.50 per minute of source media, rounded up to the next whole minute. Billing is measured on the source length, not on the length of the output, and a 15-second clip therefore bills one full minute.

Source mediaBillable minutesCost
15 seconds1$0.50
60 seconds1$0.50
90 seconds2$1.00
600 seconds (the maximum accepted)10$5.00

Media longer than 600 seconds is rejected before anything is sent to ElevenLabs — the job ends as ERROR on the first status poll and nothing is charged — so the most expensive possible single request is $5.00.

ElevenLabs Dubbing API Pricing

Your request will cost $0.50 per minute of source media.
a 90-second clip bills 2 minutes, $1.00
equivalent to $0.50 per minute, rounded up to the next full minute
4. ElevenLabs Turbo v2.5

ElevenLabs Turbo v2.5 API Documentation

Low-latency ElevenLabs generation across 32 languages, at half the price of Multilingual v2 — the better default unless you need maximum fidelity. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the audio.

POST https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Speech - ElevenLabs Turbo v2.5

Request Code

POST https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}
import requests

url = "https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "JBFqnCBsd6RMkjVDRZzb"}'

Output

{
  "request_id": "elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLTo enableHTTPS URL to receive the Webhook callback.
X-Webhook-ModeNoterminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks).

Example: enable Webhook

curl -X POST 'https://gateway.pixazo.ai/elevenlabs-turbo-v2-5/v1/text-to-speech' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "JBFqnCBsd6RMkjVDRZzb"}'

Callback Payload (success)

{
  "request_id": "elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-turbo-v2-5",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
    ],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-08-01T09:14:16.102Z",
  "completed_at": "2026-08-01T09:14:22.870Z"
}

Failure callback shape

{
  "request_id": "elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-turbo-v2-5",
  "error": "Description of the failure"
}

Delivery semantics

  • terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
  • sync mode: a Webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the Webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
textYesstringup to 10,000 charactersThe text to speak.
voice_idYesstringan ElevenLabs voice idWhich ElevenLabs voice to use, e.g. JBFqnCBsd6RMkjVDRZzb. Browse voices in the ElevenLabs voice library.
output_formatNostringmp3_44100_128mp3_<rate>_<kbps> or opus_48000_<kbps>Codec, sample rate and bitrate in one value. Opus formats are returned as .ogg.
language_codeNostringautoISO 639-1, e.g. enForce a language instead of letting the model infer it.
voice_settingsNoobjectstability, similarity, styleFine-grained voice controls passed through to ElevenLabs.
seedNointeger0 – 4294967295Makes generation repeatable for identical input.

Voices

32 languages. Use any voice id from your ElevenLabs voice library.

Example Request

{
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}

Example Response

{
  "request_id": "elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable Webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — a missing or out-of-range parameter. The message names the field.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
429Too many requests.
500Internal server error.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or ERROR), then download output.media_url.

curl 'https://gateway.pixazo.ai/v2/requests/status/elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "elevenlabs-turbo-v2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-turbo-v2-5",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
    ],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-08-01T09:14:16.102Z",
  "completed_at": "2026-08-01T09:14:22.870Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED or ERROR.
model_idstringThe model that handled the request.
output.media_urlarrayURL of the generated audio file.
output.media_typestringMIME type of the audio.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is ERROR.

Status Values & Flow

QUEUEDPROCESSINGCOMPLETED (success) or ERROR (failure).

Pricing

Billed at $0.05 per 1,000 characters of input text, rounded up to the next whole 1,000. You are charged for the text you submit, not the length of the audio produced.

Input textBilled blocksCost
A short sentence (~50 characters)1$0.05
A paragraph (~800 characters)1$0.05
A 3,000-character article3$0.15
10,000 characters10$0.5

Failed requests are not billed.

ElevenLabs Turbo v2.5 API Pricing

Your request will cost $0.05 per 1,000 characters of input text.
half the price of Multilingual v2 at $0.05 per 1,000 characters
equivalent to $50 per 1M characters
5. ElevenLabs Multilingual v2

ElevenLabs Multilingual v2 API Documentation

ElevenLabs' quality-first model. The most natural delivery of the ElevenLabs line, at the cost of higher latency. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the audio.

POST https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Speech - ElevenLabs Multilingual v2

Request Code

POST https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}
import requests

url = "https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "JBFqnCBsd6RMkjVDRZzb"}'

Output

{
  "request_id": "elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLTo enableHTTPS URL to receive the Webhook callback.
X-Webhook-ModeNoterminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks).

Example: enable Webhook

curl -X POST 'https://gateway.pixazo.ai/elevenlabs-multilingual-v2/v1/text-to-speech' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "JBFqnCBsd6RMkjVDRZzb"}'

Callback Payload (success)

{
  "request_id": "elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-multilingual-v2",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
    ],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-08-01T09:14:16.102Z",
  "completed_at": "2026-08-01T09:14:22.870Z"
}

Failure callback shape

{
  "request_id": "elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "elevenlabs-multilingual-v2",
  "error": "Description of the failure"
}

Delivery semantics

  • terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
  • sync mode: a Webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the Webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
textYesstringup to 10,000 charactersThe text to speak.
voice_idYesstringan ElevenLabs voice idWhich ElevenLabs voice to use, e.g. JBFqnCBsd6RMkjVDRZzb. Browse voices in the ElevenLabs voice library.
output_formatNostringmp3_44100_128mp3_<rate>_<kbps> or opus_48000_<kbps>Codec, sample rate and bitrate in one value. Opus formats are returned as .ogg.
language_codeNostringautoISO 639-1, e.g. enForce a language instead of letting the model infer it.
voice_settingsNoobjectstability, similarity, styleFine-grained voice controls passed through to ElevenLabs.
seedNointeger0 – 4294967295Makes generation repeatable for identical input.

Voices

29 languages. Use any voice id from your ElevenLabs voice library.

Example Request

{
  "text": "Hello from Pixazo. This is a text to speech demo.",
  "voice_id": "JBFqnCBsd6RMkjVDRZzb"
}

Example Response

{
  "request_id": "elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable Webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — a missing or out-of-range parameter. The message names the field.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
429Too many requests.
500Internal server error.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or ERROR), then download output.media_url.

curl 'https://gateway.pixazo.ai/v2/requests/status/elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "elevenlabs-multilingual-v2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "elevenlabs-multilingual-v2",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
    ],
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-08-01T09:14:16.102Z",
  "completed_at": "2026-08-01T09:14:22.870Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED or ERROR.
model_idstringThe model that handled the request.
output.media_urlarrayURL of the generated audio file.
output.media_typestringMIME type of the audio.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is ERROR.

Status Values & Flow

QUEUEDPROCESSINGCOMPLETED (success) or ERROR (failure).

Pricing

Billed at $0.10 per 1,000 characters of input text, rounded up to the next whole 1,000. You are charged for the text you submit, not the length of the audio produced.

Input textBilled blocksCost
A short sentence (~50 characters)1$0.1
A paragraph (~800 characters)1$0.1
A 3,000-character article3$0.3
10,000 characters10$1

Failed requests are not billed.

ElevenLabs Multilingual v2 API Pricing

Your request will cost $0.10 per 1,000 characters of input text.
the highest-fidelity ElevenLabs voice, $0.10 per 1,000 characters
equivalent to $100 per 1M characters

⚡ Performance

Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).

Show data for the last
Generations
15,200last 30d
~507 per day
Success rate
94.1%
of completed generations
Generation time
58.1savg
p95 87.6s
Requests
Aug 3max 7,800Sep 1
ElevenLabs Eleven v3 TTSAvg 423/day
ElevenLabs MusicAvg 47/day
ElevenLabs Turbo v2.5Avg 20/day
ElevenLabs DubbingAvg 7/day
ElevenLabs Multilingual v2Avg 10/day
Generation Time
Aug 3max 8.7minSep 1
ElevenLabs Eleven v3 TTSAvg 59.3s
ElevenLabs MusicAvg 36.2s
ElevenLabs Turbo v2.5Avg 77.2s
ElevenLabs DubbingAvg 2.5min
ElevenLabs Multilingual v2Avg 84.0s
Error Rate
Aug 3max 100.0%Sep 1
ElevenLabs Eleven v3 TTSAvg 1.6%
ElevenLabs MusicAvg 7.1%
ElevenLabs Turbo v2.5Avg 66.7%
ElevenLabs DubbingAvg 50.0%
ElevenLabs Multilingual v2Avg 33.3%

〰 Uptime

Percent of generations that succeeded over the selected period, per model version.

Avg. Success Rate (30d)
94.08%
across all generations of this model family
Uptime
Aug 3max 100%Sep 1
ElevenLabs Eleven v3 TTSAvg 98.41%
ElevenLabs MusicAvg 92.86%
ElevenLabs Turbo v2.5Avg 33.33%
ElevenLabs DubbingAvg 50.00%
ElevenLabs Multilingual v2Avg 66.67%