Songpot API Documentation
Welcome to the Songpot Tagging and Search API. Build advanced music search and discovery features into your applications.
What is Songpot?
Songpot provides state-of-the-art AI-powered music analysis and search, including:
- Automatic Music Tagging - Genre, mood, and instrument classification
- Music Captioning - Music description in natural language
- BPM & Key Detection - Precise musical attributes
- Semantic Search - Find music by describing what you need
- Audio Matching - Find similar tracks by audio
- Video-to-Audio Search - Find the perfect soundtrack for your video content
Quick Links
| Section | Description |
|---|---|
| Getting Started | Set up authentication and make your first request |
| Audio Tagging and Captioning | Analyze audio files for tags and captions |
| Text Search | Search your music library with text |
| Audio Similarity Search | Find similar tracks by audio |
| Video Search | Match music to video content |
| Reference | Supported formats, filters, and error codes |
Getting Started
Get Your API Key
- Sign in at songpot.ai
- Click your profile and go to Settings
- Select the API Keys tab
- Click Create Key and copy your key
Base URL
https://api.songpot.space/api/v1Authentication
All API requests require authentication using an API key:
curl https://api.songpot.space/api/v1/tracks \ -H "X-API-Key: songpot_live_YOUR_KEY_HERE"Your First Request
List your uploaded tracks:
curl https://api.songpot.space/api/v1/tracks \ -H "X-API-Key: songpot_live_YOUR_KEY_HERE"Response:
{ "total": 42, "page": 1, "per_page": 20, "tracks": [ { "id": "abc123", "name": "Summer Vibes", "duration": 185.4, "bpm": 124.0, "key": "cMajor" } ]}Get Track Details
For full metadata, request a specific track:
curl https://api.songpot.space/api/v1/tracks/abc123 \ -H "X-API-Key: songpot_live_YOUR_KEY_HERE"Response:
{ "track": { "id": "abc123", "name": "Summer Vibes", "bpm": 124.0, "key": "cMajor", "duration": 185.4, "vocal_gender": "Female", "genres": ["Electronic", "Pop", "House"], "moods": ["Energetic", "Happy"], "instruments": ["Synths", "Drums"], "description": "Upbeat electronic track with tropical vibes", "created_at": "2026-01-15T10:30:00Z" }}API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/v1/tracks | GET | List your tracks |
/api/v1/tracks/{id} | GET | Get track details |
/api/v1/tracks/{id}/similar-audio | GET | Get most similar tracks in library |
/api/v1/search | GET | Search with text and filters |
/api/v1/search-by-audio | GET | Find similar tracks by audio |
/api/v1/search-by-video | POST | Find matching tracks by video |
Rate Limits
| Tier | Requests/Hour | Daily Uploads |
|---|---|---|
| Free | 100 | 15 |
| Pro | 1,000 | 100 |
| Enterprise | 10,000 | Unlimited |
Every response includes rate limit headers:
X-RateLimit-Limit: 100X-RateLimit-Remaining: 85X-RateLimit-Reset: 1703000000Code Examples
Python
import requests
API_KEY = "songpot_live_YOUR_KEY_HERE"BASE_URL = "https://api.songpot.space/api/v1"
headers = {"X-API-Key": API_KEY}
# List tracksresponse = requests.get(f"{BASE_URL}/tracks", headers=headers)tracks = response.json()["tracks"]
# Search for upbeat music with filtersresponse = requests.get( f"{BASE_URL}/search", params={"q": "upbeat summer", "moods": "Energetic", "genres": "Pop"}, headers=headers)results = response.json()
# Natural language search (semantic search is automatic fallback)response = requests.get( f"{BASE_URL}/search", params={"q": "relaxing piano for studying"}, headers=headers)results = response.json()# results["search_method"] will be "semantic" if AI search was usedJavaScript
const API_KEY = 'songpot_live_YOUR_KEY_HERE';const BASE_URL = 'https://api.songpot.space/api/v1';
const headers = { 'X-API-Key': API_KEY };
// List tracksconst tracks = await fetch(`${BASE_URL}/tracks`, { headers }) .then(res => res.json());
// Search for upbeat music with filtersconst searchParams = new URLSearchParams({ q: 'upbeat summer', moods: 'Energetic', genres: 'Pop'});
const results = await fetch(`${BASE_URL}/search?${searchParams}`, { headers }) .then(res => res.json());
// Natural language search (semantic search is automatic fallback)const nlParams = new URLSearchParams({ q: 'relaxing piano for studying'});
const nlResults = await fetch(`${BASE_URL}/search?${nlParams}`, { headers }) .then(res => res.json());Next Steps
- Tag and caption audio files
- Search your music library
- Find similar tracks with audio similarity search
- Match music to videos
- View supported formats and filters
Support
Need help? Contact us:
- Email: hello@songpot.art