Download a dub's files
curl --request GET \
--url https://api.reedapt.com/v1/dubs/{dub_id}/files \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reedapt.com/v1/dubs/{dub_id}/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.reedapt.com/v1/dubs/{dub_id}/files"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"files": [
{
"kind": "dub",
"filename": "interview_dubbed_french.mp4",
"url": "https://…"
}
],
"expires_at": "2026-10-28T10:31:02Z"
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}Dubs
Download a dub's files
Links to a completed dub’s files. Each link lasts an hour; ask again for fresh ones.
GET
/
dubs
/
{dub_id}
/
files
Download a dub's files
curl --request GET \
--url https://api.reedapt.com/v1/dubs/{dub_id}/files \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reedapt.com/v1/dubs/{dub_id}/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.reedapt.com/v1/dubs/{dub_id}/files"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"files": [
{
"kind": "dub",
"filename": "interview_dubbed_french.mp4",
"url": "https://…"
}
],
"expires_at": "2026-10-28T10:31:02Z"
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}{
"error": {
"code": "UPLOAD_INCOMPLETE",
"message": "Complete the upload before dubbing it.",
"request_id": "req_8f2c1e0a9b7d6c5e4f3a",
"fields": [
{
"field": "target_languages",
"message": "Field required"
}
]
}
}