curl --request GET \
--url https://api.budgetpixel.com/v1/stock/music \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.budgetpixel.com/v1/stock/music"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.budgetpixel.com/v1/stock/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.budgetpixel.com/v1/stock/music",
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.budgetpixel.com/v1/stock/music"
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.budgetpixel.com/v1/stock/music")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/stock/music")
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{
"credits_charged": 10,
"data": [
{
"ai_generated": true,
"attribution": {
"html": "<string>",
"required": true,
"text": "“Heavy Rain Thunder” by BudgetPixel AI (https://budgetpixel.com/sfx/heavy-rain-thunder-3d04cdea) — CC BY 4.0"
},
"category": "<string>",
"channels": 2,
"created_at": "2023-11-07T05:31:56Z",
"downloads": 123,
"duration_seconds": 6.037,
"format": "wav",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"keywords": [
"<string>"
],
"license": {
"code": "CC-BY-4.0",
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"model": "<string>",
"page_url": "https://budgetpixel.com/sfx/heavy-rain-thunder-3d04cdea",
"prompt": "<string>",
"quality_score": 123,
"sample_rate": 44100,
"size_bytes": 123,
"tags": [
"<string>"
],
"title": "Heavy Rain Thunder",
"type": "sound_effect",
"urls": {
"cover": "<string>",
"original": "<string>"
}
}
],
"has_more": true,
"limit": 123,
"object": "list",
"offset": 123,
"total": 123
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Search free stock music
Search BudgetPixel’s free background music library (the tracks at budgetpixel.com/background-music): AI-generated instrumental beds for videos, podcasts, streams and apps — lofi, corporate, cinematic, acoustic, electronic and more, each listened to and scored before it is listed. Tracks are instrumental, up to about a minute long, mostly WAV. Search only — nothing is generated when a query comes up empty. To make a track to order (a set length, lyrics, a soundtrack for a video), use the music generation endpoints (paid plans).
Plans. Available on every plan, including Free. The stock searches (images, sound effects, music) are the only endpoints a Free plan’s API key can call.
Pricing. 10 credits per search, charged when the search succeeds,
including a search that matches nothing. Invalid parameters are refused with a
400 and cost nothing. POST /v1/cost with {"model": "stock-music-search"}
quotes the price (on paid plans).
Licence. Every track is licensed
CC BY 4.0: commercial use, editing
and client work are allowed with credit. Each result carries a ready-made credit
line (attribution.text, or attribution.html for web pages) that meets the
licence. Put it in the video description, credits or page where the audio is used.
How the search matches. Name the sound in a few plain words. Every word
counts: a result must carry most of what you asked for, rare words weigh more
than common ones, and a word the library does not have counts as a miss. Word
forms are matched (ticking finds tick). Results that match more of your
words come first, then the more popular. A long description returns the items
it names, or nothing; it does not return items that only share its adjectives.
Besides the standard /v1 limits, sound-effect and music searches together are
capped at 60 per minute per account.
curl --request GET \
--url https://api.budgetpixel.com/v1/stock/music \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.budgetpixel.com/v1/stock/music"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.budgetpixel.com/v1/stock/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.budgetpixel.com/v1/stock/music",
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.budgetpixel.com/v1/stock/music"
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.budgetpixel.com/v1/stock/music")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/stock/music")
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{
"credits_charged": 10,
"data": [
{
"ai_generated": true,
"attribution": {
"html": "<string>",
"required": true,
"text": "“Heavy Rain Thunder” by BudgetPixel AI (https://budgetpixel.com/sfx/heavy-rain-thunder-3d04cdea) — CC BY 4.0"
},
"category": "<string>",
"channels": 2,
"created_at": "2023-11-07T05:31:56Z",
"downloads": 123,
"duration_seconds": 6.037,
"format": "wav",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"keywords": [
"<string>"
],
"license": {
"code": "CC-BY-4.0",
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"model": "<string>",
"page_url": "https://budgetpixel.com/sfx/heavy-rain-thunder-3d04cdea",
"prompt": "<string>",
"quality_score": 123,
"sample_rate": 44100,
"size_bytes": 123,
"tags": [
"<string>"
],
"title": "Heavy Rain Thunder",
"type": "sound_effect",
"urls": {
"cover": "<string>",
"original": "<string>"
}
}
],
"has_more": true,
"limit": 123,
"object": "list",
"offset": 123,
"total": 123
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Authorizations
API key as a bearer token: Authorization: Bearer bpx_live_xxx
Query Parameters
The genre, mood or use, in a few plain words, e.g. lofi study, upbeat corporate, dark true crime documentary. Up to 200 characters. Omit to browse.
200Shortest track to return, in seconds.
x <= 600Longest track to return, in seconds.
x <= 600popular (default — with a query, best matches first), newest, or top (highest rated).
popular, newest, top 1 <= x <= 20Results to skip. The next page is offset + limit; each page is a new search.
0 <= x <= 5000Response
Matching tracks.