---
title: "Create Dubbing Language Target"
method: POST
path: "/v1/dubbing/project/{project_id}/language"
tags: ["Dubbing"]
---

# Create Dubbing Language Target

`POST /v1/dubbing/project/{project_id}/language`

Add a language to dub a project into, and queue the dub.

This is the call that produces dubbed audio, and it is billed per generation. The target is created `queued` and starts as soon as the project is `ready`, so it can be added at any point after the project is created. It inherits the project's dubbing model and cannot pick another.

A project created with `webhook_ids` sends a `dubbing_language_completed` event carrying the output download URLs, so we recommend subscribing rather than polling this target to completion.

## Path parameters

- `project_id` string, required — Identifier of the parent dubbing project.

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Request body

- BodyCreateDubbingLanguageTargetV1DubbingProjectProjectIdLanguagePost
  - `target_language` string, required — BCP-47 language tag to dub the project into (for example, `fr` or `es-MX`). Must be one of the [languages the project's 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.
  - `voice_settings` VoiceSettings
    - `cloning_strength` integer — How strongly the dubbed speakers clone the source voices, 0 to 10.
  - `translations` object, nullable — Enterprise only. Optional translations to use instead of machine translation. A map from each source segment's `external_id` (or its `id`, if you supplied none) to the translated text; every source segment must be covered exactly once. At most 20,000 entries, totaling at most 4 MiB of text. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript).

## Response `201`

Successful Response

- DubbingLanguageResponse
  - `language_id` string, required — Unique identifier of the language target.
  - `project_id` string, required — Identifier of the parent dubbing project.
  - `target_language` string, required — BCP-47 language tag this target is dubbed into.
  - `status` 'queued' | 'processing' | 'completed' | 'stale' | 'failed', required — Lifecycle status: `queued` (waiting on the project to be ready, or on a worker), `processing` while it is being dubbed, `completed` once its output is available, `stale` when the transcript changed after the output was produced, or `failed`.
  - `model_id` string, nullable — Dubbing model this target is dubbed with, inherited from the project and not selectable per language.
  - `voice_settings` VoiceSettings
    - `cloning_strength` integer — How strongly the dubbed speakers clone the source voices, 0 to 10.
  - `outputs` DubbingLanguageOutputs — Signed, time-limited download URLs for a language target's outputs.
    - `lossless_audio` string, nullable — Signed URL for the dubbed lossless audio track, in FLAC. The link expires one hour after it is issued; re-read the language target for a fresh one.
  - `revision` integer, required — Monotonic counter incremented whenever this target's transcript changes (a source edit affecting it, or an edit to its translation).
  - `output_revision` integer, nullable — The `revision` the current dubbed output was generated from; equal to `revision` when up to date, and lower when `stale`. This is null until a generation has completed.
  - `error` DubbingError
    - `code` string, required — Stable identifier for the failure, safe to branch on. New codes are added over time, so we recommend treating an unrecognized value as `internal_error`.
    - `message` string, required — Human-readable description of the failure, for display. The wording may change at any time, so we recommend branching on `code` instead.
    - `retryable` boolean, required — Whether resubmitting the same input could succeed. A value of false means the failure describes the input or the account, so an identical retry will fail the same way.
  - `warnings` VoicesNotPermittedWarning[] — Non-fatal conditions raised while dubbing this language, empty when there are none. Reflects the latest generation. Conditions raised while preparing the source are reported on the project instead.
    - `type` 'voices_not_permitted', required — Identifies this warning; branch on it to read the other fields.
    - `speaker_ids` string[], required — Speakers whose voices were not permitted for cloning. The dub used a replacement voice for each of them; all other speakers are unaffected.
    - `message` string, required — Human-readable description of the warning, for display. The wording may change at any time, so we recommend branching on `type` instead.
  - `created_at` string, date-time, required — When the language target was created.
  - `updated_at` string, date-time, required — When the language target was last updated.

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-06** `1cae8adcc965` — 2 info
  - added the optional property `error` to the response with the `201` status
  - added the optional property `warnings` to the response with the `201` status
- **2026-08-05** `ebff0190de5c` — 1 warning
  - removed the request property `model_id`
- **2026-07-31** `72c54eba117e` — 1 info
  - added the new optional request property `translations`

[Change history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/dubbing/project/:project_id/language/post.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/48a38e3b0dbd?raw)
