Overview
ElevenLabs provides AI voice generation – text-to-speech, voice cloning, dubbing, and speech-to-speech. The Automize connector covers TTS (sync + streaming), STT, dubbing jobs, voice management, and history download.
- Regions: Single global API at api.elevenlabs.io. Audio responses stream from the closest edge POP automatically.
- Plans: Free has 10k characters/month and no commercial use rights. Starter onwards unlocks commercial licensing. Voice cloning (Instant + Professional) requires Creator or higher. Dubbing Studio is metered separately.
Setting up the connection
Auth type: API Key.
- In ElevenLabs, open Profile → API Keys and click Create API Key. Scope it to the workspace + actions you need.
- Copy the key (shown once) and paste it as the API key in Automize.
- The connector sends it as xi-api-key on every request – no Authorization header used.
Find your credentials at https://elevenlabs.io/app/settings/api-keys.
Rate limits
Character throughput is the actual quota – concurrent requests cap at 2 (Free), 5 (Starter), 10 (Creator), 15 (Pro+). Hitting concurrency returns 429 system_busy; the connector backs off + retries. Streaming TTS counts the same characters whether you consume the stream or not.
Data model
ElevenLabs' content graph:
Voice pre-built / cloned voice
├─ settings (stability, similarity_boost, style, speaker_boost)
└─ samples (source audio for clones)
History every generation gets a history_item_id
├─ text (the prompt)
├─ voice_id (which voice rendered it)
└─ audio (downloadable for the retention window)
Dubbing async job – translate + voice-clone source video
└─ status dubbing → dubbed → (failed)
Model eleven_multilingual_v2 (default), eleven_turbo_v2_5
(low-latency), eleven_monolingual_v1 (legacy English),
scribe_v1 (STT). Each has supported language list.
Voice categories:
premade ElevenLabs-hosted stock voices, available to all
cloned Your Instant Clones (1-min source, fast)
generated Voice Lab generated (style-from-description)
professional Studio-trained, manual review (Pro+)
History retention: 30 days for Free, longer on paid plans. Audio
is regenerable if you have history retention – past that window it's
gone, even if you have the history_item_id.Available operations
15 operations available. Click any row to jump to its detail.
| Operation | Category | What it does |
|---|---|---|
| Add Voice (Clone) | General | Clone a voice from audio samples |
| Create Dubbing | General | Dub a video or audio file to another language |
| Delete Voice | General | Delete a voice from your library |
| Edit Voice Settings | General | Update default stability/similarity settings for a voice |
| Get Dubbing | General | Get status of a dubbing job |
| Get History Audio | General | Download the audio for a historical generation |
| Get User | General | Get account info, subscription tier and character usage |
| Get Voice | General | Get a single voice's details |
| List History | General | List historical generations |
| List Models | General | List available TTS models |
| List Voices | General | List voices available to your account |
| Speech to Speech | General | Convert source audio to target voice |
| Speech to Text | General | Transcribe audio to text |
| Text to Speech | General | Synthesize speech from text for a given voice |
| Text to Speech (Stream) | General | Synthesize speech and stream audio chunks |
Operations
Add Voice (Clone)
Clone a voice from audio samples
| Parameter | Required | Type | Description |
|---|---|---|---|
Name name | No | text | |
Files files | No | text | |
Description description | No | text | |
Labels labels | No | text |
Tips
- Instant cloning needs 1+ minute of clean source audio. Professional cloning needs 30+ minutes and a manual review step on ElevenLabs' side.
- Multipart upload: name + description + files[] (audio samples). Returns voice_id; available immediately for Instant clones, hours-days for Professional.
Create Dubbing
Dub a video or audio file to another language
| Parameter | Required | Type | Description |
|---|---|---|---|
File file | No | text | |
Source Lang source_lang | No | text | |
Target Lang target_lang | No | text | |
Num Speakers num_speakers | No | text | |
Watermark watermark | No | text | |
Start Time start_time | No | text | |
End Time end_time | No | text | |
Highest Resolution highest_resolution | No | text |
Tips
- Async – returns dubbing_id. Poll Get Dubbing until status='dubbed' (typically 1-5 min/minute of source).
- target_lang takes ISO-639 codes; source_lang is auto-detected if omitted.
Delete Voice
Delete a voice from your library
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text |
Tips
- DELETE /v1/voices/{voice_id} – only your cloned voices are deletable. Premade voices return 403.
- Doesn't delete historical generations made with this voice – those stay in history.
Edit Voice Settings
Update default stability/similarity settings for a voice
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text | |
Stability stability | No | text | |
Similarity Boost similarity_boost | No | text | |
Style style | No | text | |
Use Speaker Boost use_speaker_boost | No | text |
Tips
- POST /v1/voices/{voice_id}/settings/edit – body: stability, similarity_boost, style, use_speaker_boost.
- Settings persist as the voice's default. Per-call settings (passed in TTS) override these without changing the saved default.
Get Dubbing
Get status of a dubbing job
| Parameter | Required | Type | Description |
|---|---|---|---|
Dubbing Id dubbing_id | Yes | text |
Tips
- Poll /v1/dubbing/{dubbing_id} every 30s. status: dubbing → dubbed → failed.
- On 'dubbed', call the separate GET /v1/dubbing/{dubbing_id}/audio/{language_code} to download the rendered audio per target language.
- error_message exposed on 'failed' – common: source_audio_quality_too_low, lipsync_failed, unsupported_source_language.
Get History Audio
Download the audio for a historical generation
| Parameter | Required | Type | Description |
|---|---|---|---|
History Item Id history_item_id | Yes | text |
Tips
- GET /v1/history/{history_item_id}/audio – re-downloads the rendered audio for a past generation, no re-billing.
- Available only if history retention window hasn't expired (30 days Free, indefinite on paid).
Get User
Get account info, subscription tier and character usage
No input parameters.
Tips
- GET /v1/user – character quota remaining, subscription tier, next_character_count_reset_unix, voice_limit. Useful as a health-check + cost-budget guard.
Get Voice
Get a single voice's details
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text |
Tips
- GET /v1/voices/{voice_id} – full metadata including category (premade|cloned|generated|professional), samples, settings, sharing options.
- Pass with_settings=true to include the active voice_settings object.
List History
List historical generations
No input parameters.
Tips
- Paginated. Default page_size=100, max 1000. last_history_item_id (cursor) for further pages.
- Filter by voice_id + start_after_history_item_id. source filter (TTS|STS) separates Speech-to-Speech from Text-to-Speech generations.
List Models
List available TTS models
No input parameters.
Tips
- Each model exposes: model_id, name, can_do_text_to_speech, can_do_voice_conversion, languages[], max_characters_request, token_cost_factor.
- Pick the model with the lowest token_cost_factor that supports your language + use case to minimise character billing.
List Voices
List voices available to your account
No input parameters.
Tips
- Returns all voices accessible to the workspace – premade + your clones. Filter client-side by category.
- Use this to populate dropdowns; voice_id is opaque and won't change for premade voices.
Speech to Speech
Convert source audio to target voice
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text | |
Audio audio | No | text | |
Model Id model_id | No | text | |
Voice Settings voice_settings | No | text |
Tips
- POST /v1/speech-to-speech/{voice_id} – upload source audio, get back the same speech in the target voice. Preserves emotion and timing better than transcribe→TTS.
Speech to Text
Transcribe audio to text
| Parameter | Required | Type | Description |
|---|---|---|---|
File file | No | text | |
Model Id model_id | No | text | |
Language Code language_code | No | text | |
Diarize diarize | No | text | |
Tag Audio Events tag_audio_events | No | text | |
Timestamps Granularity timestamps_granularity | No | text |
Tips
- POST /v1/speech-to-text – supports 99 languages. model_id=scribe_v1 is the production STT model.
Text to Speech
Synthesize speech from text for a given voice
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text | |
Text text | No | text | |
Model Id model_id | No | text | |
Voice Settings voice_settings | No | text | |
Language Code language_code | No | text | |
Pronunciation Dictionary Locators pronunciation_dictionary_locators | No | text |
Tips
- POST /v1/text-to-speech/{voice_id} – body is text + voice_settings (stability, similarity_boost, style, use_speaker_boost) + model_id.
- model_id defaults to eleven_multilingual_v2. Use eleven_turbo_v2_5 for ~3x lower latency at slightly lower fidelity.
- output_format=mp3_44100_128 is the default. Use pcm_44100 for downstream processing (no encode pass).
Text to Speech (Stream)
Synthesize speech and stream audio chunks
| Parameter | Required | Type | Description |
|---|---|---|---|
Voice Id voice_id | Yes | text | |
Text text | No | text | |
Model Id model_id | No | text | |
Voice Settings voice_settings | No | text |
Tips
- Same endpoint with /stream suffix – returns chunked audio. The connector reassembles to a single file.
- Use optimize_streaming_latency=3 for the lowest time-to-first-byte on Turbo.
FAQ
- Why is my voice clone sounding nothing like the source?
- Source audio quality dominates. Mono, 44.1kHz, no background music, single speaker, 30-180s of dry speech. Stereo or noisy source produces a voice that sounds like a different person.
- Streaming vs sync – when does it matter?
- Sync is fine for batches (podcasts, articles). Streaming matters when a human is waiting – voice agents, real-time captioning. Turbo + streaming + optimize_streaming_latency=3 gets you sub-500ms time-to-first-audio.
- How do I prevent voices from drifting between calls?
- Pin voice_settings.stability=0.5+, similarity_boost=0.75+, and use a deterministic seed (model-dependent). Drift on the same voice usually means voice_settings weren't sent – the API uses your default workspace settings when omitted.
- Can I get word-level timestamps back?
- Yes – use /v1/text-to-speech/{voice_id}/with-timestamps (separate variant). The connector exposes this; output includes a character→timing map for sync to video.