Skip to main content
POST
End To End Dubbing
Transform your media content for global audiences with our comprehensive dubbing solution. This powerful endpoint automates the entire dubbing process, taking your original media and producing a version that speaks naturally in your target language. The system handles everything from transcription to voice synthesis, delivering professional-quality results without requiring specialized audio engineering knowledge.

The Dubbing Process

When you submit a dubbing request, our system begins a multi-stage workflow:
1

Project Setup

Our intelligent system works its magic behind the scenes to prepare your content for flawless localization.
2

Translation

The transcribed text is expertly translated to your target language using our proprietary translation engine BOLI.
3

Voiceover Generation

Voiceovers are created using natural-sounding synthetic voices using our in-house novel speech model MARS.
4

Final Assembly

Everything is combined into a seamless final product.
Throughout this process, you can check on your task’s progress using the /dub/{task_id} endpoint with the task_id provided in your initial response.

Compatible Media Sources

Our dubbing service accommodates various media sources to fit your workflow needs. The video_url parameter in your request can point to any of the following:

Online Platforms

Use content directly from popular content platforms:
  • YouTube videos: Simply provide the standard YouTube video URL.
  • Google Drive: Link to media files stored in Google Drive (ensure they’re publicly accessible).
  • Direct URLs: Any direct link to a media file that doesn’t require authentication.

Supported File Formats

Our system processes a wide range of professional and consumer media formats: This flexibility allows you to work with both broadcast-quality content and consumer-grade media without conversion hassles.
Please note that MXF format support is exclusively available to customers on our Enterprise plan, offering professional broadcast-quality media handling for organizations with advanced needs.

Language Configuration

Specifying the right languages is crucial for successful dubbing. Your request needs to include:
  • Source Language: The original language spoken in your media.
  • Target Language(s): The language(s) you want your content to be dubbed into.
Both parameters require specific language identifiers from our system. To find the correct IDs:
  1. Query the /source-languages endpoint for available source language options.
  2. Check the /target-languages endpoint for supported target languages.
Using these official IDs ensures our system correctly processes your content.

Transcription Mode

The optional transcription_mode request field controls the transcription pass used before dubbing:
  • fast (default): returns a transcript more quickly while maintaining quality.
  • slow: takes longer and may produce a more accurate transcript through a more thorough pass.
Omit the field to use fast.

Keeping Music in the Foreground

The optional include_music_in_fg parameter controls how background music is handled during source separation:
  • true (default): music is preserved in the foreground audio alongside speech.
  • false: music is stripped out of the foreground, isolating speech.
Omit the parameter to keep the default behaviour of retaining music.

Creating Your First Dubbing request

Let’s look at how to initiate a dubbing task with Python:

Monitoring Your Dubbing Progress

After submission, your content enters our processing pipeline. The time required depends on the length and complexity of your media. You can check progress by polling the status endpoint:

Use Your Own Transcript or Translation

You can include SRT file contents directly in the JSON body of POST /dub:
  • source_transcript: an optional transcript in source_language.
  • target_transcripts: optional translations, each with a language matching one of your requested target languages. Supply at most one SRT per language.
Each script takes content containing the SRT text and an optional format, whose only supported value is srt. Read the file as UTF-8; do not send a filename, URL, base64 string, multipart upload, or an array of segments.
This example supplies the original transcript and Spanish translation; French is translated automatically. You can also send only source_transcript, only target_transcripts, or neither. If you have the original transcript, include it alongside your translations to provide source-language context. Requests without these fields retain the existing automatic workflow. The task ID, polling, and result endpoints are unchanged. The API stores supplied scripts as temporary .srt objects under temp/ in your workspace’s configured storage before passing them to the dubbing pipeline. An SRT content string looks like this in JSON:

Validation and limits

  • Maximum 2 MiB of UTF-8 text per script; 10 MiB combined across the original and translations, with at most 100 target scripts.
  • Scripts must contain at least one cue parseable by the srt library. Standard SRT uses HH:MM:SS,mmm --> HH:MM:SS,mmm and blank lines between cues. Parsing uses the srt library with parse errors enabled; its supported variations, including dot-separated milliseconds, are also accepted.
  • Overlapping and out-of-order cues are accepted. No additional cue-count, numbering, timing, control-character, or dialogue-content checks are imposed beyond the parser. UTF-8 BOM and Windows/Mac line endings are normalized.
  • Target scripts must use supported languages selected in target_languages (or the legacy target_language). Language aliases are normalized before checking for duplicates. Unknown properties inside a script are rejected.
