Generate audio using AI
curl --request POST \
--url https://api.videodb.io/collection/{collection_id}/generate/audio/ \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
}
'const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Generate upbeat background music',
audio_type: 'music',
callback_url: 'https://webhook.example.com/callback'
})
};
fetch('https://api.videodb.io/collection/{collection_id}/generate/audio/', 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.videodb.io/collection/{collection_id}/generate/audio/",
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([
'prompt' => 'Generate upbeat background music',
'audio_type' => 'music',
'callback_url' => 'https://webhook.example.com/callback'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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.videodb.io/collection/{collection_id}/generate/audio/"
payload := strings.NewReader("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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.videodb.io/collection/{collection_id}/generate/audio/")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.videodb.io/collection/{collection_id}/generate/audio/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}"
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("x-access-token", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.videodb.io/collection/{collection_id}/generate/audio/' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
}'import Foundation
let parameters = [
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.videodb.io/collection/{collection_id}/generate/audio/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-access-token": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/collection/{collection_id}/generate/audio/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/collection/{collection_id}/generate/audio/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Generate upbeat background music',
audio_type: 'music',
callback_url: 'https://webhook.example.com/callback'
})
};
fetch('https://api.videodb.io/collection/{collection_id}/generate/audio/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.videodb.io/collection/{collection_id}/generate/audio/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "x-access-token: <api-key>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.videodb.io/collection/{collection_id}/generate/audio/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "x-access-token: <api-key>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
val request = Request.Builder()
.url("https://api.videodb.io/collection/{collection_id}/generate/audio/")
.post(body)
.addHeader("x-access-token", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"success": true,
"status": "processing",
"data": {
"id": "job-123",
"output_url": "https://api.videodb.io/async-response/job-123"
}
}Generate Audio with AI
Generate audio, music, and voice content using AI models
POST
/
collection
/
{collection_id}
/
generate
/
audio
/
Generate audio using AI
curl --request POST \
--url https://api.videodb.io/collection/{collection_id}/generate/audio/ \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
}
'const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Generate upbeat background music',
audio_type: 'music',
callback_url: 'https://webhook.example.com/callback'
})
};
fetch('https://api.videodb.io/collection/{collection_id}/generate/audio/', 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.videodb.io/collection/{collection_id}/generate/audio/",
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([
'prompt' => 'Generate upbeat background music',
'audio_type' => 'music',
'callback_url' => 'https://webhook.example.com/callback'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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.videodb.io/collection/{collection_id}/generate/audio/"
payload := strings.NewReader("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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.videodb.io/collection/{collection_id}/generate/audio/")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.videodb.io/collection/{collection_id}/generate/audio/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}"
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("x-access-token", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.videodb.io/collection/{collection_id}/generate/audio/' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
}'import Foundation
let parameters = [
"prompt": "Generate upbeat background music",
"audio_type": "music",
"callback_url": "https://webhook.example.com/callback"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.videodb.io/collection/{collection_id}/generate/audio/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-access-token": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/collection/{collection_id}/generate/audio/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/collection/{collection_id}/generate/audio/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Generate upbeat background music',
audio_type: 'music',
callback_url: 'https://webhook.example.com/callback'
})
};
fetch('https://api.videodb.io/collection/{collection_id}/generate/audio/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.videodb.io/collection/{collection_id}/generate/audio/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "x-access-token: <api-key>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.videodb.io/collection/{collection_id}/generate/audio/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "x-access-token: <api-key>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"prompt\": \"Generate upbeat background music\",\n \"audio_type\": \"music\",\n \"callback_url\": \"https://webhook.example.com/callback\"\n}")
val request = Request.Builder()
.url("https://api.videodb.io/collection/{collection_id}/generate/audio/")
.post(body)
.addHeader("x-access-token", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"success": true,
"status": "processing",
"data": {
"id": "job-123",
"output_url": "https://api.videodb.io/async-response/job-123"
}
}Generate music, sound effects, and AI voices from text. The SDK provides specialized methods for each audio type with appropriate parameters.
Music Generation
Create background music and ambient soundtracks from text prompts.import videodb
conn = videodb.connect(api_key="your_api_key")
coll = conn.get_collection()
music = coll.generate_music(
prompt="Upbeat electronic dance music",
duration=10
)
if music is None:
raise RuntimeError("Expected a generated Audio asset.")
print(music.id)
print(music.generate_url())
import { connect } from 'videodb';
const conn = connect({ apiKey: 'your_api_key' });
const coll = await conn.getCollection();
const music = await coll.generateMusic(
"Upbeat electronic dance music",
10
);
if (!music) {
throw new Error("Expected a generated Audio asset.");
}
console.log(music.id);
console.log(await music.generateUrl());
Sound Effect Generation
Generate sound effects and environmental audio from descriptions.import videodb
conn = videodb.connect(api_key="your_api_key")
coll = conn.get_collection()
sfx = coll.generate_sound_effect(
prompt="Heavy rain with distant thunder",
duration=5
)
if sfx is None:
raise RuntimeError("Expected a generated Audio asset.")
print(sfx.id)
print(sfx.generate_url())
import { connect } from 'videodb';
const conn = connect({ apiKey: 'your_api_key' });
const coll = await conn.getCollection();
const sfx = await coll.generateSoundEffect(
"Heavy rain with distant thunder",
5
);
if (!sfx) {
throw new Error("Expected a generated Audio asset.");
}
console.log(sfx.id);
console.log(await sfx.generateUrl());
Voice Generation
Convert text to natural-sounding speech in multiple voices.import videodb
from videodb import GenerationJob
conn = videodb.connect(api_key="your_api_key")
coll = conn.get_collection()
voice = coll.generate_voice(
text="Welcome to our video demo",
voice_name="Default",
wait=True,
)
if voice is None or isinstance(voice, GenerationJob):
raise RuntimeError("Expected the Audio asset after waiting.")
print(voice.id)
print(voice.generate_url())
import { connect, Audio, GenerationJob } from 'videodb';
const conn = connect({ apiKey: 'your_api_key' });
const coll = await conn.getCollection();
const voiceCandidate = await coll.generateVoice(
"Welcome to our video demo",
"Default"
);
const voice = voiceCandidate instanceof GenerationJob
? await voiceCandidate.wait()
: voiceCandidate;
if (!(voice instanceof Audio)) {
throw new Error("Expected a generated Audio asset.");
}
console.log(voice.id);
console.log(await voice.generateUrl());
- Default duration is 5 seconds for music, 2 seconds for sound effects
- Audio IDs have an
a-prefix (e.g.,a-a1b2c3d4) - Voice self-inference can return a job; use
wait=Trueor{ wait: true }to wait for Audio. Poll intervals and timeouts are measured in seconds.
Generative Media Guide
Learn about all AI generation capabilities
Voiceovers Tutorial
Add narration to silent footage with AI voices
Authorizations
API key for authentication (sk-xxx format)
Path Parameters
Example:
"default"
Body
application/json