Distribution API v1

Base URL: https://distributemusic.ai/api/v1 · JSON over HTTPS

Authentication

Send your key on every request: Authorization: Bearer dm_live_… (or X-API-Key). Create keys in Settings → Developer API (Label plan + API plan). 60 requests/minute per key; over the limit returns 429 with Retry-After.

curl https://distributemusic.ai/api/v1/me -H "Authorization: Bearer dm_live_xxx"

GET/v1/me

The account the key belongs to.

Response
{ "user_id": "user_…", "display_id": "user_id_42", "name": "Aurora Vox", "email": "…", "plan": "label" }

POST/v1/files

Upload audio or cover art (multipart). kind = audio | cover. Files already store-ready return path at once. Files that need converting (MP3, other sample rates, non-3000×3000 covers) return job_id + status: processing — poll GET /v1/files/jobs/{job_id} until status is done, then use its path in a release.

curl -X POST https://distributemusic.ai/api/v1/files -H "Authorization: Bearer dm_live_xxx" \
  -F "file=@song.wav" -F "kind=audio"
Response
{ "file_id": "…", "path": "DistributeMusic.AI/audio/…/x.wav", "filename": "song.wav" }

GET/v1/files/jobs/{job_id}

Status of a file conversion started by POST /v1/files. status: processing → done (with path) or failed (with error).

Response
{ "job_id": "…", "status": "done", "path": "DistributeMusic.AI/audio/…/x.wav" }

POST/v1/releases

Create a release and send it to review. Same rules as the dashboard: cover required; composer & lyricist must be real legal names (First + Last); AI songs need is_ai_generated: true and ai_music_link; EP (2–6 tracks) and Album (7+) allowed on Label. You must send distribution_agreement_accepted: true. Releases go through the same automatic AI + copyright scan and review as dashboard releases, then out to stores.

{
  "title": "Ocean Dreams", "artist_name": "Aurora Vox", "release_type": "single",
  "genre": "Electronic", "release_date": "2026-08-01", "song_language": "en",
  "composer": "Maya Rahman", "lyricist": "Maya Rahman", "version_type": "Original",
  "cover_path": "DistributeMusic.AI/cover/…/c.jpg",
  "tracks": [{ "title": "Ocean Dreams",
              "audio_path": "DistributeMusic.AI/audio/…/x.wav", "explicit": false }],
  "is_ai_generated": true, "ai_music_link": "https://suno.com/song/…",
  "distribution_agreement_accepted": true
}
Response
{ "release_id": "rel_…", "display_id": "release_id_77", "status": "pending", … }

GET/v1/releases

All releases on the account, newest first.

GET/v1/releases/{id}

One release by release_id or display_id. status: pending → approved/delivered → live, or rejected / changes_requested with feedback.

Errors

JSON { "detail": "…" } with 400 (validation), 401 (bad key), 403 (plan / API plan needed), 404, 429 (rate limit), 5xx (retry later).