Changelog

What's new at MusiMap

Every notable change across our Web API, SDKs and platform — in one feed. Filter by area if you only care about one of them.

April 2026

Batch tagging endpoint

You can now submit up to 50 tracks in a single request via POST /v1/tagging/batch. Median latency drops from 450 ms per track to ~180 ms, and batch responses include a per-track error code so partial failures don't fail the whole call.
API reference Python example

Correct retry handling on 429 responses

The SDK was retrying 429 Too Many Requests without honouring the Retry-After header, causing request storms against your own quota. It now waits exactly what the API tells it to.
Release on PyPI

Deprecating GET /v1/legacy/tagging

The legacy tagging endpoint will be removed on July 31, 2026. Move to POST /v1/tagging which accepts the same audio_url parameter and returns a richer payload (confidence scores, sub-genres). Automated clients calling the legacy path will receive a Sunset HTTP header as a heads-up.
Migration guide

First public release of the JavaScript / TypeScript SDK

Available on npm as @musimap/sdk. Works in Node 18+, Bun, Deno, and modern browsers. Full TypeScript types generated from our OpenAPI spec.
npm package Getting started

Dashboard usage charts now update in near-real-time

Credit consumption charts on your dashboard previously refreshed every 10 minutes. They now update within ~15 seconds so you can correlate spikes with deployments.
March 2026

Renamed track_id to track_uri across all endpoints

The response field track_id (which was never actually an ID — it was a URI) is now consistently called track_uri. The old field is still emitted alongside for 90 days but is marked deprecated and will be removed in v1.13.0. Only affects clients reading that specific field.
Changelog entry Migration guide

Async client (AsyncMusimap)

Full asyncio support via a new AsyncMusimap class with the same API as the sync client. Uses httpx under the hood and benchmarks ~3× faster than the sync client for fan-out workloads.
Async quickstart

Fingerprinting returns a cover-song confidence score

Matches now include a cover_confidence field (0–1) estimating the likelihood that the match is a cover of the original recording rather than the original itself. Useful for royalty-routing workflows.

Rotated API signing keys

As part of our quarterly rotation policy we rotated the signing keys used for webhooks and download URLs. If you validate our signatures locally, refresh the key set from /v1/.well-known/jwks.json.

Correct Content-Type detection for .wav uploads

Some .wav files produced by Logic Pro were being rejected as application/octet-stream. We now inspect the file header instead of trusting the uploaded content type.
February 2026

Typed response models everywhere

Every endpoint now returns a pydantic model instead of a raw dict, so your IDE autocompletes response.track.genres properly. Dict access remains available for backward compatibility.

Profiling accepts Spotify and Deezer URIs

You can now send spotify:track:... or deezer:track:... URIs directly to POST /v1/profiling. We resolve them to audio on our side.
Supported URI schemes

/v0/* endpoints will be removed on June 30, 2026

All v0 endpoints have had a v1 counterpart for over 18 months. We'll shut them off on June 30, 2026. If you're unsure whether you still use them, check your dashboard's Usage by version chart.
Upgrade checklist

Tagging p95 latency reduced by ~40%

Infrastructure-level changes (new GPU class, faster model weights loading) brought p95 latency on POST /v1/tagging from 1.4s to 820ms, with no change to the output format.

Stay in the loop

Follow the changelog via RSS or JSON feed, or subscribe by email. We post once or twice a month — no marketing noise.