The Spotify
Audio Features
API, rebuilt.
Float-precision BPM, musical key, mood, and song structure — powered by real DSP,
not cached Echo Nest metadata. The /v1/compat/spotify shim returns
identical JSON. Change one URL. Keep your parsing code.
// Deprecated 27 Nov 2024
{
"error": {
"status": 410,
"message": "This endpoint is no
longer available."
}
}
{
"tempo": 116.01,
"key": "B",
"mode": "minor",
"camelot": "10A",
"energy": 0.72,
"danceability": 0.81,
"_meta": { "cache": "hit", "credits_used": 0 }
}
Why TuneLab, not Spotify
Everything their API did. Plus what they never built.
Real DSP, not cached metadata
Spotify served cached Echo Nest values from a database frozen in 2014. We run ONNX models on the actual audio. Your tempo is 116.01, not 116. Key detection with confidence scores. Segmentation computed per-request.
Alive in production
Spotify's audio-features endpoint returned 410 GONE on November 27, 2024. TuneLab v1 has been live since day one with a public changelog. We will tell you before we break anything — no silent deprecations.
Drop-in Spotify shim
/v1/compat/spotify/audio-features/{id} returns the exact same
JSON schema — field names, value ranges, even analysis_url.
Change one URL. Keep the rest of your code. Migration in under an hour.
Fields Spotify never had
Camelot wheel keys for DJs. Beat grid with frame-level downbeats. Structural boundaries (intro · verse · chorus · drop · outro). MAEST-trained mood embeddings. Similar-track nearest-neighbour search.
Transparent pricing
Credit-based. Cache hits are free. Every response tells you
credits_used. No surprise billing, no tier-locked endpoints.
Start with 100 free credits — no card required.
Your audio is yours
Uploaded audio deleted immediately after processing. We never train on your payloads. GDPR-compliant by design, with SLA and data-export on request. See our trust & compliance page.
Migration
Replace Spotify in one line of code.
The compatibility shim returns Spotify's exact JSON schema — same field names, same value ranges, same pagination. Change the base URL and auth header. Your existing parsing code keeps working.
// Deprecated November 2024
const r = await fetch(
"https://api.spotify.com/v1/" +
"audio-features/" + trackId,
{ headers: {
Authorization: "Bearer " + token
}}
);
const features = await r.json();
// { tempo, key, mode, energy, ... }
// Live in production
const r = await fetch(
"https://api.tunelab.dev/v1/compat/" +
"spotify/audio-features/" + trackId,
{ headers: {
Authorization: "Bearer " + tlKey
}}
);
const features = await r.json();
// { tempo, key, mode, energy, ... } ← same schema
Every Spotify audio-features field is present with the same name, type, and range. Extra TuneLab fields live under a _meta key so your existing parsing code never breaks on an unexpected property.
Migrate in an hour.
Not a quarter.
100 free credits. No card required. All endpoints unlocked. Test key and live key in the dashboard. Our quickstart has you at a 200 OK in about 90 seconds.