curl --request GET \
--url https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays', 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}/overlays",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"overlays": [
{
"animation": {
"intro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"motionBlur": true,
"outro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"textIntro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"textOutro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
}
},
"depth": "behind_presenter",
"dimensions": {
"height": 540,
"width": 960
},
"durationMs": 5000,
"id": "ly_abc123",
"point": {
"xPct": 30,
"yPct": 30
},
"startTimeMs": 1000,
"transition": "hard_cut",
"type": "image",
"zIndex": 0,
"imageUrl": "<string>",
"name": "Logo",
"sourceId": "su_abc123"
}
]
}{
"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."
}List overlays on a clip
Returns the image and video overlays on a clip.
curl --request GET \
--url https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays', 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}/overlays",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/clips/{clipId}/overlays")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"overlays": [
{
"animation": {
"intro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"motionBlur": true,
"outro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"textIntro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
},
"textOutro": {
"blur": 0,
"clip": false,
"durationMs": 500,
"easing": {
"curve": "slow_down",
"intensity": 0.5,
"bezier": [
0.25,
0.1,
0.25,
1
],
"spring": {
"damping": 12,
"mass": 1,
"stiffness": 200
}
},
"moveX": 0,
"moveY": -0.5,
"opacity": 0,
"preset": "slide_up",
"rotate": 0,
"scale": 1,
"text": {
"delayMs": 100,
"order": "forward",
"smoothing": "linear",
"unit": "words"
}
}
},
"depth": "behind_presenter",
"dimensions": {
"height": 540,
"width": 960
},
"durationMs": 5000,
"id": "ly_abc123",
"point": {
"xPct": 30,
"yPct": 30
},
"startTimeMs": 1000,
"transition": "hard_cut",
"type": "image",
"zIndex": 0,
"imageUrl": "<string>",
"name": "Logo",
"sourceId": "su_abc123"
}
]
}{
"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"
Response
OK
Overlays on a clip
Hide child attributes
Hide child attributes
How the overlay enters and leaves, or null when it plays its transition.
Hide child attributes
Hide child attributes
How the whole overlay enters, or null when it appears instantly.
Hide child attributes
Hide child attributes
Blur of the hidden state in pixels.
0
Clip the motion to the overlay's box, so it wipes in like a mask.
false
How long the side plays, in ms (50 to 5000). On a text side, how long each unit plays.
-9007199254740991 <= x <= 9007199254740991500
Hide child attributes
Hide child attributes
How a side accelerates. linear keeps one speed. smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse and swing are shaped by intensity. custom follows bezier, spring follows spring.
linear, smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse, swing, custom, spring "slow_down"
How strongly the curve shapes the motion, 0 to 1. Only curves with an intensity use it.
0 <= x <= 10.5
The custom curve's handles.
4 elements0 <= x <= 1[0.25, 0.1, 0.25, 1]
The spring curve's physics.
Hide child attributes
Hide child attributes
1 <= x <= 30012
0.1 <= x <= 101
1 <= x <= 1000200
Horizontal offset of the hidden state, as a fraction of the overlay's width (of a line's height on a text side); positive is right.
0
Vertical offset of the hidden state, as a fraction of the overlay's height (of a line's height on a text side); positive is down.
-0.5
Opacity of the hidden state, 0 to 1.
0
The preset the side matches, or null once its motion is custom.
fade, slide_up, slide_down, slide_left, slide_right, mask_up, mask_down, grow, shrink, blur, blur_slide_up "slide_up"
Clockwise rotation of the hidden state in degrees.
0
Scale of the hidden state; 1 is its resting size.
1
The units a text side plays on, each in turn.
Hide child attributes
Hide child attributes
How long after one unit the next starts, in ms (0 to 2000).
0 <= x <= 2000100
Which unit goes first. random uses the same shuffle every time.
forward, backward, center, edges, random "forward"
Eases the delays across the units: linear is an even step, the other curves bunch the starts up at one end.
linear, smooth, natural, slow_down, accelerate, elastic, overshoot, impulse, swing "linear"
What animates on its own.
letters, words, lines "words"
Blur the overlay along its motion while it moves, scales or turns.
true
How the whole overlay leaves, or null when it disappears instantly.
Hide child attributes
Hide child attributes
Blur of the hidden state in pixels.
0
Clip the motion to the overlay's box, so it wipes in like a mask.
false
How long the side plays, in ms (50 to 5000). On a text side, how long each unit plays.
-9007199254740991 <= x <= 9007199254740991500
Hide child attributes
Hide child attributes
How a side accelerates. linear keeps one speed. smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse and swing are shaped by intensity. custom follows bezier, spring follows spring.
linear, smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse, swing, custom, spring "slow_down"
How strongly the curve shapes the motion, 0 to 1. Only curves with an intensity use it.
0 <= x <= 10.5
The custom curve's handles.
4 elements0 <= x <= 1[0.25, 0.1, 0.25, 1]
The spring curve's physics.
Hide child attributes
Hide child attributes
1 <= x <= 30012
0.1 <= x <= 101
1 <= x <= 1000200
Horizontal offset of the hidden state, as a fraction of the overlay's width (of a line's height on a text side); positive is right.
0
Vertical offset of the hidden state, as a fraction of the overlay's height (of a line's height on a text side); positive is down.
-0.5
Opacity of the hidden state, 0 to 1.
0
The preset the side matches, or null once its motion is custom.
fade, slide_up, slide_down, slide_left, slide_right, mask_up, mask_down, grow, shrink, blur, blur_slide_up "slide_up"
Clockwise rotation of the hidden state in degrees.
0
Scale of the hidden state; 1 is its resting size.
1
The units a text side plays on, each in turn.
Hide child attributes
Hide child attributes
How long after one unit the next starts, in ms (0 to 2000).
0 <= x <= 2000100
Which unit goes first. random uses the same shuffle every time.
forward, backward, center, edges, random "forward"
Eases the delays across the units: linear is an even step, the other curves bunch the starts up at one end.
linear, smooth, natural, slow_down, accelerate, elastic, overshoot, impulse, swing "linear"
What animates on its own.
letters, words, lines "words"
How a text overlay's letters, words or lines enter, one after another, while intro plays on the whole box. Null when they don't.
Hide child attributes
Hide child attributes
Blur of the hidden state in pixels.
0
Clip the motion to the overlay's box, so it wipes in like a mask.
false
How long the side plays, in ms (50 to 5000). On a text side, how long each unit plays.
-9007199254740991 <= x <= 9007199254740991500
Hide child attributes
Hide child attributes
How a side accelerates. linear keeps one speed. smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse and swing are shaped by intensity. custom follows bezier, spring follows spring.
linear, smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse, swing, custom, spring "slow_down"
How strongly the curve shapes the motion, 0 to 1. Only curves with an intensity use it.
0 <= x <= 10.5
The custom curve's handles.
4 elements0 <= x <= 1[0.25, 0.1, 0.25, 1]
The spring curve's physics.
Hide child attributes
Hide child attributes
1 <= x <= 30012
0.1 <= x <= 101
1 <= x <= 1000200
Horizontal offset of the hidden state, as a fraction of the overlay's width (of a line's height on a text side); positive is right.
0
Vertical offset of the hidden state, as a fraction of the overlay's height (of a line's height on a text side); positive is down.
-0.5
Opacity of the hidden state, 0 to 1.
0
The preset the side matches, or null once its motion is custom.
fade, slide_up, slide_down, slide_left, slide_right, mask_up, mask_down, grow, shrink, blur, blur_slide_up "slide_up"
Clockwise rotation of the hidden state in degrees.
0
Scale of the hidden state; 1 is its resting size.
1
The units a text side plays on, each in turn.
Hide child attributes
Hide child attributes
How long after one unit the next starts, in ms (0 to 2000).
0 <= x <= 2000100
Which unit goes first. random uses the same shuffle every time.
forward, backward, center, edges, random "forward"
Eases the delays across the units: linear is an even step, the other curves bunch the starts up at one end.
linear, smooth, natural, slow_down, accelerate, elastic, overshoot, impulse, swing "linear"
What animates on its own.
letters, words, lines "words"
How a text overlay's letters, words or lines leave, one after another, while outro plays on the whole box. Null when they don't.
Hide child attributes
Hide child attributes
Blur of the hidden state in pixels.
0
Clip the motion to the overlay's box, so it wipes in like a mask.
false
How long the side plays, in ms (50 to 5000). On a text side, how long each unit plays.
-9007199254740991 <= x <= 9007199254740991500
Hide child attributes
Hide child attributes
How a side accelerates. linear keeps one speed. smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse and swing are shaped by intensity. custom follows bezier, spring follows spring.
linear, smooth, natural, slow_down, accelerate, elastic, bounce, overshoot, impulse, swing, custom, spring "slow_down"
How strongly the curve shapes the motion, 0 to 1. Only curves with an intensity use it.
0 <= x <= 10.5
The custom curve's handles.
4 elements0 <= x <= 1[0.25, 0.1, 0.25, 1]
The spring curve's physics.
Hide child attributes
Hide child attributes
1 <= x <= 30012
0.1 <= x <= 101
1 <= x <= 1000200
Horizontal offset of the hidden state, as a fraction of the overlay's width (of a line's height on a text side); positive is right.
0
Vertical offset of the hidden state, as a fraction of the overlay's height (of a line's height on a text side); positive is down.
-0.5
Opacity of the hidden state, 0 to 1.
0
The preset the side matches, or null once its motion is custom.
fade, slide_up, slide_down, slide_left, slide_right, mask_up, mask_down, grow, shrink, blur, blur_slide_up "slide_up"
Clockwise rotation of the hidden state in degrees.
0
Scale of the hidden state; 1 is its resting size.
1
The units a text side plays on, each in turn.
Hide child attributes
Hide child attributes
How long after one unit the next starts, in ms (0 to 2000).
0 <= x <= 2000100
Which unit goes first. random uses the same shuffle every time.
forward, backward, center, edges, random "forward"
Eases the delays across the units: linear is an even step, the other curves bunch the starts up at one end.
linear, smooth, natural, slow_down, accelerate, elastic, overshoot, impulse, swing "linear"
What animates on its own.
letters, words, lines "words"
Where the overlay sits relative to the presenter: the person in the clip's camera recording, or in its uploaded footage when the clip has no camera. front paints over everything. behind_presenter paints it behind the person but over everything else: in any layout the person is matted out of their footage and redrawn above the overlay. Fullscreen and framed layouts keep the recorded room around them; a cut-out layout replaces the room with the clip background. New overlays start on front. Without a presenter the overlay paints in front either way.
front, behind_presenter "behind_presenter"
Overlay size in artboard pixels. Absolute (not a percentage) so the overlay shape never distorts when the artboard dimensions change. Both sides must be greater than 0 — the renderer lays the overlay out into this box, so a zero or negative side has no valid meaning.
x >= 05000
Overlay ID
"ly_abc123"
Start time. Milliseconds on the clip playback timeline (with cuts applied) — the same timeline as the cut transcript.
x >= 01000
Intro/outro animation: smooth fades the overlay in at its start and out at its end, hard_cut pops it in and out. New overlays start on hard_cut. An animation replaces it while set.
smooth, hard_cut "hard_cut"
image, video "image"
Stacking position among the clip's image, video and text overlays: 0 is the backmost. depth applies first — a behind_presenter overlay stays behind the presenter whatever its zIndex — so the order only matters among overlays at the same depth. Lottie overlays share the stack but aren't listed, so listed values can skip a number.
0 <= x <= 90071992547409910
Hosted image URL, for image overlays. Read-only: not accepted as input — pass sourceId instead.
"Logo"
Source ID the overlay was created from.
"su_abc123"
Was this page helpful?