Docs / Products

Dubbing

POST /v1/dub takes a video or audio file in one language and returns a dubbed Swahili track, with optional subtitles. Waridi Dub is built for filmmakers, broadcasters and digital platforms that want African audiences to hear content in their own language.

Dubbing runs as an asynchronous job. You create it, then poll it or wait for a webhook.

Preview. Dubbing is in closed preview. Source languages are English and Swahili. Targets are sw-TZ and sw-KE. Every job can be reviewed and edited in Waridi Studio before you export.

Create a dubbing job

from waridi import Waridi

client = Waridi()

job = client.dub.create(
    source_url="https://example.com/media/episode-03.mp4",
    source_language="en",
    target_language="sw-TZ",
    voices="auto",
    outputs=["audio", "video", "srt"],
    webhook_url="https://example.com/hooks/dub",
)
print(job.id, job.status)
import { Waridi } from "@waridi/sdk";

const client = new Waridi();

const job = await client.dub.create({
  sourceUrl: "https://example.com/media/episode-03.mp4",
  sourceLanguage: "en",
  targetLanguage: "sw-TZ",
  voices: "auto",
  outputs: ["audio", "video", "srt"],
  webhookUrl: "https://example.com/hooks/dub",
});
console.log(job.id, job.status);
curl https://api.waridi.io/v1/dub \
  -H "Authorization: Bearer $WARIDI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://example.com/media/episode-03.mp4",
    "source_language": "en",
    "target_language": "sw-TZ",
    "voices": "auto",
    "outputs": ["audio", "video", "srt"],
    "webhook_url": "https://example.com/hooks/dub"
  }'

Parameters

Field Type Required Description
source_url string yes HTTPS link to MP4, MOV, WAV or MP3. Up to 3 hours
source_language string yes en or sw
target_language string yes sw-TZ or sw-KE
voices string or object no auto picks preview voices per speaker. Or map speakers to voice IDs, for example {"spk_0": "baraka"}
glossary object no Fixed translations for names and terms, for example {"Board of Directors": "Bodi ya Wakurugenzi"}
outputs string[] no Any of audio, video, stems, srt, vtt. Default ["audio"]
webhook_url string no Receives dub.completed or dub.failed

To keep an actor's own voice in Swahili, clone it first with their verified consent (Voice cloning) and pass the cloned voice ID in voices.

Check status

curl https://api.waridi.io/v1/dub/dub_01J9ZF2W8P \
  -H "Authorization: Bearer $WARIDI_API_KEY"
{
  "id": "dub_01J9ZF2W8P",
  "object": "dub",
  "status": "completed",
  "source_language": "en",
  "target_language": "sw-TZ",
  "duration_ms": 1325000,
  "outputs": {
    "audio": "https://files.waridi.io/dub_01J9ZF2W8P/audio.wav",
    "video": "https://files.waridi.io/dub_01J9ZF2W8P/video.mp4",
    "srt": "https://files.waridi.io/dub_01J9ZF2W8P/subtitles.srt"
  },
  "expires_at": "2026-10-21T08:00:00Z"
}
Status Meaning
queued Waiting to start
transcribing Separating speech from music and effects, then transcribing
translating Translating and adapting lines to fit timing
voicing Generating Swahili speech
completed Output links are ready. They expire after 7 days
failed See error.code and error.message

Notes on quality

Translation for dubbing is adaptation, not word-for-word. Lines are shortened or reworded so they fit the speaker's timing and sound like everyday Swahili. For broadcast work we recommend a Swahili-speaking editor reviews each episode in Studio before export.