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

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

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.