Validation errors

Every delivery gets a result with errors (any error rejects the batch) and warnings (the batch is still accepted). Each issue has a stable code, a readable message, and usually a path (an ERN location, a file in the batch, or an XML line number).

{
  "id": "20261101120000000",
  "object": "delivery",
  "status": "rejected",
  "message_type": "NewReleaseMessage",
  "release_id": "aria-rel-sample-0001",
  "errors": [
    { "code": "image.too_small", "message": "Cover art must be at least 3000×3000 (resources/cover.jpg is 1400×1400).", "path": "resources/cover.jpg" }
  ],
  "warnings": [],
  "received_at": "2026-11-02T18:04:11.201Z",
  "completed_at": "2026-11-02T18:04:13.950Z"
}

You get this in the release.rejected or release.validated webhook and from GET /v1/deliveries/{batchId}. To fix a rejected batch, upload a corrected one under a new batch ID.

Checking an ERN without uploading

curl -X POST https://dev.ddex-delivery.phyzi.io/v1/validate \
  -H "Authorization: Bearer $PHYZI_KEY" -H "Content-Type: application/xml" \
  --data-binary @aria-rel-sample-0001.xml

This runs every XML-level check (schema, required fields, track order) and returns the same shape with "files_checked": false. File, hash and phyzi.json checks only run on a real delivery.

Error codes

Code Meaning
batch.no_ern No ERN XML in the batch (BatchComplete_*.xml and phyzi/ don't count)
batch.multiple_ern More than one ERN. Send one release per batch.
xml.malformed Not well-formed XML
xml.schema Fails the official ERN 4.3 XSD. The message names the element and the path gives the line.
ern.message_type Root element isn't NewReleaseMessage or PurgeReleaseMessage
ern.version Not ERN 4.3 (namespace http://ddex.net/xml/ern/43)
ern.party_missing A DisplayArtist points at a party that isn't in PartyList
release.missing ReleaseList has no main Release
release.id_missing No ProprietaryId on the release (or on PurgedRelease)
release.id_invalid Release ID uses characters other than letters, digits, . _ : -, or is over 100 long
release.type_invalid ReleaseType isn't Album, EP or Single
release.title_missing / release.artist_missing / release.genre_missing Required release field is empty
release.cover_missing No FrontCoverImage
release.tracklist_missing No ResourceGroup on the release
release.no_tracks Track list has no sound recordings
release.reference_unknown Track list references a resource that isn't in ResourceList
release.too_large The release won't fit on a Phyzi (about 7.36 GB: lossless audio + MP3 copies + videos + cover)
track.sequence_missing A track has no SequenceNumber
track.sequence_invalid Track numbers on a disc (audio and videos together) aren't exactly 1…n
track.title_missing / track.artist_missing Required track (or video) field is empty
file.uri_missing A track or the cover has no File/URI
file.uri_invalid URI is absolute, a URL, or contains ..
file.missing A referenced file isn't in the batch
file.md5_missing No MD5 HashSum for a file (or no md5 for a print file)
file.md5_mismatch The file's MD5 doesn't match the one you sent
audio.unreadable Couldn't read the audio file
audio.format Audio isn't WAV (PCM) or FLAC
audio.sample_rate Below 44.1 kHz
audio.bit_depth Not 16 or 24-bit
video.unreadable Couldn't read the video file
video.format Video isn't MP4 or MOV with H.264, HEVC or ProRes
image.unreadable Couldn't read the cover image
image.format Cover isn't JPEG or PNG
image.not_square Cover isn't square
image.too_small Cover is under 3000 × 3000
image.colorspace Cover is CMYK (use RGB)
phyzi.sidecar_missing No phyzi/phyzi.json
phyzi.sidecar_invalid phyzi.json isn't valid JSON, has the wrong schema, or a print file is missing path
phyzi.release_id_mismatch phyzi.json release_id differs from the ERN's
phyzi.copyright_not_passed copyright_check.passed isn't true
phyzi.print_role Print file role isn't drive_art or box_art

Warning codes

Code Meaning
file.unreferenced A file in the batch isn't referenced by the ERN or phyzi.json, so it's ignored
audio.duration_mismatch The ERN Duration and the actual file length differ by more than 2 seconds