Skip to main content

sonovault

CI PyPI

Python client for the SonoVault music metadata API. 93M+ tracks with ISRC, ISWC, genre, record label, canonical release dates, and cross-platform IDs for Spotify, Apple Music, Tidal, Beatport, Discogs, and MusicBrainz. One call resolves them all.

  • One key, no OAuth. A single x-api-key header, no approval queue.
  • Free tier. 1,000 requests/month, no credit card: get an API key.
  • Docs. Full API reference at sonovault.now/docs.

Install

pip install sonovault

Python 3.9+.

Quickstart

from sonovault import SonoVault

sv = SonoVault(api_key="YOUR_API_KEY")

# Find a track's ISRC from artist + title
page = sv.tracks.search(artist="Daft Punk", title="One More Time")
track = page["results"][0]
print(track["isrc"])   # "GBDUW0000053"
print(track["genre"], track["releases"][0]["label"]["name"])

# An album's tracklist, in playing order
release = sv.releases.get(7)
for t in release["tracks"]:
    print(t["disc_number"], t["track_number"], t["title"])  # 1 1 One More Time

# One record groups every edition of an album, so pick the one you mean
for e in release["editions"]:
    print(e["id"], e["format"], e["release_date"], e["track_count"])  # 16216 cd 2001-03-12 14
deluxe = sv.releases.get(7, edition=16216)

# Resolve that ISRC to its ID on every platform
links = sv.tracks.links(isrc=track["isrc"])
for link in links["links"]:
    print(link["source"], link["url"])  # spotify https://open.spotify.com/track/...

# Recording to composition (ISWC), for royalty and publishing workflows
work = sv.tracks.iswc(isrc=track["isrc"])

# What a label released on one day (from_ / until are inclusive YYYY-MM-DD)
friday = sv.labels.releases(1, from_="2026-09-11", until="2026-09-11")

Bulk resolve

Resolve up to 100 lines in one request: track names, ISRCs, or platform IDs. Useful for enriching play logs and library exports.

batch = sv.tracks.resolve(
    input_type="track_name",
    items=[
        {"artist": "Daft Punk", "title": "Harder, Better, Faster, Stronger"},
        {"artist": "Daft Punk", "title": "Around the World"},
    ],
)
for row in batch["results"]:
    print(row["status"], row["track"] and row["track"]["isrc"])

Pagination

List endpoints return {"results": [...], "next_cursor": ...}. Pass the cursor back for the next page. next_cursor is None on the last page.

from sonovault import paginate

for release in paginate(lambda cursor: sv.artists.releases(42, cursor=cursor)):
    print(release["title"])

Or walk the cursor yourself:

cursor = None
while True:
    page = sv.artists.releases(42, cursor=cursor)
    # ...use page["results"]
    cursor = page.get("next_cursor")
    if not cursor:
        break

Error handling

Non-2xx responses raise SonoVaultError:

from sonovault import SonoVaultError

try:
    sv.tracks.browse(genre="House")  # paid-tier endpoint
except SonoVaultError as err:
    print(err.status, err.is_forbidden, err)

Rate-limited responses that carry a Retry-After header are retried automatically. The default is 2 retries, configurable with max_retries.

Examples

Runnable scripts live in examples/: find an ISRC, resolve cross-platform links, enrich a play log, follow live stream events over SSE, and verify webhook deliveries.

API coverage

Namespace Methods
sv.tracks search, get, by_isrc, iswc, by_iswc, links, resolve, identify_audio, browse
sv.artists search, get, releases
sv.labels search, get, releases, artists
sv.releases search, get, latest
sv.genres list
sv.suggestions submit, list
sv.streams create, list, get, update, history, report, live, stop
sv.webhooks create, list, get, update, delete, test, deliveries

Some endpoints (audio identify, browse, stream monitoring) need a paid tier. See pricing. Everything else works on the free tier.

License

MIT

Release files for sonovault 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sonovault 2.3.0
File Size Uploaded
sonovault-2.3.0.tar.gz 17.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sonovault 2.3.0
File Interpreter ABI Platform
sonovault-2.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.5 kB

Release files / sonovault-2.3.0.tar.gz

Download URL sonovault-2.3.0.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4648b8e3a634fdcff0fb9cd2b0b679aa29fdcac07e13dc311751c1e89224df52
BLAKE2b-256 checksum
How to use checksums
aac43c6a27ebac9024c4b741a51d6d8d38366fafb3fd562e0c39f5e0c10628a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / sonovault-2.3.0-py3-none-any.whl

Download URL sonovault-2.3.0-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3893b666f28f0a62fc50ea28e9ab9ee800f1138230d0c7a0e753889d995321f
BLAKE2b-256 checksum
How to use checksums
036e995cb2d06c06753fba7c6b8e52317206e6229b792d4532ef839833a046fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

2.3.1

2 release files

This release

2.3.0 This release

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page