Get access
VOD Express comes with every SyncWords Live account: if your organization uses Live, it can use VOD Express too, with the same API key pair (a public key and a secret). Without one, ask your SyncWords contact, or support@syncwords.com, for an account.You need
- The key pair, and about 15 minutes: processing a file takes 4 to 10 minutes even for a short clip, most of it spent preparing the processing for the file.
-
A short video with speech. Use ours, a 35-second English dialogue (1 MB):
sample-en.mp4; or any MP4 of a minute or two. - One of:
quickstart.py, or quickstart.mjs for
its top-level await). The base URL is read from SW_VOD_API when set, and is
that of Environments otherwise.
1
Get a token
Exchange the key pair for a bearer token, and set up a small helper for the calls that follow:A token lasts 30 minutes. When a call answers
401, get a new one the same way.
More on tokens.2
Check your access
enabled: false means VOD Express is not available to the account, for instance because its
access was revoked or its trial ended: every other call then answers 403, and its message
says why. Ask support.3
Create a project
A project holds the processing instructions. This one reads the files put into its input
folder (
S3FolderSource), transcribes English, translates into Spanish with Gemini, dubs with
Deepdub cloning each speaker’s voice (voice: auto), and writes an MP4 per input into its
output folder (S3FolderOutput), with the input’s own audio as the first track and the Spanish
dub as the second:${name} and ${ext} in nameTemplate are the API’s placeholders, filled per input file, so
the Node.js snippet keeps them in single quotes rather than a template literal.The project starts right away ("status": "running") and waits for files. If the config has a
mistake, the answer is a 422 listing every problem by its place in the config. See
Errors.4
Upload a video
Ask the API for an upload URL, then Storage answers
PUT the file to it. The bytes go straight to storage,
and the file is in the project as soon as the PUT completes:200 with an empty body. The URL works for a file of up to 5 GB; a larger
file, or an upload you want to resume after an interruption, goes
in parts.5
Wait for it
pending to processing to done (or failed). This is the 4 to 10 minutes
of waiting, and most of it reads pending: processing is only the last step. To wait in a loop:401.6
Download the dub
episode.es.mp4 in any player: it
opens on the original audio, and the player’s audio menu switches to the Spanish dub.What happened
- The project launched a processing service when you created it. It picked up
episode.mp4from the project’s input folder, transcribed it, translated each sentence, cloned each speaker’s voice for the Spanish lines, and mixed the new voices over the original background (the voices of the original are removed, becauseoriginalAudioSplittingis on by default). - The service stops itself 30 minutes after it has nothing left to do, and starts again on
its own within a minute of your next upload (
startOnNewFiles, on by default). See Auto-stop. - Every further file you upload is processed with the same configuration.
Next steps
More languages, more outputs
Several dubs in one video, per-language files, subtitles beside them.
Pick voices
A safe first voice for each provider, and how to try one before a season.
Automate it
A complete Python or Node.js client: token renewal, a folder of files, every output.
Upload a whole season
The AWS CLI, subfolders, and collecting every output.