> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elanlanguages.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Video Jobs

> On this page, we'll dive into the video job endpoints for creating dubbing, subtitling, and voice-over jobs.

Video jobs allow you to localize videos into other languages using AI. You can create a full dubbing job, generate translated and time-aligned subtitles, or produce a voice-over mixed over the original audio track. Provide the source video as a direct URL or YouTube link, or upload a file via the [files](/files) endpoints and pass its S3 key. Each endpoint responds with a job object; use the [translation jobs](/translation) endpoints to track job status and retrieve results.

## Create a video dub job

**`POST /v1/jobs/video/dub`**

This endpoint allows you to create a full dubbing job, where the original voice is replaced via smart vocal removal. Provide the source video via either `source_video_url` or `source_file`.

### Required attributes

<ParamField body="source_lang" type="string" required>
  Source language code (e.g., "en").
</ParamField>

<ParamField body="target_lang" type="string" required>
  Target language code with locale (e.g., "fr-FR").
</ParamField>

### Optional attributes

<ParamField body="source_video_url" type="string">
  Direct URL or YouTube link to the source video.
</ParamField>

<ParamField body="source_file" type="string">
  S3 key (without org prefix) of a video previously uploaded via /files/upload. Mutually exclusive with `source_video_url`.
</ParamField>

<ParamField body="project_name" type="string">
  Display name for the Dubformer project.
</ParamField>

<ParamField body="glossaries" type="array">
  List of glossary IDs to use for terminology.
</ParamField>

<ParamField body="video" type="object">
  Dubformer-specific TTS / dubbing tuning. Object with `tts_volume` — the loudness of the synthesized voice track (defaults to Dubformer's "normal" when unset).
</ParamField>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.elanlanguages.ai/v1/jobs/video/dub \
    -H "Authorization: Bearer {token}" \
    -H "X-Org-Id: {orgId}" \
    -H "Content-Type: application/json" \
    -d '{
      "source_video_url": "https://www.youtube.com/watch?v=abc123xyz",
      "source_lang": "en",
      "target_lang": "fr-FR",
      "project_name": "Product launch video",
      "glossaries": [1]
    }'
  ```
</CodeGroup>

```json Response theme={null}
{
  "job_id": "job_dub_abc123def456",
  "status": "queued",
  "message": "Video dub job created successfully",
  "created_at": "2025-12-21T10:34:41.135Z"
}
```

***

## Create a video subtitle job

**`POST /v1/jobs/video/subtitle`**

This endpoint allows you to create a subtitling job that produces translated, time-aligned subtitles for a video. Provide the source video via either `source_video_url` or `source_file`.

### Required attributes

<ParamField body="source_lang" type="string" required>
  Source language code (e.g., "en").
</ParamField>

<ParamField body="target_lang" type="string" required>
  Target language code with locale (e.g., "fr-FR").
</ParamField>

### Optional attributes

<ParamField body="source_video_url" type="string">
  Direct URL or YouTube link to the source video.
</ParamField>

<ParamField body="source_file" type="string">
  S3 key (without org prefix) of a video previously uploaded via /files/upload. Mutually exclusive with `source_video_url`.
</ParamField>

<ParamField body="project_name" type="string">
  Display name for the Dubformer project.
</ParamField>

<ParamField body="glossaries" type="array">
  List of glossary IDs to use for terminology.
</ParamField>

<ParamField body="video" type="object">
  Dubformer-specific TTS / dubbing tuning. Object with `tts_volume` — the loudness of the synthesized voice track (defaults to Dubformer's "normal" when unset).
</ParamField>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.elanlanguages.ai/v1/jobs/video/subtitle \
    -H "Authorization: Bearer {token}" \
    -H "X-Org-Id: {orgId}" \
    -H "Content-Type: application/json" \
    -d '{
      "source_file": "videos/product-launch.mp4",
      "source_lang": "en",
      "target_lang": "de-DE",
      "project_name": "Product launch subtitles"
    }'
  ```
</CodeGroup>

```json Response theme={null}
{
  "job_id": "job_sub_abc123def456",
  "status": "queued",
  "message": "Video subtitle job created successfully",
  "created_at": "2025-12-21T10:34:41.135Z"
}
```

***

## Create a video voiceover job

**`POST /v1/jobs/video/voiceover`**

This endpoint allows you to create a voice-over job, where the translated voice is mixed over the original track. Provide the source video via either `source_video_url` or `source_file`.

### Required attributes

<ParamField body="source_lang" type="string" required>
  Source language code (e.g., "en").
</ParamField>

<ParamField body="target_lang" type="string" required>
  Target language code with locale (e.g., "fr-FR").
</ParamField>

### Optional attributes

<ParamField body="source_video_url" type="string">
  Direct URL or YouTube link to the source video.
</ParamField>

<ParamField body="source_file" type="string">
  S3 key (without org prefix) of a video previously uploaded via /files/upload. Mutually exclusive with `source_video_url`.
</ParamField>

<ParamField body="project_name" type="string">
  Display name for the Dubformer project.
</ParamField>

<ParamField body="glossaries" type="array">
  List of glossary IDs to use for terminology.
</ParamField>

<ParamField body="video" type="object">
  Dubformer-specific TTS / dubbing tuning. Object with `tts_volume` — the loudness of the synthesized voice track (defaults to Dubformer's "normal" when unset).
</ParamField>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.elanlanguages.ai/v1/jobs/video/voiceover \
    -H "Authorization: Bearer {token}" \
    -H "X-Org-Id: {orgId}" \
    -H "Content-Type: application/json" \
    -d '{
      "source_video_url": "https://www.youtube.com/watch?v=abc123xyz",
      "source_lang": "en",
      "target_lang": "fr-FR",
      "video": {
        "tts_volume": "normal"
      }
    }'
  ```
</CodeGroup>

```json Response theme={null}
{
  "job_id": "job_vo_abc123def456",
  "status": "queued",
  "message": "Video voiceover job created successfully",
  "created_at": "2025-12-21T10:34:41.135Z"
}
```
