ElevenLabs Dubbing API: AI Video Translation Guide
Learn how to use the ElevenLabs Dubbing API through SandBase to automatically translate and re-voice video and audio content into 29+ languages.
ElevenLabs Dubbing API: AI Video Translation Guide
You have a great video — but it only speaks one language. Your audience doesn’t. That’s where AI dubbing comes in. ElevenLabs’ Dubbing API translates spoken content and re-voices it with natural-sounding speech in the target language, preserving tone, timing, and emotion. Through SandBase, you can access this capability with a single unified API call.
This tutorial walks you through the complete process: from submitting a video URL to receiving a fully dubbed version in another language.
What Is AI Dubbing?
AI dubbing is the process of automatically translating spoken audio and regenerating it in a different language using AI voices. Unlike simple text-to-speech overlays or subtitle generation, modern AI dubbing performs a multi-step pipeline that produces broadcast-quality results:
- Transcribes the original audio using speech recognition
- Translates the transcript into the target language with context-aware machine translation
- Re-voices the content with natural speech that matches the original speaker’s tone, pitch, and emotion
- Synchronizes lip-sync timing with the original video to maintain visual coherence
- Mixes the new voice track with preserved background audio, music, and sound effects
ElevenLabs is one of the leading providers in this space, supporting 29+ languages with high-quality voice synthesis. Their models are trained to handle diverse accents, speaking speeds, and emotional registers, producing dubbed audio that sounds remarkably close to a professional human dubbing studio.

Why Use SandBase for ElevenLabs Dubbing?
SandBase provides a unified API gateway that simplifies access to AI models across providers. Instead of managing ElevenLabs API keys, handling their specific authentication flow, and dealing with provider-specific request formats, you get:
- One API key for all models (ElevenLabs, OpenAI, Runway, and more)
- Consistent request format across different AI services
- Built-in rate limiting and error handling
- Usage tracking and billing in one place
- Easy integration into AI agent workflows and automation pipelines
The model identifier for ElevenLabs dubbing on SandBase is elevenlabs/dubbing.
Prerequisites
Before you start, you’ll need:
- A SandBase account — sign up at sandbase.ai
- Your SandBase API key (found in your dashboard)
- A video or audio file URL to dub (publicly accessible)
How the Dubbing Process Works
The dubbing workflow follows these steps:
- Submit a video/audio URL with source and target language
- Wait for processing (transcription → translation → voice synthesis → mixing)
- Retrieve the dubbed output file
Processing time depends on the length of the content. A 5-minute video typically takes 2-4 minutes to process.
Quick Start: Your First Dubbed Video
Using curl
Here’s the simplest way to submit a dubbing job:
curl -X POST https://api.sandbase.ai/v1/dubbing \
-H "Authorization: Bearer YOUR_SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "elevenlabs/dubbing",
"source_url": "https://example.com/my-video.mp4",
"source_language": "en",
"target_language": "es",
"options": {
"preserve_background_audio": true,
"speaker_count": 1
}
}'
Response:
{
"id": "dub_abc123xyz",
"status": "processing",
"estimated_duration_seconds": 180,
"created_at": "2026-08-13T01:24:00Z"
}
Check Job Status
Poll the status endpoint until processing completes:
curl https://api.sandbase.ai/v1/dubbing/dub_abc123xyz \
-H "Authorization: Bearer YOUR_SANDBASE_API_KEY"
When complete:
{
"id": "dub_abc123xyz",
"status": "completed",
"output_url": "https://cdn.sandbase.ai/output/dub_abc123xyz.mp4",
"duration_seconds": 312,
"source_language": "en",
"target_language": "es",
"created_at": "2026-08-13T01:24:00Z",
"completed_at": "2026-08-13T01:27:42Z"
}
Using Python
Here’s a complete Python script that submits a dubbing job and waits for the result:
import requests
import time
SANDBASE_API_KEY = "your_sandbase_api_key"
BASE_URL = "https://api.sandbase.ai/v1"
headers = {
"Authorization": f"Bearer {SANDBASE_API_KEY}",
"Content-Type": "application/json"
}
def dub_video(source_url: str, source_lang: str, target_lang: str) -> dict:
"""Submit a video for dubbing and wait for the result."""
# Step 1: Submit the dubbing job
payload = {
"model": "elevenlabs/dubbing",
"source_url": source_url,
"source_language": source_lang,
"target_language": target_lang,
"options": {
"preserve_background_audio": True,
"speaker_count": "auto"
}
}
response = requests.post(
f"{BASE_URL}/dubbing",
headers=headers,
json=payload
)
response.raise_for_status()
job = response.json()
print(f"Job submitted: {job['id']}")
print(f"Estimated wait: {job['estimated_duration_seconds']}s")
# Step 2: Poll for completion
while True:
status_response = requests.get(
f"{BASE_URL}/dubbing/{job['id']}",
headers=headers
)
status_response.raise_for_status()
result = status_response.json()
if result["status"] == "completed":
print(f"Done! Output: {result['output_url']}")
return result
elif result["status"] == "failed":
raise Exception(f"Dubbing failed: {result.get('error', 'Unknown error')}")
print(f"Status: {result['status']}... waiting")
time.sleep(10)
# Example usage
result = dub_video(
source_url="https://example.com/marketing-video.mp4",
source_lang="en",
target_lang="ja"
)
print(f"Dubbed video URL: {result['output_url']}")

