Quickstart
Get from zero to your first API response in under 5 minutes. Create a free account to get an API key — no credit card required.
1. Get your API key
After signing up, your API key is available immediately on your dashboard. All requests must include your key in the x-api-key header.
2. Make your first request
curl https://api.sonovault.io/v1/tracks/search \-H "x-api-key: YOUR_API_KEY" \-G -d "artist=Daft Punk" \-d "title=One More Time"
Authentication
All API requests require a valid API key passed in the x-api-key header.
x-api-key,: ,bvk_live_xxxxxxxxxxxxxxxxxx
Test keys prefixed bvk_test_ return mocked data. Live keys prefixed bvk_live_ hit the real database.
Rate limits
Rate limits are enforced per API key on a rolling 60-second window. If you exceed your limit, requests return 429 Too Many Requests.
| Tier | Requests/month | Burst (per 60s) |
|---|---|---|
| Free | 1,000 | 20 |
| Starter | 50,000 | 60 |
| Growth | 500,000 | 300 |
| Scale | 5,000,000 | 1,000 |
Chart endpoints return up to 200 entries per call but count as one request against both the monthly quota and burst counter.
Rate limit headers are returned on every response: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset.
Errors
All errors follow a consistent JSON structure:
{"error": {"code": "not_found","message": "No track found matching the provided parameters","status": 404}}
| Status | Code | Description |
|---|---|---|
| 400 | bad_request | Missing or invalid parameters. |
| 401 | unauthorized | Missing or invalid API key. |
| 403 | forbidden | Your plan doesn't include this endpoint. |
| 404 | not_found | No matching track or resource. |
| 429 | rate_limited | Rate limit exceeded. |
| 500 | server_error | Unexpected server error. |
Track search
Fuzzy search for tracks by artist and title. Returns BPM, key, ISRC, and full metadata.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| artist | string | required | Artist name. |
| title | string | required | Track title. |
| limit | integer | optional | Max results, 1–1000. Default 20. |
| cursor | string | optional | Cursor from previous response for pagination. |
| source | integer | optional | Filter by source: 0 (Spotify), 1 (Beatport), 2 (Discogs), 3 (MusicBrainz). |
| include | string[] | optional | Extra fields: label, releaseDate, artwork, genres, energy, popularity, platforms. |
ISRC lookup
Exact lookup by ISRC code. Returns full track detail including genres and cross-platform links.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| isrc | string | required | ISRC code (e.g. GBDUW0000053). |
Platform links
Lightweight cross-platform ID resolver. Given an ISRC or a source-specific ID, returns all known external platform links.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| isrc | string | optional | ISRC code. Provide one lookup param at a time. |
| spotify | string | optional | Spotify track ID. |
| beatport | string | optional | Beatport track ID. |
| discogs | string | optional | Discogs release ID. |
| musicbrainz | string | optional | MusicBrainz recording ID. |
| applemusic | string | optional | Apple Music track ID. |
Provide exactly one lookup parameter per request: isrc, spotify, beatport, discogs, musicbrainz, or applemusic.
Charts
Get chart tracks with full track data including artists, BPM, key, and genres. Charts are updated daily from Beatport, Apple Music, Billboard, and Shazam.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| source | string | required | beatport, applemusic, billboard, shazam-global, shazam-local. |
| chartType | string | required | e.g. top100, hype100, hot100, top200. |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| genre | string | optional | Source-specific genre name (e.g. House, Pop). |
| country | string | optional | ISO 3166-1 alpha-2 code (e.g. US, GB). |
| date | string | optional | YYYY-MM-DD. Defaults to latest available. |
| limit | integer | optional | 1–200. Default 100. |
New releases
Paginated feed of releases ordered by release date (newest first).
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | 1–100. Default 20. |
| cursor | string | optional | Cursor from previous response for pagination. |
// Click "Run request" to see a response