DittoDub logo

Add video dubbing to your product.

Create a project from YouTube or a local upload. Track each target language and download its audio, captions, metadata, and thumbnail.

Idempotent requestsResumable uploadsPer-language status

Create a project

One request creates the project and queues every target language.

curl https://api.dittodub.com/v1/dubbing/projects \
  --request POST \
  --header "Authorization: Bearer $DITTODUB_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: launch-video-1042" \
  --data '{
    "name": "Launch video",
    "source_locale": "en_us",
    "target_locales": ["es_mx", "pt_br", "fr_fr"],
    "max_billable_seconds": 1800,
    "source": {
      "type": "youtube",
      "url": "https://www.youtube.com/watch?v=VIDEO_ID"
    }
  }'

Dubbing API

Manage each project through the API.

Search connected YouTube channels and existing projects. Check credits, create or add languages, then poll the project for completed files.

Open the API reference
GET/v1/dubbing/locales
List supported locales

Use the exact language and dialect identifiers returned by this endpoint.

POST/v1/dubbing/projects
Create a project

Create one YouTube or upload project. Reusing the same idempotency key does not create a duplicate.

GET/v1/dubbing/youtube/videos
Find YouTube videos

Search connected channels and reuse a matching DittoDub project.

GET/v1/usage
Get workspace usage

Read total, reserved, and available credits before a paid request.

GET/v1/dubbing/projects/{id}
Get a project

Read usage, project status, progress for each language, and completed files.

GET/v1/dubbing/projects
List projects

Search and paginate the projects in a workspace.

POST/v1/dubbing/projects/{id}/languages
Add project languages

Get an exact quote, then add languages after confirmation.

POST/v1/dubbing/projects/{id}/transcript-review
Request transcript review

Get an exact quote, then send the English source transcript to Ditto Verified.

Create a YouTube project

Creates one project for the requested languages. The idempotency key prevents duplicates.

curl https://api.dittodub.com/v1/dubbing/projects \
  --request POST \
  --header "Authorization: Bearer $DITTODUB_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: launch-video-1042" \
  --data '{
    "name": "Launch video",
    "source_locale": "en_us",
    "target_locales": ["es_mx", "pt_br", "fr_fr"],
    "max_billable_seconds": 1800,
    "source": {
      "type": "youtube",
      "url": "https://www.youtube.com/watch?v=VIDEO_ID"
    }
  }'

How projects run

One project keeps every language together.

The project stores the source, target languages, usage, status, and completed files.

1

Add the source

Use a YouTube URL or upload a local video. Uploads resume after a dropped connection.

2

Choose languages

Choose the target languages and dialects.

3

Track each language

DittoDub validates the source, then translates and dubs each target language.

4

Download the files

Download dubbed audio, captions, translated metadata, and thumbnails.

Project files

Download each completed language.

A language exposes its files as soon as its status changes to completed.

Dubbed audio

MP3 and WAV

Captions

SRT and VTT

Localized copy

Title and description

Thumbnail

PNG

Looking for MCP?

Connect DittoDub to Codex, Claude, or another AI app.

Works with Codex, Claude, Grok, Cursor, DeepSeek, Kimi, Gemini, Mistral, and Qwen.

See MCP
Each service key belongs to one DittoDub workspace. You choose read-only access or access that can create projects. Keep the key on your server and send it as a bearer token.

Start your first API project.

Create a service key, choose its permissions, and send a YouTube URL or local upload.