Transcribe video
curl --request POST \
--url https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"targetLanguages": [
"<string>"
],
"generateTitle": true,
"generateDescription": true,
"generateChapters": true,
"generateMoments": true,
"sourceLanguage": "<string>"
}
'import requests
url = "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe"
payload = {
"targetLanguages": ["<string>"],
"generateTitle": True,
"generateDescription": True,
"generateChapters": True,
"generateMoments": True,
"sourceLanguage": "<string>"
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguages: ['<string>'],
generateTitle: true,
generateDescription: true,
generateChapters: true,
generateMoments: true,
sourceLanguage: '<string>'
})
};
fetch('https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguages' => [
'<string>'
],
'generateTitle' => true,
'generateDescription' => true,
'generateChapters' => true,
'generateMoments' => true,
'sourceLanguage' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe"
payload := strings.NewReader("{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}Manage Videos
Transcribe video
POST
/
library
/
{libraryId}
/
videos
/
{videoId}
/
transcribe
Transcribe video
curl --request POST \
--url https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"targetLanguages": [
"<string>"
],
"generateTitle": true,
"generateDescription": true,
"generateChapters": true,
"generateMoments": true,
"sourceLanguage": "<string>"
}
'import requests
url = "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe"
payload = {
"targetLanguages": ["<string>"],
"generateTitle": True,
"generateDescription": True,
"generateChapters": True,
"generateMoments": True,
"sourceLanguage": "<string>"
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguages: ['<string>'],
generateTitle: true,
generateDescription: true,
generateChapters: true,
generateMoments: true,
sourceLanguage: '<string>'
})
};
fetch('https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguages' => [
'<string>'
],
'generateTitle' => true,
'generateDescription' => true,
'generateChapters' => true,
'generateMoments' => true,
'sourceLanguage' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe"
payload := strings.NewReader("{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/transcribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguages\": [\n \"<string>\"\n ],\n \"generateTitle\": true,\n \"generateDescription\": true,\n \"generateChapters\": true,\n \"generateMoments\": true,\n \"sourceLanguage\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}{
"success": true,
"message": "<string>",
"statusCode": 123
}Authorizations
AccessKey based authentication
Query Parameters
Body
application/json
Used to override video library transcription settings, null by default
List of languages that will be used as target languages, use ISO 639-1 language codes.
Whether video title should be automatically generated.
Whether video description should be automatically generated.
Whether video chapters should be automatically generated.
Whether video moments should be automatically generated.
Video source language, use ISO 639-1 language code.
Last modified on July 9, 2026
Was this page helpful?
⌘I