Generate audio stream URL
curl --request POST \
--url https://api.videodb.io/audio/{audio_id}/generate_url \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"format": "mp3",
"quality": "high"
}
'const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({format: 'mp3', quality: 'high'})
};
fetch('https://api.videodb.io/audio/{audio_id}/generate_url', 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/audio/{audio_id}/generate_url",
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([
'format' => 'mp3',
'quality' => 'high'
]),
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/audio/{audio_id}/generate_url"
payload := strings.NewReader("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.videodb.io/audio/{audio_id}/generate_url")
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 \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"format": "mp3",
"quality": "high"
}'import Foundation
let parameters = [
"format": "mp3",
"quality": "high"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.videodb.io/audio/{audio_id}/generate_url")!
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/audio/{audio_id}/generate_url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/audio/{audio_id}/generate_url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\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({format: 'mp3', quality: 'high'})
};
fetch('https://api.videodb.io/audio/{audio_id}/generate_url', 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/audio/{audio_id}/generate_url");
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 \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url");
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 \"format\": \"mp3\",\n \"quality\": \"high\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}")
val request = Request.Builder()
.url("https://api.videodb.io/audio/{audio_id}/generate_url")
.post(body)
.addHeader("x-access-token", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"success": true,
"data": {
"stream_url": "https://stream.videodb.io/a/12345"
}
}Generate Audio URL
Generate a shareable streaming URL for an audio file
POST
/
audio
/
{audio_id}
/
generate_url
Generate audio stream URL
curl --request POST \
--url https://api.videodb.io/audio/{audio_id}/generate_url \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"format": "mp3",
"quality": "high"
}
'const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({format: 'mp3', quality: 'high'})
};
fetch('https://api.videodb.io/audio/{audio_id}/generate_url', 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/audio/{audio_id}/generate_url",
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([
'format' => 'mp3',
'quality' => 'high'
]),
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/audio/{audio_id}/generate_url"
payload := strings.NewReader("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.videodb.io/audio/{audio_id}/generate_url")
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 \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"format": "mp3",
"quality": "high"
}'import Foundation
let parameters = [
"format": "mp3",
"quality": "high"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.videodb.io/audio/{audio_id}/generate_url")!
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/audio/{audio_id}/generate_url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);using RestSharp;
var options = new RestClientOptions("https://api.videodb.io/audio/{audio_id}/generate_url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-access-token", "<api-key>");
request.AddJsonBody("{\n \"format\": \"mp3\",\n \"quality\": \"high\"\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({format: 'mp3', quality: 'high'})
};
fetch('https://api.videodb.io/audio/{audio_id}/generate_url', 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/audio/{audio_id}/generate_url");
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 \"format\": \"mp3\",\n \"quality\": \"high\"\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/audio/{audio_id}/generate_url");
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 \"format\": \"mp3\",\n \"quality\": \"high\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"format\": \"mp3\",\n \"quality\": \"high\"\n}")
val request = Request.Builder()
.url("https://api.videodb.io/audio/{audio_id}/generate_url")
.post(body)
.addHeader("x-access-token", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"success": true,
"data": {
"stream_url": "https://stream.videodb.io/a/12345"
}
}Generate shareable URLs for streaming or downloading audio files.
import videodb
conn = videodb.connect(api_key="your_api_key")
coll = conn.get_collection()
audio = coll.get_audio("a-abc123def")
# Generate download/streaming URL
url = audio.generate_url()
print(f"Audio URL: {url}")
# https://cdn.videodb.io/v3/{collection}/{audio}.mp3
import { connect } from 'videodb';
const conn = connect({ apiKey: 'your_api_key' });
const coll = await conn.getCollection();
const audio = await coll.getAudio("a-abc123def");
// Generate download/streaming URL
const url = await audio.generateUrl();
console.log(`Audio URL: ${url}`);
// https://cdn.videodb.io/v3/{collection}/{audio}.mp3
- URLs are CDN-hosted and can be shared directly
- Format is MP3 or original audio format
- URLs remain valid for extended periods
- Useful for embedding in web players or sending via email
Streams and Exports
Learn about generating URLs and streaming options
Get Audio Details
Retrieve audio metadata before generating URLs
Authorizations
API key for authentication (sk-xxx format)
Path Parameters
Pattern:
^a-Example:
"a-12345"
Body
application/json
⌘I