Supported Languages
ElevenLabs dubbing supports 29+ languages including:
| Language | Code | Language | Code |
|---|---|---|---|
| English | en | Spanish | es |
| French | fr | German | de |
| Italian | it | Portuguese | pt |
| Japanese | ja | Korean | ko |
| Chinese (Mandarin) | zh | Hindi | hi |
| Arabic | ar | Dutch | nl |
| Polish | pl | Turkish | tr |
| Swedish | sv | Indonesian | id |
Additional languages include Russian, Thai, Vietnamese, Czech, Danish, Finnish, Greek, Hungarian, Norwegian, Romanian, and Ukrainian.
Advanced Options
Multi-Speaker Detection
For videos with multiple speakers, enable automatic speaker detection:
payload = {
"model": "elevenlabs/dubbing",
"source_url": "https://example.com/interview.mp4",
"source_language": "en",
"target_language": "fr",
"options": {
"speaker_count": "auto",
"preserve_background_audio": True,
"preserve_music": True
}
}
Dubbing Audio-Only Content
The API works with audio files too — perfect for podcast translation:
curl -X POST https://api.sandbase.ai/v1/dubbing \
-H "Authorization: Bearer YOUR_SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "elevenlabs/dubbing",
"source_url": "https://example.com/podcast-episode.mp3",
"source_language": "en",
"target_language": "de",
"options": {
"output_format": "mp3",
"speaker_count": 2
}
}'
Batch Dubbing Multiple Videos
For content pipelines that need to localize many videos at once:
import concurrent.futures
videos = [
{"url": "https://example.com/video1.mp4", "target": "es"},
{"url": "https://example.com/video2.mp4", "target": "fr"},
{"url": "https://example.com/video3.mp4", "target": "ja"},
]
def submit_job(video):
payload = {
"model": "elevenlabs/dubbing",
"source_url": video["url"],
"source_language": "en",
"target_language": video["target"],
"options": {"preserve_background_audio": True}
}
response = requests.post(
f"{BASE_URL}/dubbing",
headers=headers,
json=payload
)
return response.json()
# Submit all jobs in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
jobs = list(executor.map(submit_job, videos))
print(f"Submitted {len(jobs)} dubbing jobs")
Real-World Use Cases
YouTube Video Localization
Expand your YouTube channel’s reach by dubbing videos into the top languages for your audience. The workflow is straightforward: submit the video URL, get dubbed versions, and upload them as alternate audio tracks or publish to localized channels. Many creators are seeing 30-50% audience growth by making their content accessible in Spanish, Portuguese, Hindi, and Japanese — the fastest-growing YouTube markets in 2026.
Online Course Translation
Make educational content accessible worldwide. Dub entire course modules into multiple languages while preserving the instructor’s teaching style and tone. Platforms like Udemy and Coursera have shown that localized courses see significantly higher enrollment rates in non-English markets. With API-driven dubbing, you can maintain a single source of truth and regenerate translations whenever the course content updates.
Marketing Video Adaptation
Launch campaigns simultaneously in multiple markets. A single English marketing video can become a Spanish, French, Japanese, and German version — all within minutes.
Podcast Translation
Bring your podcast to international listeners. The API preserves conversational dynamics between multiple speakers while translating into the target language.
Building a Full Content Pipeline
The real power emerges when you combine dubbing with other AI APIs available through SandBase. Here’s a content pipeline that generates and localizes video:
- Generate video using AI video generation APIs — create the source content
- Add voiceover using text-to-speech — narrate your generated video
- Dub into target languages using ElevenLabs dubbing — localize for global distribution
This approach lets you go from a text script to a fully localized video in multiple languages, all through API calls. Check out our comparison of text-to-video vs image-to-video approaches to choose the right generation method for your content.

Tips for Best Results
- Use high-quality source audio — clear speech without heavy background noise produces better dubs
- Specify speaker count when you know it — helps the AI separate and match voices accurately
- Keep segments under 30 minutes — split longer content for faster processing and better quality
- Preserve background audio — enable this option to keep music and sound effects from the original
- Test with short clips first — validate quality before processing full-length content
Error Handling
Always handle potential errors in production code:
try:
result = dub_video(source_url, "en", "es")
except requests.exceptions.HTTPError as e:
if e.response.status_code == 429:
print("Rate limited — retry after delay")
elif e.response.status_code == 400:
print(f"Invalid request: {e.response.json()}")
else:
print(f"API error: {e}")
except Exception as e:
print(f"Dubbing failed: {e}")
Pricing Considerations
ElevenLabs dubbing through SandBase is billed per minute of source audio processed. Check the SandBase pricing page for current rates. Batch processing and longer content generally offer better value per minute than short clips.
Conclusion
AI dubbing removes the cost and time barrier to content localization. What once required hiring voice actors, translators, and sound engineers for each language — often costing thousands of dollars and taking weeks per video — can now be accomplished with a single API call in minutes. Through SandBase, you get access to ElevenLabs’ dubbing technology alongside hundreds of other AI models, all under one API key and billing system.
The integration possibilities are vast. Combine dubbing with automated video generation, transcription services, and content management systems to build fully automated localization pipelines. Whether you’re a solo content creator looking to reach international audiences or an enterprise team managing thousands of videos across dozens of markets, the same API scales to meet your needs.
Start with a single video, pick a target language, and see the results for yourself. The quality of AI dubbing in 2026 is remarkably natural, and the workflow couldn’t be simpler.
Ready to start dubbing? Sign up for SandBase and get API access to ElevenLabs dubbing and 200+ other AI models.


