curl --request PUT \
--url https://api.tella.com/v1/videos/{id}/subtitle-preset \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"presetId": "default:spotlight"
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/subtitle-preset"
payload = { "presetId": "default:spotlight" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({presetId: 'default:spotlight'})
};
fetch('https://api.tella.com/v1/videos/{id}/subtitle-preset', 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://api.tella.com/v1/videos/{id}/subtitle-preset",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'presetId' => 'default:spotlight'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.tella.com/v1/videos/{id}/subtitle-preset"
payload := strings.NewReader("{\n \"presetId\": \"default:spotlight\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.tella.com/v1/videos/{id}/subtitle-preset")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"presetId\": \"default:spotlight\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/subtitle-preset")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"presetId\": \"default:spotlight\"\n}"
response = http.request(request)
puts response.read_body{
"preset": {
"captionStyle": {
"backgroundColor": "#5E51F8FF",
"name": "backdrop",
"textColor": "#5E51F8FF",
"wordLevelHighlights": true,
"activeWordTextColor": "#5E51F8FF",
"backgroundEnabled": true,
"highlightColor": "#5E51F8FF",
"highlightMode": "text",
"outlineColor": "#5E51F8FF",
"outlineEnabled": true,
"shadowColor": "#5E51F8FF",
"shadowEnabled": true,
"textCase": "original"
},
"name": "<string>",
"presetId": "default:spotlight",
"scope": "default"
}
}{
"docsUrl": "https://docs.tella.com/",
"error": "bad_request",
"message": "The request was malformed or contained invalid parameters."
}{
"docsUrl": "https://docs.tella.com/",
"error": "unauthorized",
"message": "Authentication is required. Provide a valid API key."
}{
"docsUrl": "https://docs.tella.com/",
"error": "forbidden",
"message": "You don't have permission to access this resource."
}{
"docsUrl": "https://docs.tella.com/",
"error": "not_found",
"message": "The requested resource was not found."
}{
"docsUrl": "https://docs.tella.com/",
"error": "conflict",
"message": "The request conflicts with the resource's current state, e.g. an Idempotency-Key whose first request is still in progress. Retry once it settles."
}{
"docsUrl": "https://docs.tella.com/",
"error": "rate_limited",
"message": "You have exceeded the rate limit. Please slow down."
}{
"docsUrl": "https://docs.tella.com/",
"error": "server_error",
"message": "An unexpected error occurred"
}{
"docsUrl": "https://docs.tella.com/",
"error": "not_implemented",
"message": "The requested operation is not implemented."
}{
"docsUrl": "https://docs.tella.com/",
"error": "unavailable",
"message": "A dependency was unavailable and the request was not executed. Safe to resend unchanged after the Retry-After delay."
}Apply a subtitle preset
Apply a preset returned by GET /v1/subtitle-presets. Built-in presets restore style, font, weight, and size, preserving position, grouping, and lines per block. Personal presets also restore those saved layout settings. Does not change transcript text or whether subtitles are enabled. Changes sync to open editors; reapplying the same preset is safe.
curl --request PUT \
--url https://api.tella.com/v1/videos/{id}/subtitle-preset \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"presetId": "default:spotlight"
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/subtitle-preset"
payload = { "presetId": "default:spotlight" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({presetId: 'default:spotlight'})
};
fetch('https://api.tella.com/v1/videos/{id}/subtitle-preset', 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://api.tella.com/v1/videos/{id}/subtitle-preset",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'presetId' => 'default:spotlight'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.tella.com/v1/videos/{id}/subtitle-preset"
payload := strings.NewReader("{\n \"presetId\": \"default:spotlight\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.tella.com/v1/videos/{id}/subtitle-preset")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"presetId\": \"default:spotlight\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/subtitle-preset")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"presetId\": \"default:spotlight\"\n}"
response = http.request(request)
puts response.read_body{
"preset": {
"captionStyle": {
"backgroundColor": "#5E51F8FF",
"name": "backdrop",
"textColor": "#5E51F8FF",
"wordLevelHighlights": true,
"activeWordTextColor": "#5E51F8FF",
"backgroundEnabled": true,
"highlightColor": "#5E51F8FF",
"highlightMode": "text",
"outlineColor": "#5E51F8FF",
"outlineEnabled": true,
"shadowColor": "#5E51F8FF",
"shadowEnabled": true,
"textCase": "original"
},
"name": "<string>",
"presetId": "default:spotlight",
"scope": "default"
}
}{
"docsUrl": "https://docs.tella.com/",
"error": "bad_request",
"message": "The request was malformed or contained invalid parameters."
}{
"docsUrl": "https://docs.tella.com/",
"error": "unauthorized",
"message": "Authentication is required. Provide a valid API key."
}{
"docsUrl": "https://docs.tella.com/",
"error": "forbidden",
"message": "You don't have permission to access this resource."
}{
"docsUrl": "https://docs.tella.com/",
"error": "not_found",
"message": "The requested resource was not found."
}{
"docsUrl": "https://docs.tella.com/",
"error": "conflict",
"message": "The request conflicts with the resource's current state, e.g. an Idempotency-Key whose first request is still in progress. Retry once it settles."
}{
"docsUrl": "https://docs.tella.com/",
"error": "rate_limited",
"message": "You have exceeded the rate limit. Please slow down."
}{
"docsUrl": "https://docs.tella.com/",
"error": "server_error",
"message": "An unexpected error occurred"
}{
"docsUrl": "https://docs.tella.com/",
"error": "not_implemented",
"message": "The requested operation is not implemented."
}{
"docsUrl": "https://docs.tella.com/",
"error": "unavailable",
"message": "A dependency was unavailable and the request was not executed. Safe to resend unchanged after the Retry-After delay."
}Authorizations
API key obtained from your Tella account settings
Path Parameters
Unique video identifier
"vid_abc123def456"
Body
1"default:spotlight"
Response
Preset applied
Hide child attributes
Hide child attributes
Subtitle style. Applies if subtitles are enabled on the video. Background, shadow, and outline colors and toggles are available on every style.
- Backdrop
- Highlight
- Mono
- Cannes
- Classic
Hide child attributes
Hide child attributes
Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
backdrop Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
Text color of the spoken word when highlightMode is background. Defaults to textColor.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
Spoken-word color. Omit to retain the legacy text-opacity progression.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
How the spoken word is emphasized. Defaults to text.
text, background, fadeRest Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"#5E51F8FF"
Letter case applied to every caption word. Defaults to original.
original, uppercase, lowercase Pass this ID to PUT /v1/videos/{id}/subtitle-preset
"default:spotlight"
default, personal Was this page helpful?