Get Music Purposes
curl --request GET \
--url https://api.pictory.ai/pictoryapis/v1/music/purposes \
--header 'Authorization: <authorization>'import requests
url = "https://api.pictory.ai/pictoryapis/v1/music/purposes"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.pictory.ai/pictoryapis/v1/music/purposes', 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.pictory.ai/pictoryapis/v1/music/purposes",
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: <authorization>"
],
]);
$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.pictory.ai/pictoryapis/v1/music/purposes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.pictory.ai/pictoryapis/v1/music/purposes")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/music/purposes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body[
"TV Theme",
"Heroic",
"Nature / Beauty",
"Action",
"Adventure",
"Comedy",
"Drama",
"Fantasy",
"Horror",
"Shopping",
"Sports",
"Thriller",
"Wedding",
"80s",
"Educational",
"News / Current Affairs",
"On-Hold",
"Road Trip",
"Sci-Fi",
"Time Lapse",
"Aerobics / Fitness",
"Atmospheric",
"Branding / Identity",
"Corporate / Business",
"Children / Preschool",
"Crime",
"Landscape / Panorama",
"Mystery / Tension",
"Nightclub",
"Technology",
"Slow-Mo",
"War / Military",
"Western / Cowboy",
"Bollywood",
"Historical / Period",
"Real Estate",
"Christmas",
"Surfing",
"Detective / Spy",
"Dramedy",
"Game Show",
"50s",
"60s",
"70s",
"Chase Sequence",
"Elevator Music",
"Exotic",
"Failure / Defeat",
"Fairytale",
"Fanfare",
"Frantic / Busy",
"Futuristic",
"Lullaby",
"Luxury",
"Retro",
"Romantic Comedy",
"Sex / Erotic",
"Lazy / Plodding",
"Space / Cosmos",
"Success / Victory",
"Superhero",
"Swampy / Outback",
"Tribal",
"Magical / Supernatural",
"Simple / Minimal",
"Adrenaline",
"Evil / Villainous",
"Religious / Church",
"Theatre / Showtunes",
"Regal / Royal",
"Circus / Carnival",
"Tropical",
"Fashion / Beauty",
"Animation / Explainer",
"Trailer / Promo",
"Yoga / Relaxation",
"Meditation"
]
{
"message": "Unauthorized"
}
Music Search
Get Music Purposes
Retrieve a list of available music purposes for filtering and searching music tracks
GET
/
pictoryapis
/
v1
/
music
/
purposes
Get Music Purposes
curl --request GET \
--url https://api.pictory.ai/pictoryapis/v1/music/purposes \
--header 'Authorization: <authorization>'import requests
url = "https://api.pictory.ai/pictoryapis/v1/music/purposes"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.pictory.ai/pictoryapis/v1/music/purposes', 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.pictory.ai/pictoryapis/v1/music/purposes",
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: <authorization>"
],
]);
$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.pictory.ai/pictoryapis/v1/music/purposes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.pictory.ai/pictoryapis/v1/music/purposes")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/music/purposes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body[
"TV Theme",
"Heroic",
"Nature / Beauty",
"Action",
"Adventure",
"Comedy",
"Drama",
"Fantasy",
"Horror",
"Shopping",
"Sports",
"Thriller",
"Wedding",
"80s",
"Educational",
"News / Current Affairs",
"On-Hold",
"Road Trip",
"Sci-Fi",
"Time Lapse",
"Aerobics / Fitness",
"Atmospheric",
"Branding / Identity",
"Corporate / Business",
"Children / Preschool",
"Crime",
"Landscape / Panorama",
"Mystery / Tension",
"Nightclub",
"Technology",
"Slow-Mo",
"War / Military",
"Western / Cowboy",
"Bollywood",
"Historical / Period",
"Real Estate",
"Christmas",
"Surfing",
"Detective / Spy",
"Dramedy",
"Game Show",
"50s",
"60s",
"70s",
"Chase Sequence",
"Elevator Music",
"Exotic",
"Failure / Defeat",
"Fairytale",
"Fanfare",
"Frantic / Busy",
"Futuristic",
"Lullaby",
"Luxury",
"Retro",
"Romantic Comedy",
"Sex / Erotic",
"Lazy / Plodding",
"Space / Cosmos",
"Success / Victory",
"Superhero",
"Swampy / Outback",
"Tribal",
"Magical / Supernatural",
"Simple / Minimal",
"Adrenaline",
"Evil / Villainous",
"Religious / Church",
"Theatre / Showtunes",
"Regal / Royal",
"Circus / Carnival",
"Tropical",
"Fashion / Beauty",
"Animation / Explainer",
"Trailer / Promo",
"Yoga / Relaxation",
"Meditation"
]
{
"message": "Unauthorized"
}
Overview
Retrieve a comprehensive list of available music purposes for filtering and searching music tracks. Use these purpose values to find music that matches the specific use case, context, or application of your video content.You need a valid API key to use this endpoint. Get your API key from the API Access page in your Pictory dashboard.
API Endpoint
GET https://api.pictory.ai/pictoryapis/v1/music/purposes
Request Parameters
Headers
API key for authentication (starts with
pictai_)Authorization: YOUR_API_KEY
Response
Array of available music purpose names. Each purpose represents a distinct use case, context, or application scenario for filtering music tracks in search queries.
Response Examples
[
"TV Theme",
"Heroic",
"Nature / Beauty",
"Action",
"Adventure",
"Comedy",
"Drama",
"Fantasy",
"Horror",
"Shopping",
"Sports",
"Thriller",
"Wedding",
"80s",
"Educational",
"News / Current Affairs",
"On-Hold",
"Road Trip",
"Sci-Fi",
"Time Lapse",
"Aerobics / Fitness",
"Atmospheric",
"Branding / Identity",
"Corporate / Business",
"Children / Preschool",
"Crime",
"Landscape / Panorama",
"Mystery / Tension",
"Nightclub",
"Technology",
"Slow-Mo",
"War / Military",
"Western / Cowboy",
"Bollywood",
"Historical / Period",
"Real Estate",
"Christmas",
"Surfing",
"Detective / Spy",
"Dramedy",
"Game Show",
"50s",
"60s",
"70s",
"Chase Sequence",
"Elevator Music",
"Exotic",
"Failure / Defeat",
"Fairytale",
"Fanfare",
"Frantic / Busy",
"Futuristic",
"Lullaby",
"Luxury",
"Retro",
"Romantic Comedy",
"Sex / Erotic",
"Lazy / Plodding",
"Space / Cosmos",
"Success / Victory",
"Superhero",
"Swampy / Outback",
"Tribal",
"Magical / Supernatural",
"Simple / Minimal",
"Adrenaline",
"Evil / Villainous",
"Religious / Church",
"Theatre / Showtunes",
"Regal / Royal",
"Circus / Carnival",
"Tropical",
"Fashion / Beauty",
"Animation / Explainer",
"Trailer / Promo",
"Yoga / Relaxation",
"Meditation"
]
{
"message": "Unauthorized"
}
Code Examples
Replace
YOUR_API_KEY with your actual API key that starts with pictai_curl --request GET \
--url https://api.pictory.ai/pictoryapis/v1/music/purposes \
--header 'Authorization: YOUR_API_KEY' \
--header 'accept: application/json' | python -m json.tool
import requests
url = "https://api.pictory.ai/pictoryapis/v1/music/purposes"
headers = {
"Authorization": "YOUR_API_KEY",
"accept": "application/json"
}
response = requests.get(url, headers=headers)
purposes = response.json()
# Print all available purposes
for purpose in purposes:
print(purpose)
const response = await fetch(
'https://api.pictory.ai/pictoryapis/v1/music/purposes',
{
method: 'GET',
headers: {
'Authorization': 'YOUR_API_KEY',
'accept': 'application/json'
}
}
);
const purposes = await response.json();
console.log('Available purposes:', purposes);
Usage Notes
Use these exact purpose values when searching for music to ensure valid selection from available categories. Purpose values are case-sensitive and must match exactly as returned by this endpoint.
Purpose Diversity: The API provides 74 distinct purpose options spanning various contexts, from media types (TV Theme, Animation/Explainer, Trailer/Promo) to genres (Action, Comedy, Horror) to specific applications (Corporate/Business, Wedding, Real Estate), enabling precise matching of music to your video’s intended use and context.
Common Use Cases
1. Populate a Purpose Selector
Fetch all available purposes to populate a dropdown or selection interface in your application:purposes = requests.get(
"https://api.pictory.ai/pictoryapis/v1/music/purposes",
headers={"Authorization": "YOUR_API_KEY"}
).json()
# Use purposes to populate UI dropdown
purpose_options = [{"label": purpose, "value": purpose} for purpose in purposes]
2. Categorize Purposes by Context
Organize purposes into logical categories for simplified user selection:const response = await fetch('https://api.pictory.ai/pictoryapis/v1/music/purposes', {
headers: { 'Authorization': 'YOUR_API_KEY' }
});
const purposes = await response.json();
// Categorize by type
const mediaGenres = purposes.filter(p =>
['Action', 'Adventure', 'Comedy', 'Drama', 'Fantasy', 'Horror', 'Thriller', 'Sci-Fi'].includes(p)
);
const businessPurposes = purposes.filter(p =>
p.includes('Corporate') || p.includes('Business') || p.includes('Branding') ||
p.includes('Real Estate') || p.includes('Technology')
);
const timePerods = purposes.filter(p =>
['50s', '60s', '70s', '80s', 'Retro', 'Futuristic', 'Historical / Period'].includes(p)
);
const videoPurposes = purposes.filter(p =>
p.includes('Animation') || p.includes('Trailer') || p.includes('Time Lapse') ||
p.includes('Slow-Mo') || p.includes('Explainer')
);
const eventPurposes = purposes.filter(p =>
['Wedding', 'Christmas', 'Circus / Carnival', 'Game Show'].includes(p)
);
const wellnessPurposes = purposes.filter(p =>
p.includes('Yoga') || p.includes('Meditation') || p.includes('Relaxation') ||
p.includes('Aerobics') || p.includes('Fitness')
);
3. Validate User Input
Ensure user-selected purposes are valid before using them in music search requests:valid_purposes = requests.get(
"https://api.pictory.ai/pictoryapis/v1/music/purposes",
headers={"Authorization": "YOUR_API_KEY"}
).json()
user_purpose = "Corporate / Business"
if user_purpose in valid_purposes:
# Proceed with music search using this purpose
print(f"Searching for {user_purpose} music...")
else:
print("Invalid purpose selected")
4. Build Multi-Category Purpose Filter
Create a categorized purpose filter for intuitive music discovery:import requests
purposes = requests.get(
"https://api.pictory.ai/pictoryapis/v1/music/purposes",
headers={"Authorization": "YOUR_API_KEY"}
).json()
# Organize by category
categories = {
"Film & TV": [p for p in purposes if any(x in p for x in ['TV Theme', 'Action', 'Adventure', 'Comedy', 'Drama', 'Fantasy', 'Horror', 'Thriller', 'Sci-Fi', 'Western', 'Detective', 'Spy'])],
"Business & Corporate": [p for p in purposes if any(x in p for x in ['Corporate', 'Business', 'Branding', 'Identity', 'Technology', 'Real Estate', 'Educational', 'News'])],
"Video Production": [p for p in purposes if any(x in p for x in ['Animation', 'Explainer', 'Trailer', 'Promo', 'Time Lapse', 'Slow-Mo'])],
"Events & Occasions": [p for p in purposes if any(x in p for x in ['Wedding', 'Christmas', 'Circus', 'Carnival', 'Game Show', 'Shopping'])],
"Time Periods": [p for p in purposes if p in ['50s', '60s', '70s', '80s', 'Retro', 'Historical / Period', 'Futuristic']],
"Wellness & Lifestyle": [p for p in purposes if any(x in p for x in ['Yoga', 'Meditation', 'Relaxation', 'Aerobics', 'Fitness', 'Fashion', 'Beauty', 'Luxury'])],
"Moods & Emotions": [p for p in purposes if any(x in p for x in ['Heroic', 'Success', 'Victory', 'Failure', 'Defeat', 'Adrenaline', 'Romantic', 'Lullaby'])],
"Nature & Places": [p for p in purposes if any(x in p for x in ['Nature', 'Beauty', 'Landscape', 'Panorama', 'Space', 'Cosmos', 'Tropical', 'Swampy', 'Outback'])],
"Cultural & Regional": [p for p in purposes if any(x in p for x in ['Bollywood', 'Western', 'Cowboy', 'Religious', 'Church', 'Tribal', 'Exotic'])],
"Special Applications": [p for p in purposes if any(x in p for x in ['On-Hold', 'Elevator', 'Nightclub', 'Road Trip', 'Surfing', 'Chase Sequence'])]
}
for category, purpose_list in categories.items():
print(f"\n{category}:")
for purpose in sorted(purpose_list):
print(f" - {purpose}")
5. Smart Purpose Recommendation
Suggest relevant purposes based on video content analysis:async function recommendPurposes(videoKeywords) {
const response = await fetch(
'https://api.pictory.ai/pictoryapis/v1/music/purposes',
{ headers: { 'Authorization': 'YOUR_API_KEY' } }
);
const allPurposes = await response.json();
// Map keywords to relevant purposes
const keywordMappings = {
'office': ['Corporate / Business', 'Technology', 'Educational'],
'wedding': ['Wedding', 'Romantic Comedy', 'Fashion / Beauty'],
'product': ['Branding / Identity', 'Corporate / Business', 'Shopping'],
'fitness': ['Aerobics / Fitness', 'Sports', 'Yoga / Relaxation'],
'travel': ['Road Trip', 'Adventure', 'Landscape / Panorama'],
'children': ['Children / Preschool', 'Fairytale', 'Animation / Explainer'],
'tech': ['Technology', 'Futuristic', 'Corporate / Business'],
'luxury': ['Luxury', 'Fashion / Beauty', 'Regal / Royal'],
'nature': ['Nature / Beauty', 'Landscape / Panorama', 'Time Lapse']
};
const recommendations = new Set();
videoKeywords.forEach(keyword => {
const mapped = keywordMappings[keyword.toLowerCase()];
if (mapped) {
mapped.forEach(purpose => {
if (allPurposes.includes(purpose)) {
recommendations.add(purpose);
}
});
}
});
return Array.from(recommendations);
}
// Example usage
const suggestions = await recommendPurposes(['office', 'tech', 'product']);
console.log('Recommended purposes:', suggestions);
// Output: ['Corporate / Business', 'Technology', 'Branding / Identity', ...]
6. Filter by Time Period
Create a dedicated filter for era-specific music:def get_time_period_purposes(api_key):
"""
Extract time period-specific purposes for historical or retro content
"""
headers = {"Authorization": api_key}
all_purposes = requests.get(
"https://api.pictory.ai/pictoryapis/v1/music/purposes",
headers=headers
).json()
time_periods = {
"Classic Eras": ['50s', '60s', '70s', '80s'],
"Historical": ['Historical / Period', 'Western / Cowboy'],
"Retro & Vintage": ['Retro', 'Bollywood'],
"Future": ['Futuristic', 'Sci-Fi', 'Space / Cosmos']
}
filtered_periods = {}
for category, keywords in time_periods.items():
filtered_periods[category] = [
p for p in all_purposes
if p in keywords
]
return filtered_periods
# Example usage
periods = get_time_period_purposes("YOUR_API_KEY")
for category, purposes in periods.items():
print(f"{category}: {', '.join(purposes)}")
Was this page helpful?
⌘I
