Skip to main content
You need an API key. Make one in Reedapt under Developers in the account menu. Test keys are free and dub the first 60 seconds of a file, so you can follow this page without using minutes.
Save the key in an environment variable so it stays out of your code:
1

Start an upload

Tell us the file’s name and size in bytes. The answer has the upload’s id, its part_size, and a signed link for each of the first parts.
Response
If the file is already online, send {"source_url": "https://…/talk.mp4"} instead and skip to step 4 once the upload is uploaded. See Uploading from a link.
2

Send the file in parts

Cut the file into pieces of part_size bytes (the last one is shorter) and PUT each piece to its link. Keep the ETag header from each answer.
Don’t send your API key to the signed links. They already carry their own permission, and an extra Authorization header makes storage refuse the request.
Uploads has a complete upload function in Node.js and Python.
3

Complete the upload

List every part with its ETag. We join the parts into the file.
The upload’s status becomes uploaded.
4

Start the dubs

Ask for the languages you want. You get one dub per language.
The Idempotency-Key means you can safely send the request again after a timeout: you get the first answer back instead of a second set of dubs. See Repeated requests.

Get the dubbed files

When a dub finishes we send a dub.completed webhook. You can also check on it with GET /dubs/{id}. Then ask for its files:
Response
Each link lasts an hour. Ask again whenever you need fresh ones.

Next steps

Set up webhooks

Stop polling and hear about each dub as it finishes.

Handle errors

Every error has the same shape and a stable code.