Skip to main content
GET
/
v1
/
videos
/
{id}
/
clips
/
{clipId}
/
sources
/
{sourceId}
/
thumbnail
Get a source thumbnail or animated preview
curl --request GET \
  --url https://api.tella.com/v1/videos/{id}/clips/{clipId}/sources/{sourceId}/thumbnail \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.tella.com/v1/videos/{id}/clips/{clipId}/sources/{sourceId}/thumbnail"

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}/sources/{sourceId}/thumbnail', 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}/sources/{sourceId}/thumbnail",
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}/sources/{sourceId}/thumbnail"

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}/sources/{sourceId}/thumbnail")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.tella.com/v1/videos/{id}/clips/{clipId}/sources/{sourceId}/thumbnail")

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
{
  "url": "<string>"
}
{
"error": {
"code": "bad_request",
"doc_url": "https://tella.tv/docs/api-reference/errors#bad-request",
"message": "The request was malformed or contained invalid parameters."
}
}
{
"error": {
"code": "unauthorized",
"doc_url": "https://tella.tv/docs/api-reference/errors#unauthorized",
"message": "Authentication is required. Provide a valid API key."
}
}
{
"error": {
"code": "forbidden",
"doc_url": "https://tella.tv/docs/api-reference/errors#forbidden",
"message": "You don't have permission to access this resource."
}
}
{
"error": {
"code": "not_found",
"doc_url": "https://tella.tv/docs/api-reference/errors#not-found",
"message": "The requested resource was not found."
}
}
{
"error": {
"code": "unprocessable_entity",
"doc_url": "https://tella.tv/docs/api-reference/errors#unprocessable-entity",
"message": "The request was well-formed but contained semantic errors."
}
}
{
"error": {
"code": "rate_limit_exceeded",
"doc_url": "https://tella.tv/docs/api-reference/errors#rate-limit-exceeded",
"message": "You have exceeded the rate limit. Please slow down."
}
}
{
"error": {
"code": "internal_server_error",
"doc_url": "https://tella.tv/docs/api-reference/errors#internal-server-error",
"message": "An unexpected error occurred on the server."
}
}

Authorizations

Authorization
string
header
required

API key obtained from your Tella account settings

Path Parameters

id
string
required

Video ID

clipId
string
required

Clip ID

sourceId
string
required

Source ID

Query Parameters

format
enum<string>

Output format. Defaults to jpg.

Available options:
jpg,
png,
webp,
gif,
mp4
Example:

"jpg"

inpointMs
integer

Frame offset in ms from the source's start. Defaults to 0.

Required range: 0 <= x <= 9007199254740991
Example:

1000

durationMs
integer

Duration of the animated preview in ms. Only valid when format is gif or mp4.

Required range: x <= 9007199254740991
Example:

3000

width
integer

Output width in pixels. The thumbnail keeps the source's aspect ratio; a missing side is derived from it.

Required range: x <= 9007199254740991
Example:

1280

height
integer

Output height in pixels. Derived from the source's aspect ratio when omitted.

Required range: x <= 9007199254740991
Example:

720

download

Suggest a download disposition on the signed URL.

Available options:
true
response
enum<string>

Set to 'json' to receive {url} instead of the default 302 redirect.

Available options:
json

Response

Returned when ?response=json is set

Signed CDN URL for the requested thumbnail. Returned only when ?response=json is set; otherwise the endpoint redirects to the URL with a 302.

url
string<uri>
required