Invalid scripts return HTTP 422 before script storage or dubbing submission. Errors identify the input field. Unparseable SRT returns SRT content could not be parsed; check cue numbers and timestamps. Use timestamps relative to the original media and scripts that match that media. Request validation checks SRT structure; it does not download the media to check its duration or verify the language of your text. Supplied scripts use the existing dubbing pipeline’s timing and speech processing; this option does not introduce an exact-wording or exact-timing output mode.

Best Practices for Optimal Results

To get the most from our dubbing service, consider these professional tips:
  1. Source Quality Matters: Higher quality original media yields better dubbing results.
  2. Language Selection: Choose the right language for your audience to ensure clarity and authenticity.

Practical Applications

Our end-to-end dubbing functionality opens exciting possibilities across industries:
  • E-Learning: Make educational content accessible to global learners.
  • Marketing: Localize promotional videos for international markets.
  • Entertainment: Bring films and shows to new language audiences.
  • Corporate Communications: Ensure company messages reach multilingual teams.
  • Social Media: Expand your content’s reach across language barriers.
By integrating this API into your workflow, you can dramatically reduce the time and expense traditionally associated with professional dubbing while maintaining impressive quality.

Authorizations

x-api-key
string
header
required

The x-api-key is a custom header required for authenticating requests to our API. Include this header in your request with the appropriate API key value to securely access our endpoints. You can find your API key(s) in the 'API' section of our studio website.

Body

application/json
source_language
string
required

The language of the input text. Pass a locale tag (en-us, fr-fr, es-es). Numeric language IDs (1 or "1") still work but are deprecated. See all source languages.

Example:

"en-us"

source_transcript
object | null

Optional original-language SRT contents. Send the file text in JSON, not a file path or URL.

target_transcripts
object[] | null

Optional translated SRTs, one per requested target language. Languages must be unique after normalization. Source and target SRT contents must not exceed 10 MiB UTF-8 combined.

Maximum array length: 100
video_url
string | null

The URL of the media file to be used to create the end-to-end dubbing task.

Example:

null

target_languages
string[]

Languages to generate output in. Pass locale tags (es-es, fr-fr, de-de). Numeric language IDs still work but are deprecated. See all target languages.

Example:
project_name
string | null

Enter a distinctive name for your project that reflects its purpose or content. This name will be displayed in your CAMB.AI workspace dashboard and used to organize related assets, transcriptions, etc.. . Choose something memorable that helps you quickly identify this specific project among your other voice, audio and localization tasks.

Required string length: 3 - 255
Example:

null

project_description
string | null

Provide details about your project's goals and specifications. Include information such as the target languages for translation or dubbing, desired voice characteristics, emotional tones to capture, or specific audio processing requirements, outlining the workflow here can serve as valuable documentation for organizational purposes.

Required string length: 3 - 5000
Example:

null

selected_audio_tracks
integer[] | null

Optional array of one or two zero‑based audio track indices to dub. Only supported for MXF files. If omitted, the first audio track (index 0) is used by default.

Required array length: 1 - 2 elements
add_output_as_an_audio_track
boolean | null

Optional flag to append the dubbed audio as a new audio track in the output file. Only supported for MXF files. If true, the dubbed audio is added as an additional track; if false or omitted, the source would be returned with only dubbed audio.

chosen_dictionaries
integer[] | null

An optional list of dictionary IDs selected by the user. Each entry must be an integer corresponding to a valid dictionary ID. If provided, at least one ID is required.

Minimum array length: 1
target_language
string

The target output language. Pass a locale tag (fr-fr, es-es, de-de). Numeric language IDs still work but are deprecated. See all target languages.

Example:

"fr-fr"

transcription_mode
enum<string>
default:fast

Transcription mode. fast (default) is quicker; slow takes longer and may produce a more accurate transcript.

Available options:
fast,
slow
include_music_in_fg
boolean
default:true

Keep music in the foreground audio during source separation. When true (default), background music is preserved alongside speech; set to false to strip music out of the foreground.

Example:

true

Response

Successful Response

A JSON that contains the unique identifier for the task. This is used to query the status of the end to end dubbing task that is running. It is returned when a create request is made for a dub

task_id
string
Last modified on September 11, 2026