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.
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)
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; exactly one is required.
"calm-product-tour"
Audio source ID from POST /v1/sources (kind: "audio"). Mutually exclusive with presetId; exactly one is required.
"su_abc123def456"
Track volume from 0 (silent) to 1 (full volume)
0 <= x <= 10.2
Response
Background music set
One video-wide track that loops over the whole video and is included in exports
Show child attributes
Show child attributes
Was this page helpful?