Getting started
Apply as a distributor. Once we approve your company you can log in to the distributor portal, upload music there, and request API access from its API page. After we grant it, you create your API key there (it starts with ssd_). Keep it secret: anyone with the key can upload under your account. If it leaks, make a new one in the portal and the old key stops working at once.
The flow: 1. enroll each artist once, 2. upload tracks under that artist, 3. check each track's status. New uploads are reviewed by our team before they go live (some distributors are set to publish straight away).
Base URL: https://www.sevenstarsmusic.com/api/distributor/v1
Authentication
Send your key on every request, in the Authorization header (or as X-Api-Key). Always add Accept: application/json.
curl https://www.sevenstarsmusic.com/api/distributor/v1/me \
-H "Authorization: Bearer ssd_YOUR_KEY" \
-H "Accept: application/json"
Responses & errors
Every response is JSON with success. Successful calls put the result in data; failed calls explain why in error (validation failures also list every field in errors).
{ "success": true, "data": { … } }
{ "success": false, "error": "ISRC is required." }
| Status | Meaning |
|---|---|
| 200 / 201 | OK / created |
| 401 | Missing or wrong API key |
| 403 | Your distributor account is paused |
| 404 | Not found, or the artist/track isn't yours |
| 409 | Already exists (same email or external_id) |
| 422 | Something in the request is wrong (see error) |
| 429 | Too many requests: slow down (120 per minute) |
Your account
Your distributor name, how many artists and tracks you have, whether uploads publish straight away, and the upload limits.
Genres
The genres used on Seven Stars. Send a genre's name when you upload a track.
Enroll an artist
Creates the artist's profile on Seven Stars. Do this once per artist and keep the id you get back. JSON or multipart form.
| Field | Description |
|---|---|
| namerequired | Artist / stage name shown to listeners |
| legal_name | Real name |
| The artist's email. With an email the artist can later sign in (they set a password with "Forgot password") to see stats and earnings. | |
| role | artist (default) or producer |
| country, genre, bio | Profile details |
| instagram_url | Full link |
| avatar / avatar_url | Profile photo: a file (JPG, PNG, WebP, up to 10 MB) or a public link to one |
| external_id | Your own ID for this artist, so you can find them again with GET /artists?external_id=… |
curl -X POST https://www.sevenstarsmusic.com/api/distributor/v1/artists \
-H "Authorization: Bearer ssd_YOUR_KEY" -H "Accept: application/json" \
-F name="DJ Example" -F email="dj@example.com" -F country="Egypt" \
-F external_id="ART-1001" -F avatar=@photo.jpg
{ "success": true, "data": { "id": 412, "external_id": "ART-1001", "name": "DJ Example",
"profile_url": "https://www.sevenstarsmusic.com/artist/412", "tracks_count": 0, … } }
List & update artists
You only see artists you enrolled. To update, send just the fields that changed (same fields as enrolling, except email and role).
Upload a track
Uploads a track under one of your artists. Send files as multipart form, or send links (audio_url, cover_url) and we download them.
| Field | Description |
|---|---|
| titlerequired | Track title |
| isrcrequired | The track's ISRC, with or without dashes. Recorded as entered; no format, duplicate or provider lookup check. |
| audio / audio_urlrequired | The audio file, or a public link to it (see the next section) |
| cover / cover_urlrequired | Artwork: JPG, PNG or WebP, up to 10 MB (square, 3000×3000 recommended) |
| upc | Release UPC |
| genrerequired | A genre name from GET /genres |
| release_type | single (default), ep or album |
| release_date | YYYY-MM-DD |
| featured_artists | Names, e.g. "Singer A, Singer B" |
| description, lyrics | Text |
| external_id | Your own ID for this track |
curl -X POST https://www.sevenstarsmusic.com/api/distributor/v1/artists/412/tracks \
-H "Authorization: Bearer ssd_YOUR_KEY" -H "Accept: application/json" \
-F title="Desert Nights" -F isrc="EG-A12-26-00001" -F genre="Deep House" \
-F release_date="2026-11-01" -F external_id="TRK-55" \
-F audio=@master.mp3 -F cover=@artwork.jpg
{ "success": true, "data": { "id": 901, "artist_id": 412, "title": "Desert Nights",
"isrc": "EGA122600001", "duration": "3:20", "status": "pending",
"audio": { "status": null, "source_format": "mp3", "source_mb": 8.4, … },
"converted_to_mp3": false, … } }
With links instead of files:
curl -X POST https://www.sevenstarsmusic.com/api/distributor/v1/artists/412/tracks \
-H "Authorization: Bearer ssd_YOUR_KEY" -H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"title":"Desert Nights","isrc":"EGA122600001","genre":"Deep House",
"audio_url":"https://files.example.com/master.mp3",
"cover_url":"https://files.example.com/artwork.jpg"}'
Audio and upload requirements
MP3 only, up to 20 MB. Title, ISRC, genre and cover are required. ISRC is stored without an external verification check.
Label and description are optional. Use featured_artists for typed collaboration names and collaborator_ids[] for registered artist IDs.
Cover art: JPG, PNG or WebP, up to 10 MB. Uploads wait for review unless your distributor account has auto-publishing enabled.
Track status
| status | Meaning |
|---|---|
| converting | Your WAV/FLAC/AIFF is being converted to MP3 320 kbps (usually under a minute) |
| conversion_failed | The audio couldn't be converted; see rejection_reason and upload again |
| pending | Waiting for review by our team |
| approved | Live: public_url is the track's page |
| rejected | Not accepted: the reason is in rejection_reason |
| removal_requested | You asked to take it down; waiting for our team |
Remove a track
A track that isn't live yet is deleted at once. A live track gets a takedown request that our team processes (you can add a reason).
Limits
- 120 requests per minute per key.
- MP3 audio up to 20 MB; images up to 10 MB.
- Links you send must be public
http(s)addresses. - Lists return 50 items per page by default (
per_pageup to 100); seemeta.page,meta.pagesandmeta.total.
Questions or need a key? Contact us.