translate and dub a video
dubbing_createTranslate a saved video's speech into another language and lip-sync the result to the dubbed audio, producing a finished dubbed video as a paid generation.
Instructions
Translate a saved video's speech into another language and lip-sync it to the dubbed audio, as one paid sync. generation that covers both dubbing and the final render. Use it for a finished dubbed video. Not for subtitles only or translating a text document; to lip-sync audio you already have, use lipsync_create. To review translated audio first, translation-previews_create (offered only when dubbing_get-options reports previewAvailable) translates a saved AUDIO asset, not a video.
For social video URLs, import through assets_create and wait for the saved asset before estimating or calling this tool. This is a paid action: confirm the requested language, configuration and estimated cost with the user before calling. Use generations_estimate-cost with workflow=translate-and-dub when that input is supported, and disclose any excluded external provider charges. Without the combined breakdown, lip-sync pricing is not the full workflow cost. Omit projectId to start a NEW project (fresh projectCreationKey); pass projectId with projectIntent=explicit only for a project the user selected or one just created for this request, never because a name matches or an editor is open.
Returns the generation (id, status, projectId); poll that id with generations_get, or jobs_wait (kind generation) when available, until COMPLETED, then read outputMediaUrl. After an uncertain response, retry only with the same idempotencyKey, projectCreationKey and inputs; never create another job to finish or recover it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Lip-sync model name from models_list (for example sync-3), used for the final render. Any generations_estimate-cost quote for this dub must use the same model. | |
| options | No | Optional model controls. Omit any field to use its default. | |
| projectId | No | Project ID only when explicitly selected by the user, or just created for this request; requires projectIntent=explicit. Cannot be combined with projectName or projectCreationKey. Otherwise omit it to create a new project. Keep unchanged on retries. | |
| sourceLang | Yes | Spoken language of the source video, from dubbing_get-options sourceLanguages. Defaults to auto, which detects it; set a code only when the user names the source language. | auto |
| targetLang | Yes | Language code to dub into, for example es or pt-BR; the same list dubbing_get-options returns as targetLanguages. | |
| projectName | No | Name for the NEW project created when projectId is omitted; defaults to "Translate and Dub". Cannot be combined with projectId. A matching existing name is never reused. | |
| continuation | No | Only when the user explicitly continues an existing generation in this project: the parent generation (from generations_get-continuation) and its workflow, which must be translate_and_dub. Requires projectId. | |
| videoAssetId | Yes | Existing Sync VIDEO asset in the connected organization. For a social link, first create a NEW project unless the user explicitly chose an existing one. Import via assets_create with type=VIDEO and that projectId, wait for its saved asset id, then pass the same projectId with projectIntent=explicit. | |
| projectIntent | No | Required with projectId. Set only for an explicit user project selection/update, or the new project just created for this request. Never infer intent from a matching project name, workflow name or active editor. | |
| idempotencyKey | Yes | Persist one unique key per approved generation before calling. Retry an uncertain request with this exact key, the same projectCreationKey and unchanged inputs; never automatically create a new key. | |
| organizationId | No | Run only this call in another of the user’s Sync organizations, by id from organizations_list, when the user asks for it (for example “generate this in the Acme org”). The session keeps its organization; reads of the ids this call returns stay in this organization. Omit to use the session’s organization. | |
| projectCreationKey | No | Fresh random UUID identifying this NEW project creation, not a project ID. Required for keyed generation without projectId. Persist this key, name and generation key on retries; the server derives a separate project UUID. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||