Video translation
Translate spoken audio into another language while keeping the original speaker's voice. Covers the language pairs used most often for video localization.
#Translate a video
Enqueue a job to translate the spoken content of a video into another language and dub it back in.
https://api.rendley.com/v1/ai/video-translateDon't have one? Create an API key
Which model to use. Changing it updates the params below.
Model-specific parameters. The fields listed for the selected model.
The 'hash' field from the library media entry, or a public URL.
Target language for translation.
Translation mode: 'speed' (faster
const res = await fetch("https://api.rendley.com/v1/ai/video-translate", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}),
});
const { data } = await res.json();curl -X POST "https://api.rendley.com/v1/ai/video-translate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}'import requests
res = requests.post(
"https://api.rendley.com/v1/ai/video-translate",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
},
)
data = res.json()["data"]$ch = curl_init("https://api.rendley.com/v1/ai/video-translate");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["params" => ["file_hash" => "<file_hash>", "output_language" => "<output_language>"], "model_id" => "video-translate"]));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];package main
import (
"fmt"
"io"
"net/http"
"bytes"
)
func main() {
body := bytes.NewBufferString(`{
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}`)
req, _ := http.NewRequest("POST", "https://api.rendley.com/v1/ai/video-translate", body)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
b, _ := io.ReadAll(res.Body)
fmt.Println(string(b))
}require "net/http"
require "json"
uri = URI("https://api.rendley.com/v1/ai/video-translate")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
req["Content-Type"] = "application/json"
req.body = { params: { file_hash: "<file_hash>", output_language: "<output_language>" }, model_id: "video-translate" }.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]Response
{
"data": {
"job_id": "d97241f2-e1e4-4651-b078-8663fc35c584"
}
}#Calculate video translation cost
Calculate the credit cost of translating and dubbing a video into another language.
https://api.rendley.com/v1/ai/video-translate/costDon't have one? Create an API key
Which model to use. Changing it updates the params below.
Model-specific parameters. The fields listed for the selected model.
The 'hash' field from the library media entry, or a public URL.
Target language for translation.
Translation mode: 'speed' (faster
const res = await fetch("https://api.rendley.com/v1/ai/video-translate/cost", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}),
});
const { data } = await res.json();curl -X POST "https://api.rendley.com/v1/ai/video-translate/cost" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}'import requests
res = requests.post(
"https://api.rendley.com/v1/ai/video-translate/cost",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
},
)
data = res.json()["data"]$ch = curl_init("https://api.rendley.com/v1/ai/video-translate/cost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["params" => ["file_hash" => "<file_hash>", "output_language" => "<output_language>"], "model_id" => "video-translate"]));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];package main
import (
"fmt"
"io"
"net/http"
"bytes"
)
func main() {
body := bytes.NewBufferString(`{
"params": {
"file_hash": "<file_hash>",
"output_language": "<output_language>"
},
"model_id": "video-translate"
}`)
req, _ := http.NewRequest("POST", "https://api.rendley.com/v1/ai/video-translate/cost", body)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
b, _ := io.ReadAll(res.Body)
fmt.Println(string(b))
}require "net/http"
require "json"
uri = URI("https://api.rendley.com/v1/ai/video-translate/cost")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
req["Content-Type"] = "application/json"
req.body = { params: { file_hash: "<file_hash>", output_language: "<output_language>" }, model_id: "video-translate" }.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]Response
{
"data": 0
}#List video translate languages
List the languages supported as targets for video translation.
https://api.rendley.com/v1/ai/video-translate/languagesDon't have one? Create an API key
const res = await fetch("https://api.rendley.com/v1/ai/video-translate/languages", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();curl "https://api.rendley.com/v1/ai/video-translate/languages" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
res = requests.get(
"https://api.rendley.com/v1/ai/video-translate/languages",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]$ch = curl_init("https://api.rendley.com/v1/ai/video-translate/languages");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.rendley.com/v1/ai/video-translate/languages", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
b, _ := io.ReadAll(res.Body)
fmt.Println(string(b))
}require "net/http"
require "json"
uri = URI("https://api.rendley.com/v1/ai/video-translate/languages")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]Response
{
"data": [
{
"id": "3f0d5a4e-3d2a-4c1f-9b3e-2a1c4d5e6f70",
"name": "string"
}
]
}