Schema
Here’s the minimum data you need to submit a release. ONCE will fill in defaults for optional fields like label, pline_year, and pline_owner.
You can fetch the schema in two ways (no authentication required):
get_release_schematoolresources/readformcp://schemas/release-required
Most clients load this automatically after resources/list, but you can always call it directly if you need a fresh copy.
Release Fields
| Field | Required | Notes |
|---|---|---|
title | Yes | Release title |
primary_artist_name | Yes | Main artist |
genre | Yes | Music genre |
release_date | Yes | Format: YYYY-MM-DD |
cover_art_file_url | Yes | From upload endpoint |
Track Fields
| Field | Required | Notes |
|---|---|---|
title | Yes | No placeholders |
audio_file_url | Yes | From upload endpoint |
explicit_flag | Yes | Boolean |
writers | Yes | Array, at least one |
Validation Rules
- Single tracks:
track.titlemust matchrelease.title - Writers: Each
writer.namemust be a full legal name (first + last) - Explicit flag: Must be boolean
trueorfalse
Example Payload
{
"release": {
"title": "My Release",
"primary_artist_name": "Artist Name",
"genre": "Pop",
"release_date": "2026-02-01",
"cover_art_file_url": "/api/files/cover-art/USER_ID/cover.jpg"
},
"tracks": [
{
"title": "My Release",
"primary_artist_name": "Artist Name",
"audio_file_url": "/api/files/audio/USER_ID/track.wav",
"explicit_flag": false,
"writers": [{ "name": "First Last" }]
}
]
}