Translation

Translate a video (dubbing + lip-sync)

Translates the speech of a video into one or more languages in the speaker's own (cloned) voice. precision lip-sync (the default, the best) or speed, or lipsync: false for dubbing only (the picture untouched). Each language becomes its own version with its own mp4 and SRT on our storage (kept 24 hours). Asynchronous: wait with x-wait-ms or poll GET /v1/executions/{id}. Needs your rights / consent declaration (consent). The result can go straight into /v1/studio/edit for captions, music and hooks.

Billing: Per second of the source video, per language, by mode: precision (the default), speed with lip-sync, speed audio-only (no lip-sync). A language that fails is not charged. · Rate limit: 10/min · Asynchronous

post/v1/video/translate

Request

  • Base URL: https://apihub.co.il
  • URL: https://apihub.co.il/v1/video/translate
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Replay-safe: the same execution is returned instead of charging twice

X-Tagstring

Group calls into one job (e.g. one video) — see GET /v1/usage?tag=…

x-wait-msinteger

Wait for the job inside this call (ms)

Request body

mode'speed' | 'precision'

precision (the default) = the best lip-sync, frame-accurate · speed = faster and cheaper, rougher lips. Dubbing without lip-sync (lipsync: false) runs on the speed path on its own

titlestring

Your name for this job (shown in your library)

reviewboolean

Check every translation before it is delivered (free, adds about a minute): a model that speaks both languages watches the original and the result and reports wrong meaning, a punchline that no longer works, wrong names or numbers, unnatural wording, mispronounced words and a robotic voice — each with its time and a fix — plus a corrected script for a new take. Result: versions[].review

lipsyncboolean

false = dubbing only: the speech is translated and re-voiced, the picture is left as it is (cheapest)

speakersinteger

How many people speak (improves separating them)

video_urlstring uri required

The video to translate (mp4 / webm, public https link — upload it first if needed)

consent_idstring

A consent you recorded before (the dashboard records one when you tick the box)

keep_formatboolean

Keep the source's resolution and bitrate

remove_musicboolean

Remove the background music from the result

enhance_speechboolean

Clean up the speech audio

source_languagestring

The spoken language of the source (code); detected when omitted

duration_secondsnumber

The source's length if you know it (only for the estimate; the charge uses the real length)

target_languagesstring[] required

One or more output languages: our codes (he, en, ru, uk, ar, es, fr, de…) or a name from GET /v1/video/translate/languages. Each language is its own version with its own file

Response

Completed (or 202 while processing)

idstring

Execution id — stable across internal retries; use it with GET /v1/executions/{id}

status'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
operationstring
tagstring nullable

Your X-Tag, if sent

created_atstring date-time
completed_atstring date-time nullable
outputobject

Operation result (see each operation). While a Studio render is processing: stage (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), phase (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), progress (a percent, 0–100) and progress_fraction (0–1), eta_seconds (seconds left, never below 0) and estimate_seconds

errorstring nullable

Changes

No recorded changes to this operation across all 2 revisions of this API.