Delivering releases
Releases arrive as DDEX ERN 4.3 NewReleaseMessage batches in your S3 bucket, one release per
batch. The sample package is a complete, valid example: start
by copying its structure.
Batch layout
20261101120000000/ ← batch ID: any unique folder name (we suggest a UTC timestamp)
├── aria-rel-sample-0001.xml ← the ERN (exactly one .xml besides BatchComplete)
├── resources/
│ ├── 01.wav 02.wav 03.wav ← audio, referenced from the ERN by relative URI
│ ├── night-drive-video.mp4 ← music video (optional)
│ └── cover.jpg ← front cover
├── phyzi/
│ ├── phyzi.json ← Phyzi sidecar (required)
│ └── print/drive-art.png ← print files listed in phyzi.json (optional)
└── BatchComplete_20261101120000000.xml ← empty file, uploaded LAST
- Upload
BatchComplete_<batchId>.xmllast. Nothing is read until it lands, so a half-uploaded batch is never picked up. It can be empty. - One release per batch. You can also use DDEX's "release folder" layout, with the ERN,
resources/andphyzi/in a sub-folder of the batch. URIs andphyzi/resolve relative to the ERN's folder. - Every URI is relative to the ERN's folder, e.g.
resources/01.wav. Nohttp://, absolute paths or... - Re-using a batch folder name re-processes it. For a new version, use a new batch ID.
- Your credentials can write and read, not delete. The bucket is versioned, so overwriting a file is safe.
Results arrive as webhooks (release.received, then release.validated or release.rejected). You
can also check GET /v1/deliveries/{batchId}. To check an ERN without uploading anything, use
POST /v1/validate (see Validation errors).
Updates and takedowns
- Update: send a new batch with a full
NewReleaseMessagefor the same release ID. The latest validated batch wins, and its audio and art are the ones used for any new master orders. ERN 4 has no separate "update" message type. - Takedown: send a
PurgeReleaseMessagewithPurgedRelease/ReleaseId/ProprietaryId. The release is markedtaken_downand new orders for it are refused. Orders already placed aren't affected.
What the ERN must contain
Everything below is checked against the official ERN 4.3 schema and Phyzi's rules.
Release
| Field | ERN location | Notes |
|---|---|---|
| Release ID | Release/ReleaseId/ProprietaryId |
Your stable ID, e.g. aria-rel-123. Letters, digits, . _ : -. Keep it the same across updates. Namespace is free text (we use aria). |
| Type | Release/ReleaseType |
Album, EP or Single |
| Title | Release/DisplayTitleText (+ DisplayTitle/TitleText) |
|
| Artist | Release/DisplayArtistName + DisplayArtist (role MainArtist) |
Artists are Party entries in PartyList |
| Genre | Release/Genre/GenreText |
Free text |
| Label | Release/ReleaseLabelReference |
Required by the schema. For independent artists, use a party named Independent or the artist's name. |
| Explicit | Release/ParentalWarningType |
NotExplicit, Explicit, Unknown… |
| Track list | Release/ResourceGroup |
See below |
| Cover art | an Image with Type FrontCoverImage |
Referenced from the release's ResourceGroup |
Optional: ICPN (UPC/EAN) next to the ProprietaryId, PLine, CLine, ReleaseDate, SubGenre.
Track list
Group tracks per disc in ResourceGroup/ResourceGroup (attribute ResourceGroupType="Component")
and give each ResourceGroupContentItem a SequenceNumber, 1…n with no gaps or repeats. A
single flat ResourceGroup (one disc) is fine too. The cover can be a content item of the top-level group.
Each track (SoundRecording)
| Field | ERN location |
|---|---|
| Title | DisplayTitleText (+ DisplayTitle/TitleText) |
| Artist | DisplayArtistName, e.g. Artist feat. Guest, plus DisplayArtist entries (MainArtist, FeaturedArtist) |
| Duration | Duration (ISO 8601, e.g. PT3M12S) |
| Explicit | ParentalWarningType |
| Audio file | SoundRecordingEdition/TechnicalDetails/DeliveryFile/File/URI |
| MD5 | …/File/HashSum with Algorithm MD5 and HashSumValue (lowercase hex) |
Optional: SoundRecordingEdition/ResourceId/ISRC, a track ProprietaryId, PLine.
Music videos (Video, optional)
Add a Video to the ResourceList (for example Type ShortFormMusicalWorkVideo) and put it in
the track list like a track, usually after the audio. Videos share the disc's SequenceNumbers, so
three tracks and a video are numbered 1–4. Required: DisplayTitleText, DisplayArtistName +
DisplayArtist, Duration, ParentalWarningType, and
VideoEdition/TechnicalDetails/DeliveryFile/File with URI and an MD5 HashSum. The sample
package includes one.
File requirements
| Accepted | |
|---|---|
| Audio | WAV (PCM) or FLAC, 44.1 kHz or higher, 16 or 24-bit, any channel count |
| Video | MP4 or MOV, H.264, HEVC or ProRes (H.264 MP4 plays on the most fans' devices) |
| Cover art | JPEG or PNG, square, at least 3000 × 3000, RGB (not CMYK) |
| Print files | PDF, PNG, JPEG, TIFF, AI or PSD (any file; we check the MD5) |
Every file in the ERN or phyzi.json must be in the batch, and its MD5 must match. Files that
nothing references are ignored and produce a warning.
It has to fit on the drive
A Phyzi holds about 7.36 GB. Each track goes on the drive twice, as the lossless file plus an
MP3 copy, and the videos and cover go on once. A typical album of 16-bit WAVs uses well under 1 GB;
music videos are what usually hit the limit. Bigger releases are rejected with release.too_large,
and every validated release reports estimated_drive_bytes.
phyzi/phyzi.json
DDEX has no place for print art or your copyright check, so they go in a small sidecar:
{
"schema": "phyzi.partner-batch/1",
"release_id": "aria-rel-sample-0001",
"copyright_check": {
"passed": true,
"checked_at": "2026-11-01T11:58:00Z",
"provider": "aria"
},
"print_files": [
{ "role": "drive_art", "path": "phyzi/print/drive-art.png", "md5": "be4e2d2a2a542f7f6061be5ee773adaf" }
]
}
| Field | Required | Notes |
|---|---|---|
schema |
yes | Always phyzi.partner-batch/1 |
release_id |
yes | Same as the ERN's release ProprietaryId |
copyright_check.passed |
yes | Must be true. We only manufacture releases that passed your copyright check. |
copyright_check.checked_at, .provider |
no | For our records |
print_files[] |
no | role is drive_art (printed on the USB drive) or box_art (custom box packaging); path relative to the ERN's folder; md5 required |
If an artist has no print art yet, leave print_files empty. Print art gets settled at the proof
step of the master order, which the artist approves before anything is printed.