Music streaming
One customer account. Free, premium, and verified artist are states on that account. An administrator publishes the catalog.
These are example architectures. They are not affiliated with any company or trademark.
Try the flow here. It is a local sketch of the base, not a live account.
Mixes
Standard quality. Two skips on this account.
200 · three mixes for this listener.
Try as
State
Functions
The customer opens the app and sees three mixes made for them.
Apps
A full pack is not available to clone.
backend
Catalog API
Lists mixes, signs playback, and accepts a release from a verified artist or an administrator.
Default node-backend
Can swap node-backend, go-backend, python-backend, rust-backend
web
Web player
Mixes, now playing, and the shared list.
Default react
Can swap react, nextjs
mobile
Mobile player
The same listener on a phone, including offline when the state is premium.
Default react-native
Can swap react-native
Who signs in
Customer
customer
The person who listens. One login. The plan and the artist check are states on this account.
Free
Granted at signup. Standard quality and two skips.
Premium
Granted after payment. Same customer. Lossless audio and offline listening.
Verified artist
Granted after review. Same customer, unless this base later gives artists their own login.
Administrator
admin
Runs the catalog. Publishes releases and does not spend the listener skip count.
Policies
Skips follow the state
Free keeps two skips. Premium and verified artist do not.
Artist is a state
Verified artist is granted on the customer. It is not a second login.
Audio keys stay on the server
The client receives a signed address. The audio key is never returned.
API
List mixes
The customer opens the app and sees three mixes made for them.
GET /api/v1/discover/mixes
requireAuth · Hosted by Catalog API
Customer
Play this mix
Asks for a signed address to play. Free keeps a skip count. Premium does not.
POST /api/v1/streams/token
requireAuth · Hosted by Catalog API
Customer
Add to a shared list
Puts the current track on a list the customer owns or shares.
POST /api/v1/playlists/:id/items
requireAuth · Hosted by Catalog API
Customer
Publish a release
Sends a new release into the catalog. A verified artist does this on their own account. An administrator can do it for the catalog.
POST /api/v1/artist/releases
requireAuth · Hosted by Catalog API
Customer · Verified artist · Administrator
What you see
Mixes
- Three mixes for this listener
- Quality for the current state
- A way to start playback
GET /api/v1/discover/mixes
Now playing
- Track name
- Play and pause
- Skip, counted only while the state is free
POST /api/v1/streams/token
Shared list
- The list name
- The track about to be added
- A confirm action
POST /api/v1/playlists/:id/items
Artist studio
- The release title
- Who is allowed to publish
- A result after publish
POST /api/v1/artist/releases