Introduction
The Universal Translator allows for caption translations and dubbing in approximately 30 different languages. It can be accessed through three main entry points in the VideoCloud UI, enabling customers to select which languages they would like their captions or audio tracks translated to.
Interacting with the Universal Translator during Ingestion
To select the target languages for captions translation and dubbing in the ingestion process, follow the next steps:
- Navigate to the Upload Module
-
Choose the target languages for both translated captions and dubbing.
-
(Optional) You can enable the review checkbox to pause dubbing until after you review your translated captions.
- Complete the upload. Auto-captions are generated, and then translated into the languages you selected.
- If review is enabled, confirm caption quality either in the VideoCloud Captions Editor or by downloading, editing, and re-uploading caption tracks.
- After review, explicitly trigger dubbing. Brightcove generates dubbed audio tracks for all selected languages once the prerequisites are satisfied.
Editing a text track
You may want to edit a text track to review automatically generated content before creating a new audio track. To do this, follow the next steps:
- Select your video and navigate to the Languages section.
- Click ... on your desired language and select Edit track.
- Add your changes and click
Using Video Details
In the Languages section of the Video Details page, you can manage captions and dubbing for each video. This includes adding new caption tracks, triggering dubbing, and retriggering dubbing after making edits.
- Navigate to the Video Details page and locate the Languages section of your video.
-
Click Add to add text and audio tracks in one or more target languages.
-
To create an additional audio track in another language, click Generate audio on the desired language or click the
option next to Audio Tracks and select Translate audio.
- If you edit captions later, you can retrigger dubbing. Retriggering overwrites the existing dubbed audio tracks with new ones based on the updated captions.
Adding new languages in bulk
Use the Media module to add captions and generate translations for multiple videos at once. Follow the next steps:
- In the Media module, select the videos you want to update.
- Click ... and choose Captions & Translations.
- Set your preferences and click
- After processing is complete, review the generated tracks and publish as needed.
Admin Module Settings
Upload Settings
You can set your default preferences for the universal translator following the next process:
- Navigate to the Admin menu.
- Select Upload Settings and scroll down to the Captions translations section.
- Add the default caption and audio translation languages by clicking
in each section.
- Enter your Languages and Click
- Click
Captions and Translations
In the Captions and Translations section, you can set the default status of your captions and translations after generating them at upload or directly from the Media module.
To do this, follow the next process:
- Navigate to the Admin menu.
- Select Captions and Translations and scroll down to the Default Publish Status section.
- Select your default Autocaptions and caption translation statuses.
Creating Language Groups
With language groups, you can organize sets of languages into reusable groups for captions and audio translations.
- Click
- Enter your information and click
Ingestion Configurations API
Manage UI-only ingestion preferences for captions and translations. These settings prefill fields in Video Cloud UI only; API clients can still send any values they need.
Endpoint
GET, PUT https://ingest.api.brightcove.com/v1/accounts/{account_id}/ingestion-configurations
Auth scopes: Same scopes used by the Dictionary feature’s GET/PUT endpoints.
GET response object
Key | Type | Description | Example |
---|---|---|---|
languageGroups |
object<string, string[]> | Map of group name → list of caption translation language codes. Shown in UI dropdowns. | {"Europe":["fr-FR","de-DE","es-ES"]} |
publishByDefault |
object | Initial publish state for auto-generated tracks. Allowed keys: autoCaptions , captionTranslations (true=published, false=draft). |
{"autoCaptions":true,"captionTranslations":false} |
autoCaptionsLanguage |
string | Language code (BCP-47, e.g., en-US ), or auto (detect), or off (disabled). |
"en-US" |
autoCaptionsLabel |
string | Label shown for the auto-captions language. | "English (Auto)" |
useDictionary |
boolean | Use the auto-captions dictionary to improve accuracy. | true |
captionsTranslations |
object<string, string> | Map of language code → label for caption translations. | {"en-US":"English","es-ES":"Spanish"} |
lockCaptionTranslations |
boolean | If true, UI cannot change default caption translation languages. | false |
audioTranslations |
string[] | List of supported audio translation languages (UI prefill only). | ["en-US","es-ES"] |
lockAudioTranslations |
boolean | If true, UI cannot change default audio translation languages. | false |
PUT updates (partial)
Send only fields to change; unspecified fields remain untouched.
PUT /v1/accounts/{account_id}/ingestion-configurations
{
"languageGroups": { "Europe": ["fr-FR","de-DE","es-ES"] }
}
Ingest Endpoint Update
/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
— within transcriptions
, you can specify
translation_languages
(array of objects with srclang
(BCP-47, required), and optional label
, status
(draft
|published
), dubbing
).
If dubbing
is true, audio is generated as well.
{
"transcriptions": [{
"srclang": "en-US",
"label": "English",
"status": "published",
"translation_languages": [
{ "srclang": "es-ES", "label": "Spanish", "status": "draft", "dubbing": true },
{ "srclang": "fr-FR", "label": "French", "status": "draft" }
]
}]
}
AI Translation Endpoints
Create a translation job
POST /v1/accounts/{account_id}/videos/{video_id}/ai/translation
Body includes target_languages
: array of objects with srclang
(BCP-47, required), optional label
, optional status
(draft
|published
), and optional dubbing
(boolean).
{
"target_languages": [
{ "srclang": "es-ES", "label": "Spanish", "status": "draft", "dubbing": true },
{ "srclang": "de-DE", "label": "German", "status": "draft" }
]
}
List translation jobs
GET /v1/accounts/{account_id}/videos/{video_id}/ai/translation/jobs
Returns an object with a jobs
array. input
is the original request serialized as an escaped JSON string; error
is omitted unless present.
{
"jobs": [
{
"job_id": "job_123",
"status": "processing",
"creation_date": "2025-08-20T14:03:22Z",
"input": "{\"target_languages\":[{\"srclang\":\"es-ES\",\"dubbing\":true}]}"
}
]
}
FAQs
- Processing Time: Can take several minutes. When ready, captions and audio tracks will appear in the video details page.
- Credit Consumption: Based on minutes of video processed. Contact your account team for more details.