curl --request PUT \
--url https://api.tella.com/v1/videos/{id}/background-music \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Calm Product Tour",
"presetId": "calm-product-tour",
"sourceId": "su_abc123def456",
"volume": 0.2
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/background-music"
payload = {
"name": "Calm Product Tour",
"presetId": "calm-product-tour",
"sourceId": "su_abc123def456",
"volume": 0.2
}
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({
name: 'Calm Product Tour',
presetId: 'calm-product-tour',
sourceId: 'su_abc123def456',
volume: 0.2
})
};
fetch('https://api.tella.com/v1/videos/{id}/background-music', 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}/background-music",
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([
'name' => 'Calm Product Tour',
'presetId' => 'calm-product-tour',
'sourceId' => 'su_abc123def456',
'volume' => 0.2
]),
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}/background-music"
payload := strings.NewReader("{\n \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\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}/background-music")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/background-music")
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 \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\n}"
response = http.request(request)
puts response.read_body{
"backgroundMusic": {
"durationMs": 180036,
"name": "Calm Product Tour",
"url": "https://ucarecdn.com/example-track/",
"volume": 0.2
}
}{
"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."
}Set background music
Sets the video’s background music track. It loops over the whole video and is included in exports. Volume is 0-1 and defaults to 0.2. Omit sourceId and presetId to change only the current track’s volume or name.
curl --request PUT \
--url https://api.tella.com/v1/videos/{id}/background-music \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Calm Product Tour",
"presetId": "calm-product-tour",
"sourceId": "su_abc123def456",
"volume": 0.2
}
'import requests
url = "https://api.tella.com/v1/videos/{id}/background-music"
payload = {
"name": "Calm Product Tour",
"presetId": "calm-product-tour",
"sourceId": "su_abc123def456",
"volume": 0.2
}
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({
name: 'Calm Product Tour',
presetId: 'calm-product-tour',
sourceId: 'su_abc123def456',
volume: 0.2
})
};
fetch('https://api.tella.com/v1/videos/{id}/background-music', 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}/background-music",
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([
'name' => 'Calm Product Tour',
'presetId' => 'calm-product-tour',
'sourceId' => 'su_abc123def456',
'volume' => 0.2
]),
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}/background-music"
payload := strings.NewReader("{\n \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\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}/background-music")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tella.com/v1/videos/{id}/background-music")
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 \"name\": \"Calm Product Tour\",\n \"presetId\": \"calm-product-tour\",\n \"sourceId\": \"su_abc123def456\",\n \"volume\": 0.2\n}"
response = http.request(request)
puts response.read_body{
"backgroundMusic": {
"durationMs": 180036,
"name": "Calm Product Tour",
"url": "https://ucarecdn.com/example-track/",
"volume": 0.2
}
}{
"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
Set the video's background music from either your own uploaded audio (sourceId) or Tella's curated catalog (presetId), or change the current track's volume or name
Optional display name for the track. Defaults to the preset's name when presetId is given.
"Calm Product Tour"
Preset ID of a curated Tella music track, from a default item of type music in GET /v1/library. Nothing to upload. Mutually exclusive with sourceId. Omit both to keep the current track and change only its volume or name.
"calm-product-tour"
Audio source ID from POST /v1/sources (kind: "audio"). Mutually exclusive with presetId. Omit both to keep the current track and change only its volume or name.
"su_abc123def456"
Track volume from 0 (silent) to 1 (full volume). Defaults to 0.2 for a new track, and to the current track's volume when neither sourceId nor presetId is given.
0 <= x <= 10.2
Response
Background music set
One video-wide track that loops over the whole video and is included in exports
Hide child attributes
Hide child attributes
Audio track duration in milliseconds
x > 0180036
Optional display name for the track
"Calm Product Tour"
HTTPS URL of the audio track
^https:\/\/.*"https://ucarecdn.com/example-track/"
Track volume from 0 (silent) to 1 (full volume)
0 <= x <= 10.2
Was this page helpful?