curl --request POST \
--url https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"intensity": 0.7
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights"
payload = {
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"intensity": 0.7
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dimensions: {heightPct: 50, widthPct: 50},
durationMs: 2000,
point: {xPct: 25, yPct: 25},
startTimeMs: 1000,
intensity: 0.7
})
};
fetch('https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights', 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}/clips/{clipId}/highlights",
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([
'dimensions' => [
'heightPct' => 50,
'widthPct' => 50
],
'durationMs' => 2000,
'point' => [
'xPct' => 25,
'yPct' => 25
],
'startTimeMs' => 1000,
'intensity' => 0.7
]),
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}/clips/{clipId}/highlights"
payload := strings.NewReader("{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}"
response = http.request(request)
puts response.read_body{
"mask": {
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"id": "ly_abc123",
"intensity": 0.7,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"type": "blur"
}
}{
"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."
}Add a highlight to a clip
Adds a highlight mask to a clip. Targets the footage in the clip’s Screen slot at startTimeMs: the screen recording, or b-roll media a layout puts there.
curl --request POST \
--url https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"intensity": 0.7
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights"
payload = {
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"intensity": 0.7
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dimensions: {heightPct: 50, widthPct: 50},
durationMs: 2000,
point: {xPct: 25, yPct: 25},
startTimeMs: 1000,
intensity: 0.7
})
};
fetch('https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights', 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}/clips/{clipId}/highlights",
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([
'dimensions' => [
'heightPct' => 50,
'widthPct' => 50
],
'durationMs' => 2000,
'point' => [
'xPct' => 25,
'yPct' => 25
],
'startTimeMs' => 1000,
'intensity' => 0.7
]),
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}/clips/{clipId}/highlights"
payload := strings.NewReader("{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/clips/{clipId}/highlights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dimensions\": {\n \"heightPct\": 50,\n \"widthPct\": 50\n },\n \"durationMs\": 2000,\n \"point\": {\n \"xPct\": 25,\n \"yPct\": 25\n },\n \"startTimeMs\": 1000,\n \"intensity\": 0.7\n}"
response = http.request(request)
puts response.read_body{
"mask": {
"dimensions": {
"heightPct": 50,
"widthPct": 50
},
"durationMs": 2000,
"id": "ly_abc123",
"intensity": 0.7,
"point": {
"xPct": 25,
"yPct": 25
},
"startTimeMs": 1000,
"type": "blur"
}
}{
"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
Video identifier
"vid_abc123def456"
Clip identifier
"cl_xyz789ghi012"
Body
Add a blur or highlight mask. Targets the footage in the clip's Screen slot at startTimeMs: the screen recording, or b-roll media a layout puts there. Times are in ms on the clip's playback timeline (cuts applied).
0 < x <= 90071992547409912000
Start time in ms on the clip's playback timeline (cuts applied)
0 <= x <= 90071992547409911000
Strength from 0 to 1. Blur: 0 is the standard blur and 1 blurs three times as heavily; the content stays fully hidden at every value (defaults to 0). Highlight: how dark the area outside the highlight goes, 0 = no dimming, 1 = black (defaults to 0.7).
0 <= x <= 10.7
Response
OK
A mask on a clip
A blur or highlight mask on a clip. Times are in ms on the clip's playback timeline (cuts applied). Internally the mask stays anchored to the footage, so it doesn't drift when cuts change later.
Hide child attributes
Hide child attributes
x >= 02000
Mask ID
"ly_abc123"
Strength from 0 to 1. Blur: 0 is the standard blur and 1 blurs three times as heavily; the content stays fully hidden at every value (defaults to 0). Highlight: how dark the area outside the highlight goes, 0 = no dimming, 1 = black (defaults to 0.7).
0 <= x <= 10.7
Start time in ms on the clip's playback timeline (cuts applied)
x >= 01000
blur, highlight "blur"
Was this page helpful?