Elevenlabs Eleven V3 API Documentation
Playground
Try it on WaveSpeedAI!ElevenLabs eleven-v3 is a text-to-speech model available as a hosted endpoint; requests cost $0.1 per 1000 characters. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Eleven V3 converts written text into natural, expressive speech using ElevenLabsβ advanced deep-learning speech synthesis technology. It delivers clear pronunciation, smooth pacing, and lifelike emotion β ideal for voiceovers, narrations, podcasts, and digital content.
π§ Key Features
- High Naturalness β produces human-like intonation, timing, and articulation.
- Multi-Language Support β generate voices in multiple global languages with automatic accent adaptation.
- Customizable Parameters β control tone and realism via similarity and stability settings.
- Speaker Boost β enhances clarity for English numerals, times, and measurements.
- Wide Voice Library β choose from a rich set of built-in voices (see voice list here).
π° Pricing
Billed by the exact character count of the input text, prorated β no rounding up to 1,000.
- Rate: $0.20 per 1,000 characters ($200 per 1M characters)
- No minimum charge; a 100-character request costs $0.020
| Characters | Cost |
|---|---|
| 100 | $0.020 |
| 500 | $0.10 |
| 1,000 | $0.20 |
| 10,000 | $2.00 |
π How to Use
- Enter your text in the
textfield (up to 5,000 characters). - Select a voice from the
voice_iddropdown (e.g., Alice, Elli, George). - Adjust optional parameters:
- similarity: 0β1 (higher = closer to base voice tone)
- stability: 0β1 (higher = consistent delivery)
- use_speaker_boost: enhances number reading in English.
- Click Run to generate and preview your audio.
π Notes
- Audio output is returned in MP3 format.
- Works best for English, but supports multiple languages.
- Long texts may require splitting for stable generation.
- Ensure text avoids ambiguous punctuation for optimal rhythm and tone.
- If the model returns an error message like incorrect voice ID, please modify the code according to the table mentioned earlier voice list here.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"text": "A clear example input",
"voice_id": "Alice",
"similarity": 1,
"stability": 0.5,
"use_speaker_boost": true
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/elevenlabs/eleven-v3" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| text | string | Yes | - | - | Text to convert to speech. Every character is 1 token. Maximum 10000 characters. Use <#x#> between words to control pause duration (0.01-99.99s). |
| voice_id | string | Yes | Alice | - | The voice to use for speech generation |
| similarity | number | No | 1 | 0 ~ 1 | High enhancement boosts overall voice clarity and target speaker similarity. Very high values can cause artifacts, so adjusting this setting to find the optimal value is encouraged. |
| stability | number | No | 0.5 | 0 ~ 1 | Voice stability (0-1) Default value: 0.5 |
| use_speaker_boost | boolean | No | true | - | This parameter supports English text normalization, which improves performance in number-reading scenarios. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., βsuccessβ) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| data.created_at | string | ISO timestamp of when the request was created (e.g., β2023-04-01T12:34:56.789Zβ) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., βsuccessβ) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |