Casset API
Don't just upload your music. Give your artist world an API.
Casset turns tracks, drops, media, moments, identities, and context into structured first-party data that apps, agents, labels, and fans can build around.
A song on a streaming platform is a file. A song in Casset is part of a living archive — with the drops, visuals, moments, identities, and lineage still attached.
GET /api/agents/artists/connor200 OK · 112 KB"handle": "connor", "name": "Connor James", "isVerified": false, "url": "https://casset.fm/connor", "counts": { tracks: 58, visuals: 10, releases: 1 }, "tracks": [{ "id": "connor-lose-you", "title": "lose you", "kind": "ORIGINAL" }], // +57 more "endpoints": { ask: "https://casset.fm/api/agents/artists/connor/ask" }
Live response from GET /api/agents/artists/connor — fetched server-side so the key never touches the browser.
The distinction
Streaming is for playback. Casset is for context.
Streaming platforms are incredible distribution systems — they make songs available everywhere. But they flatten the artist into release metadata: title, artwork, duration, credits, and a play button. That's enough to listen. It isn't enough to build rich fan experiences, agentic tools, campaign systems, or living artist worlds. Casset keeps the surrounding world intact — the drops, visuals, media, moments, identities, lineage, and source material that make a song legible.
Streaming metadata
- · title
- · artwork
- · duration
- · credits
- · ▶ play
Casset context
- + tracks + stable IDs
- + drops + pre-release context
- + media · visuals · BTS
- + moments · identities
- + lineage · provenance · deep links
One artist bundle. A whole creative system.
The catalog is the code. Read the whole world in one call.
Every category below is either a live endpoint or a first-class concept already present in the product. Fetch one artist bundle and you have the songs, the media, the releases, and the links between them — structured, stable, and first-party.
/api/agentspublicDiscovery
A public, self-describing catalog of agent-readable artists — plus /openapi.json, an OpenAPI 3.1 document apps read to learn what Casset exposes and how to route in.
/api/agents/artists/{handle}API keyArtist bundle
The creator bundle: profile, counts, tracks, visuals, releases, and links — the whole artist world as one structured object.
· tracks[]API keyTracks
Stable track IDs, titles, kind (original vs generation), durations, posters, and lyric state — addressable objects apps and fans can point into.
· visuals[]API keyMedia
Covers, behind-the-scenes, and hook visuals with posters and types — the visual world connected to the songs.
/api/agents/artists/{handle}/askAPI keyAsk the Room
Grounded Q&A over the artist's actual archive — an assistant that reasons from source material, not scraped vibes.
/api/agents/releases/{id}/lineageopen · rate-limitedLineage & provenance
Per-release manifest, DNA, provenance, and lineage — how demos, samples, and ideas connect into finished releases.
casset.fm/{handle}?trackId={id}publicDeep links
Link straight into a specific track on a live profile. Track IDs are stable, addressable objects — treat them as first-class references.
Emerging — first-class in the product, shaping into the agent layer
drops · pre-releasepublicDrops
Campaign-aware release and pre-release context (drop plans, presaves) — first-class in the product today, designed for the agent layer next.
momentspublicMoments
Fan-submitted memories and context tied to specific tracks and drops — real today, being shaped into the agent surface.
identities · projectspublicIdentities & projects
Alter-egos, B-side personas, and creative containers that group songs, visuals, and drops into larger worlds.
Try it live
No sandbox. No signup. Just call the real thing.
The discovery endpoint is public and self-describing — run it right here and read the actual response Casset returns. It documents every data endpoint, the auth scheme, and current rate limits, so an agent can learn the whole API in one request.
GET /api/agentsThen: fetch any artist bundle
curl https://www.casset.fm/api/agents/artists/connor \ -H "Authorization: Bearer $CASSET_API_KEY"
The discovery call is public — that response above is live. Data endpoints take a server-side key; keep CASSET_API_KEY on your backend.
What you can build
One archive. Every audience builds on it.
The same structured bundle powers very different products. Pick who you are — the archive doesn't change, only what you build on top of it.
For artists
Turn your catalog, drops, media, and identity into an ownable, structured archive.
- A programmable artist profile
- Contextual drops and pre-release worlds
- Linkable track worlds via stable IDs
- AI assistants grounded in your real archive
- Unlockable experiences around specific songs
Why agents need this
Agents need source material, not scraped vibes.
A generic model looking at a streaming link can guess what a song means. An agent connected to Casset can inspect the artist bundle, find real tracks, follow relationships, use stable IDs, and link back to exact objects. That means better writing, better recommendations, better fan experiences, and fewer hallucinations.
Stable IDs
Track and release IDs that don't move — safe to store, cite, and link back to.
Structured data
Typed bundles, not HTML to parse. The shape is the contract.
First-party context
Artist-approved source material, not third-hand scraping.
Track-level links
Point straight at a song with ?trackId= — no ambiguity.
Connected media
Visuals, releases, and lineage attached to the same object.
Safer generation
Grounded answers via the Room ask endpoint — less hallucination.
Example flow
Discover, fetch, link. Three calls to the whole world.
discovery# public — no key required curl https://www.casset.fm/api/agents
artist bundlecurl https://www.casset.fm/api/agents/artists/connor \ -H "Authorization: Bearer $CASSET_API_KEY"
deep link# stable, addressable — opens the track live https://casset.fm/connor?trackId=<track_id>
The key is a server-side secret. Keep CASSET_API_KEY on your backend — never ship it to the browser.
Built for artist-owned context
Don't rebuild your world on every platform. Give it an address.
An artist shouldn't have to reconstruct their context everywhere they go. Songs, drops, visuals, identities, and moments should form a durable archive that belongs to the artist — and Casset becomes the structured layer other apps build from.
Durable
A structured archive that grows with a career, not a per-platform rebuild.
Portable
Stable endpoints and IDs mean other apps can build on the same source of truth.
Owned
The artist's world stays theirs — Casset is the programmable layer around it.