Create a dubbing project from an uploaded file (`file`) or a source URL (`source_url`).
Returns as soon as the project record exists, before the source has been fetched: the project starts `queued` and reaches `ready` once its source has been transcribed. Creating a project does not dub anything — add a language target to it for each language you want, or pass `target_language` to queue the first one here.
Preparation can take minutes on a long source, so we recommend passing `webhook_ids` to be notified when the project turns `ready` or `failed`, rather than polling for it.
Request
This endpoint expects a multipart form with multiple files.
filefileOptional
The source media file to dub: an audio or video file of at most 3 GiB. Provide this or source_url, not both.
source_urlstring or nullOptional
Public HTTP(S) URL the source media is fetched from server-side, subject to the same size and format limits as an upload. Provide this or file, not both.
referencestring or nullOptional
Optional free-form string (at most 500 characters) to identify the project on your end. Stored and echoed back verbatim; it does not affect the dub.
source_languagestring or nullOptional
BCP-47 language tag of the source media; must be a language the transcription model supports. Any region or script subtag is ignored, since transcription is per-language. Omit to auto-detect.
model_idenum or string or nullOptional
Dubbing model (dubbing_v1 or dubbing_v2) every language target of this project is dubbed with. Defaults to dubbing_v2. Fixed at create time — the source is prepared for this model, so neither the project nor an individual target can change it later.
keytermslist of stringsOptional
Key terms to bias transcription and translation toward (for example, product or brand names). At most 1,000 terms; each term at most 50 characters and 5 words; the characters <>{}[]\ are not allowed. Terms are trimmed and deduplicated.
webhook_idslist of stringsOptional
IDs of workspace webhooks to notify as this project progresses — the alternative to polling, and what we recommend. Each receives a `dubbing_project_ready` or `dubbing_project_failed` event for the project, and a `dubbing_language_completed` or `dubbing_language_failed` event for every language under it; `dubbing_language_completed` carries the output download URLs. At most 3 IDs, each already configured in your workspace — see [Webhooks](https://elevenlabs.io/docs/eleven-api/resources/webhooks) for how to create one and verify its signature. Delivery is best-effort and can repeat, so we recommend handling events idempotently.
target_languagestring or nullOptional
Optional shortcut: also create a language target in this BCP-47 language, queued to start once the project is ready — equivalent to creating the project and then creating one language target. Must be one of the [languages the dubbing model supports](https://elevenlabs.io/docs/help-center/product/dubbing/which-languages-are-supported-in-dubbing), and a region-qualified tag must be one of the supported dialects. Its ID is returned in `language_ids`.
transcriptfileOptional
Enterprise only. Optional JSON transcript to use instead of transcribing the source: a `{"segments": [...]}` document, at most 20,000 segments and 4 MiB. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript) for the segment fields and their constraints. `source_language` is required whenever a transcript is provided. If any segment carries a `translation`, `target_language` is required and every segment must carry one; those translations seed the target created via `target_language`, which then skips machine translation.
Response
Successful Response
project_idstring
Unique identifier of the dubbing project.
statusenum
Lifecycle status of the project: queued before the source is picked up, preparing while it is transcribed, ready once transcription is done and language targets can start, or failed. A project is never reported as processing — that value belongs to language targets.
revisioninteger
Monotonic counter incremented whenever the source transcript is edited (segment add/edit/delete).
created_atstringformat: "date-time"
When the project was created.
updated_atstringformat: "date-time"
When the project was last updated.
referencestring or nullOptional
The free-form string you supplied as reference when creating the project, or null if you supplied none.
source_languagestring or nullOptional
BCP-47 language tag of the source media (null if auto-detected).
model_idstring or nullOptional
Dubbing model every language target of this project is dubbed with. Fixed at create time and not selectable per language.
mediaobject or nullOptional
Source media metadata, populated once the source has been fetched and decoded (shortly after create, before the project is ready); null until then.
language_idslist of stringsOptionalDefaults to []
Identifiers of the language targets under this project. Populated when a single project is fetched, and on create when target_language creates one. Always empty in list responses — list the project’s language targets instead.
webhook_idslist of stringsOptionalDefaults to []
IDs of the workspace webhooks notified as this project and its languages reach ready, completed, or failed.
errorobject or nullOptional
Why the project failed; null unless status is failed. Also null for the few projects that failed before failure reporting was introduced.
warningslist of objectsOptional
Non-fatal conditions raised while preparing the source, empty when there are none. Reflects the latest preparation. Conditions raised while dubbing a particular language are reported on that language instead.