curl --request POST \
--url https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"generateTitle": true,
"generateDescription": true,
"generateChapters": true,
"generateMoments": true,
"sourceLanguage": "<string>"
}
'import requests
url = "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart"
payload = {
"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({
generateTitle: true,
generateDescription: true,
generateChapters: true,
generateMoments: true,
sourceLanguage: '<string>'
})
};
fetch('https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart', 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}/smart",
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([
'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}/smart"
payload := strings.NewReader("{\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}/smart")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\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}/smart")
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 \"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
}{
"success": true,
"message": "<string>",
"statusCode": 123
}Trigger Smart actions
Queues Smart Actions (title, description, chapters and/or moments generation) for a video that already has captions. This endpoint does not check the video library’s Smart Actions setting — requests are accepted, processed and billed for transcription usage even when Smart Actions is disabled for the library. Requires at least one of GenerateTitle, GenerateDescription, GenerateChapters or GenerateMoments, and returns 429 once the library’s Smart Actions usage threshold for the video is exceeded.
curl --request POST \
--url https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"generateTitle": true,
"generateDescription": true,
"generateChapters": true,
"generateMoments": true,
"sourceLanguage": "<string>"
}
'import requests
url = "https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart"
payload = {
"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({
generateTitle: true,
generateDescription: true,
generateChapters: true,
generateMoments: true,
sourceLanguage: '<string>'
})
};
fetch('https://video.bunnycdn.com/library/{libraryId}/videos/{videoId}/smart', 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}/smart",
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([
'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}/smart"
payload := strings.NewReader("{\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}/smart")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\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}/smart")
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 \"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
}{
"success": true,
"message": "<string>",
"statusCode": 123
}Authorizations
AccessKey based authentication
Path Parameters
The ID of the video library.
The GUID of the video.
Body
Whether video title should be generated.
Whether video description should be generated.
Whether video chapters should be generated.
Whether video moments should be generated.
(Optional) Video source language, use ISO 639-1 language code.
Response
The smart action was queued
Was this page helpful?