Skip to content
Support

XML reference

This page covers the XML structure and code examples for LabelGrid’s DDEX import. For metadata requirements, contributor roles, splits, and formatting standards, see Release metadata, Track metadata, and Validation.

ERN 4.3.2 is the recommended import version for new integrations — see ERN 4.3.2 below for its root element, the AI declaration fields it adds, and a complete 4.3.2 example with every field. Most detailed examples on this page use the ERN 4.3 format; the message structure is the same in 4.3.1/4.3.2, so they apply to all three (swap the root namespace and apply the 4.3.2 field changesDisplayGenre, the complex Role form, and the AI elements). PartyReference values in actual output are MD5-hashed identifiers (e.g., P8A1B2C3D4E5F6...). The examples below use human-readable names for clarity.


Every DDEX delivery is a NewReleaseMessage XML document with five main sections:

NewReleaseMessage
├── MessageHeader — Sender, recipient, and message ID
├── PartyList — All artists, contributors, and rights holders
├── ResourceList — Audio files and artwork with technical details
├── ReleaseList — The album/single release and individual tracks
└── DealList — Commercial terms, territories, and dates

The root element includes the ERN 4.3 namespace and schema location:

<?xml version="1.0" encoding="UTF-8"?>
<NewReleaseMessage
xmlns:ern="http://ddex.net/xml/ern/43"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ddex.net/xml/ern/43 http://ddex.net/xml/ern/43/release-notification.xsd"
AvsVersionId="3"
LanguageAndScriptCode="en">
AttributeDescription
xmlns:ernERN 4.3 namespace URI
xsi:schemaLocationSchema for validation
AvsVersionIdAllowed value set version
LanguageAndScriptCodeDefault language of the message

ERN 4.3.2 is the recommended import version for new LabelGrid integrations. It is a later revision of the ERN 4.3 family and is fully supported by the LabelGrid importer. It uses a different namespace and schema from 4.3, so the two are not interchangeable at the XML level — the root element alone determines the version. If your system can emit either, generate 4.3.2.

<?xml version="1.0" encoding="UTF-8"?>
<NewReleaseMessage
xmlns:ern="http://ddex.net/xml/ern/432"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ddex.net/xml/ern/432 http://ddex.net/xml/ern/432/release-notification.xsd"
AvsVersionId="4"
LanguageAndScriptCode="en">
AttributeERN 4.3ERN 4.3.2
xmlns:ernhttp://ddex.net/xml/ern/43http://ddex.net/xml/ern/432
xsi:schemaLocation…/ern/43 …/ern/43/release-notification.xsd…/ern/432 …/ern/432/release-notification.xsd
AvsVersionId34

The public 4.3.2 release-notification schema is at http://service.ddex.net/xml/ern/432/release-notification.xsd (the 4.3 equivalent is http://service.ddex.net/xml/ern/43/release-notification.xsd). You can validate either file against its schema with the DDEX online validator.

What changes between 4.3, 4.3.1, and 4.3.2 {#what-changes-between-43-431-and-432}

Section titled “What changes between 4.3, 4.3.1, and 4.3.2 {#what-changes-between-43-431-and-432}”

The message body is the same shape as the 4.3 examples below — the MessageHeader, PartyList, ResourceList, ReleaseList, and DealList sections keep the same structure. The differences are a handful of element-level changes that were introduced in ERN 4.3.1 and carried unchanged into 4.3.2. If you are moving from 4.3 (4.3.0), these are the three things to change:

AreaERN 4.3 (4.3.0)ERN 4.3.1 and 4.3.2
Genre element<Genre><DisplayGenre> — same GenreText + SubGenre children, just renamed
Contributor roleSimple: <Role>StudioProducer</Role>Complex: <Role><Value>StudioProducer</Value></Role>
AI attribution(not available)New <ContainsAI>, <AiContribution>, and <SpecialContributor> elements

Everything else — MessageHeader, parties, deals, ISRC/ISWC placement, audio/artwork technical details, titles, P-Line/C-Line, deals, dates — is identical to the 4.3 examples in the rest of this page. The only version-specific pieces are the three above; the AI declaration fields get their own section next because they’re the main reason to use 4.3.2.

AI declaration fields (4.3.2) {#ai-declaration-fields-432}

Section titled “AI declaration fields (4.3.2) {#ai-declaration-fields-432}”

This is the part of 4.3.2 that does not exist in plain 4.3. There are three elements, and they all describe the same underlying disclosure: how much of the content was generated by AI. Every value is one of None, Partly, or All — there are no boolean flags and no free-text fields.

ElementAppears onPositionValues
<ContainsAI>each <SoundRecording> (track)After <ParentalWarningType>, before <LanguageOfPerformance>None / Partly / All
<ContainsAI>the main <Release>After the <ResourceGroup> blockNone / Partly / All — the highest value across all tracks and the artwork
<ContainsAI>the cover <Image>After <ResourceId>, before <TechnicalDetails>None / Partly / All
<AiContribution>each <Contributor>After <Role>None / Partly / All
<SpecialContributor>a <Contributor> that is fully AIReplaces <ContributorPartyReference> (mutually exclusive)Fixed value GenerativeAI

The track form has two AI disclosure dropdowns (see Adding tracks) — Generative AI Disclosure (the sound recording) and Composition AI Disclosure (the song). The release artwork has its own AI setting. Each maps to a DDEX value as follows:

Disclosure selectionDDEX value
No generative AI was usedNone
Minor AI assistance onlyPartly
AI generated material portionsPartly
Entirely generated with AIAll
  • A track’s <ContainsAI> is the highest of its Generative AI and Composition AI disclosures.
  • The release’s <ContainsAI> is the highest across every track plus the artwork.
  • A <Contributor>’s <AiContribution> reflects that specific credit. Named (human) contributors are capped at Partly — a value of All is only ever expressed through <SpecialContributor>GenerativeAI</SpecialContributor>, which carries no party name.

DisplayGenre replaces the 4.3 Genre element (children are unchanged):

<!-- 4.3.2 uses DisplayGenre; 4.3.0 used Genre -->
<DisplayGenre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</DisplayGenre>

ContainsAI on a track, in its correct position:

<SoundRecording>
<ResourceReference>A1</ResourceReference>
<!-- ... editions, titles, artists, contributors, duration ... -->
<ParentalWarningType>NotExplicit</ParentalWarningType>
<ContainsAI>Partly</ContainsAI>
<LanguageOfPerformance>en</LanguageOfPerformance>
</SoundRecording>

ContainsAI on the cover image (before TechnicalDetails):

<Image>
<ResourceReference>A2</ResourceReference>
<Type>FrontCoverImage</Type>
<ResourceId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890:cover</ProprietaryId>
</ResourceId>
<ContainsAI>None</ContainsAI>
<TechnicalDetails>
<!-- ... -->
</TechnicalDetails>
</Image>

A contributor using the complex Role form with an AiContribution, alongside a fully-AI contributor that uses SpecialContributor instead of a party reference:

<!-- Human contributor: complex Role + per-credit AiContribution -->
<Contributor SequenceNumber="1">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role><Value>StudioProducer</Value></Role>
<AiContribution>None</AiContribution>
</Contributor>
<!-- Fully AI-generated credit: SpecialContributor replaces ContributorPartyReference -->
<Contributor SequenceNumber="2">
<SpecialContributor>GenerativeAI</SpecialContributor>
<Role><Value>Vocalist</Value></Role>
<AiContribution>All</AiContribution>
</Contributor>

To confirm a 4.3.2 message validates before delivery, check it against the public 4.3.2 release-notification schema (http://service.ddex.net/xml/ern/432/release-notification.xsd) with the DDEX online validator.


Identifies the sender (your organization), the recipient (the DSP), and a unique message ID.

<MessageHeader>
<MessageThreadId>20250815-neonsounds-001</MessageThreadId>
<MessageId>20250815-neonsounds-001-msg01</MessageId>
<MessageSender>
<PartyId>PADPIDA2025010100A</PartyId>
<PartyName><FullName>Neon Sounds</FullName></PartyName>
</MessageSender>
<MessageRecipient>
<PartyId>PADPIDA2014120301U</PartyId>
<PartyName><FullName>Spotify</FullName></PartyName>
</MessageRecipient>
<MessageCreatedDateTime>2025-08-01T10:30:00Z</MessageCreatedDateTime>
</MessageHeader>
ElementDescription
MessageThreadIdGroups related messages (e.g., updates to the same release)
MessageIdUnique identifier for this specific message
MessageSenderYour organization’s DDEX Party ID and name
MessageRecipientThe receiving DSP’s Party ID and name
MessageCreatedDateTimeISO 8601 timestamp of when the message was created

All entities referenced elsewhere in the XML — the record label, artists, contributors, and publishers — are defined here. Each party gets a PartyReference used to link them throughout the document.

<Party>
<PartyReference>P_LABEL_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds LLC</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:label:100</ProprietaryId>
</PartyId>
</Party>

Artists can include standard identifiers like ISNI:

<!-- Primary Artist with ISNI -->
<Party>
<PartyReference>P_ARTIST_LUNAWAVE</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Luna Wave</FullName>
</PartyName>
<PartyId>
<ISNI>0000000012345678</ISNI>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:200</ProprietaryId>
</PartyId>
</Party>
<!-- Featured Artist (no ISNI) -->
<Party>
<PartyReference>P_ARTIST_DJKODA</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>DJ Koda</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:201</ProprietaryId>
</PartyId>
</Party>

Contributors (songwriters, producers, engineers) can include IPI identifiers:

<!-- Songwriter / Composer / Producer with IPI -->
<Party>
<PartyReference>P_CONTRIB_SARAHCHEN</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Sarah Chen</FullName>
</PartyName>
<PartyId>
<IpiNameNumber>00123456789</IpiNameNumber>
</PartyId>
</Party>
<!-- Mixing Engineer (no IPI) -->
<Party>
<PartyReference>P_CONTRIB_MIXMASTER</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Mike Torres</FullName>
</PartyName>
</Party>
<Party>
<PartyReference>P_PUBLISHER_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds Publishing</FullName>
</PartyName>
</Party>

Supported party identifiers:

IdentifierElementFormat
ISNI<ISNI>16 characters (15 digits + check digit)
IPI<IpiNameNumber>Zero-padded to 11 digits
Proprietary<ProprietaryId>LabelGrid internal reference

Contains all audio files and artwork. Each resource gets a ResourceReference (e.g., A1, A2) used to link it to releases.

<SoundRecording>
<ResourceReference>A1</ResourceReference>
<Type>MusicalWorkSoundRecording</Type>
<!-- ISRC and P-Line inside SoundRecordingEdition -->
<SoundRecordingEdition>
<ResourceId>
<ISRC>USNS12500001</ISRC>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<!-- Technical details of the audio file -->
<TechnicalDetails>
<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>
<DeliveryFile>
<Type>AudioFile</Type>
<AudioCodecType UserDefinedValue="WAV">UserDefined</AudioCodecType>
<NumberOfChannels>2</NumberOfChannels>
<SamplingRate>44100</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<File>
<URI>resources/198765432109_01_01.wav</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>d41d8cd98f00b204e9800998ecf8427e</HashSumValue>
</HashSum>
</File>
</DeliveryFile>
</TechnicalDetails>
</SoundRecordingEdition>
<!-- ISWC goes on parent SoundRecording, NOT inside Edition -->
<WorkId>
<ISWC>T3351864278</ISWC>
</WorkId>
<!-- Track title -->
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<!-- Display artist string -->
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<!-- Artist roles -->
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<!-- Contributors -->
<Contributor SequenceNumber="1">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role>ComposerLyricist</Role>
</Contributor>
<Contributor SequenceNumber="2">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<!-- "Producer" display role maps to DDEX role "StudioProducer" -->
<Role>StudioProducer</Role>
</Contributor>
<Contributor SequenceNumber="3">
<ContributorPartyReference>P_CONTRIB_MIXMASTER</ContributorPartyReference>
<Role>MixingEngineer</Role>
</Contributor>
<Contributor SequenceNumber="4">
<ContributorPartyReference>P_PUBLISHER_NEONSOUNDS</ContributorPartyReference>
<Role>MusicPublisher</Role>
</Contributor>
<!-- Copyright ownership -->
<WorkRightsController>
<RightsControllerPartyReference>P_LABEL_NEONSOUNDS</RightsControllerPartyReference>
<RightsControlType>RightsController</RightsControlType>
<RightSharePercentage>100.00</RightSharePercentage>
<Territory>Worldwide</Territory>
</WorkRightsController>
<!-- Duration in ISO 8601 format -->
<Duration>PT00H04M32S</Duration>
<!-- Parental warning -->
<ParentalWarningType>NotExplicit</ParentalWarningType>
<!-- Language of performance -->
<LanguageOfPerformance>en</LanguageOfPerformance>
</SoundRecording>

Key points:

  • ISRC and PLine go inside SoundRecordingEdition
  • ISWC goes on the parent SoundRecording via WorkId (not inside the Edition)
  • DisplayTitleText contains only the base title (no mix version)
  • The SubTitle element inside DisplayTitle holds the mix version (empty if none)
  • The “Producer” display role maps to the DDEX role StudioProducer
  • Audio file URI follows the pattern: resources/{UPC}_{disc}_{track}.{ext}
<Image>
<ResourceReference>A2</ResourceReference>
<Type>FrontCoverImage</Type>
<ResourceId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890:cover</ProprietaryId>
</ResourceId>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T2</TechnicalResourceDetailsReference>
<ImageCodecType>JPEG</ImageCodecType>
<ImageHeight>3000</ImageHeight>
<ImageWidth>3000</ImageWidth>
<File>
<URI>resources/198765432109.jpg</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4</HashSumValue>
</HashSum>
</File>
</TechnicalDetails>
</Image>

Contains the main release (the album or single) and individual track releases. The main release links to resources via ResourceGroup.

<Release>
<ReleaseReference>R0</ReleaseReference>
<!-- ReleaseType comes before ReleaseId in ERN 4.3 -->
<ReleaseType>Single</ReleaseType>
<ReleaseId>
<ICPN>198765432109</ICPN>
<CatalogNumber Namespace="PADPIDA2025010100A">NS-2025-042</CatalogNumber>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<CLine>
<Year>2025</Year>
<CLineText>Neon Sounds LLC</CLineText>
</CLine>
<Genre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</Genre>
<OriginalReleaseDate>2025-08-15</OriginalReleaseDate>
<ParentalWarningType>NotExplicit</ParentalWarningType>
<!-- ResourceGroup links tracks and artwork to the release -->
<ResourceGroup>
<SequenceNumber>1</SequenceNumber>
<ResourceGroupContentItem>
<SequenceNumber>1</SequenceNumber>
<ReleaseResourceReference>A1</ReleaseResourceReference>
</ResourceGroupContentItem>
<ResourceGroupContentItem>
<SequenceNumber>2</SequenceNumber>
<ReleaseResourceReference>A2</ReleaseResourceReference>
</ResourceGroupContentItem>
</ResourceGroup>
</Release>

Key points:

  • ReleaseType comes before ReleaseId in ERN 4.3
  • The UPC/EAN goes into <ICPN> inside ReleaseId
  • Resources are linked through ResourceGroup (not ReleaseResourceReferenceList)
  • ReleaseLabelReference points to the label’s PartyReference

Each track also gets its own TrackRelease for individual track availability on platforms:

<TrackRelease>
<ReleaseReference>RT1</ReleaseReference>
<ReleaseId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<ReleaseResourceReference>A1</ReleaseResourceReference>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<Genre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</Genre>
<Keywords>electronic deep house chill night</Keywords>
</TrackRelease>

Defines the commercial terms under which the release is available. Each Deal specifies a territory, start date, commercial model, and use type.

<DealList>
<ReleaseDeal>
<DealReleaseReference>R0</DealReleaseReference>
<!-- Subscription streaming (e.g., Spotify Premium) -->
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>SubscriptionModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<!-- Ad-supported streaming (e.g., Spotify Free) -->
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>AdvertisementSupportedModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<!-- Pay-per-download (e.g., iTunes) -->
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>PayAsYouGoModel</CommercialModelType>
<UseType>PermanentDownload</UseType>
</DealTerms>
</Deal>
</ReleaseDeal>
</DealList>

Commercial model types:

ModelDescriptionExample
SubscriptionModelPaid subscription streamingSpotify Premium, Apple Music
AdvertisementSupportedModelFree ad-supported streamingSpotify Free, YouTube
PayAsYouGoModelPay-per-download purchaseiTunes, Amazon Music

Complete single release

A full single-track release with one primary artist, one featured artist, and complete contributor credits.

Input metadata:

FieldValue
TitleMidnight Run
ArtistLuna Wave (primary), DJ Koda (featured)
UPC198765432109
Release Date2025-08-15
LabelNeon Sounds
Catalogue NumberNS-2025-042
GenreElectronic / Deep House
C-Line2025 Neon Sounds LLC
P-Line2025 Neon Sounds LLC
Track ISRCUSNS12500001
ExplicitNot Explicit

Generated XML:

<?xml version="1.0" encoding="UTF-8"?>
<NewReleaseMessage
xmlns:ern="http://ddex.net/xml/ern/43"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ddex.net/xml/ern/43 http://ddex.net/xml/ern/43/release-notification.xsd"
AvsVersionId="3"
LanguageAndScriptCode="en">
<MessageHeader>
<MessageThreadId>20250815-neonsounds-001</MessageThreadId>
<MessageId>20250815-neonsounds-001-msg01</MessageId>
<MessageSender>
<PartyId>PADPIDA2025010100A</PartyId>
<PartyName><FullName>Neon Sounds</FullName></PartyName>
</MessageSender>
<MessageRecipient>
<PartyId>PADPIDA2014120301U</PartyId>
<PartyName><FullName>Spotify</FullName></PartyName>
</MessageRecipient>
<MessageCreatedDateTime>2025-08-01T10:30:00Z</MessageCreatedDateTime>
</MessageHeader>
<PartyList>
<Party>
<PartyReference>P_LABEL_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds LLC</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:label:100</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_ARTIST_LUNAWAVE</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Luna Wave</FullName>
</PartyName>
<PartyId>
<ISNI>0000000012345678</ISNI>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:200</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_ARTIST_DJKODA</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>DJ Koda</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:201</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_CONTRIB_SARAHCHEN</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Sarah Chen</FullName>
</PartyName>
<PartyId>
<IpiNameNumber>00123456789</IpiNameNumber>
</PartyId>
</Party>
<Party>
<PartyReference>P_CONTRIB_MIXMASTER</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Mike Torres</FullName>
</PartyName>
</Party>
<Party>
<PartyReference>P_PUBLISHER_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds Publishing</FullName>
</PartyName>
</Party>
</PartyList>
<ResourceList>
<SoundRecording>
<ResourceReference>A1</ResourceReference>
<Type>MusicalWorkSoundRecording</Type>
<SoundRecordingEdition>
<ResourceId>
<ISRC>USNS12500001</ISRC>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>
<DeliveryFile>
<Type>AudioFile</Type>
<AudioCodecType UserDefinedValue="WAV">UserDefined</AudioCodecType>
<NumberOfChannels>2</NumberOfChannels>
<SamplingRate>44100</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<File>
<URI>resources/198765432109_01_01.wav</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>d41d8cd98f00b204e9800998ecf8427e</HashSumValue>
</HashSum>
</File>
</DeliveryFile>
</TechnicalDetails>
</SoundRecordingEdition>
<WorkId>
<ISWC>T3351864278</ISWC>
</WorkId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<Contributor SequenceNumber="1">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role>ComposerLyricist</Role>
</Contributor>
<Contributor SequenceNumber="2">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role>StudioProducer</Role>
</Contributor>
<Contributor SequenceNumber="3">
<ContributorPartyReference>P_CONTRIB_MIXMASTER</ContributorPartyReference>
<Role>MixingEngineer</Role>
</Contributor>
<Contributor SequenceNumber="4">
<ContributorPartyReference>P_PUBLISHER_NEONSOUNDS</ContributorPartyReference>
<Role>MusicPublisher</Role>
</Contributor>
<WorkRightsController>
<RightsControllerPartyReference>P_LABEL_NEONSOUNDS</RightsControllerPartyReference>
<RightsControlType>RightsController</RightsControlType>
<RightSharePercentage>100.00</RightSharePercentage>
<Territory>Worldwide</Territory>
</WorkRightsController>
<Duration>PT00H04M32S</Duration>
<ParentalWarningType>NotExplicit</ParentalWarningType>
<LanguageOfPerformance>en</LanguageOfPerformance>
</SoundRecording>
<Image>
<ResourceReference>A2</ResourceReference>
<Type>FrontCoverImage</Type>
<ResourceId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890:cover</ProprietaryId>
</ResourceId>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T2</TechnicalResourceDetailsReference>
<ImageCodecType>JPEG</ImageCodecType>
<ImageHeight>3000</ImageHeight>
<ImageWidth>3000</ImageWidth>
<File>
<URI>resources/198765432109.jpg</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4</HashSumValue>
</HashSum>
</File>
</TechnicalDetails>
</Image>
</ResourceList>
<ReleaseList>
<Release>
<ReleaseReference>R0</ReleaseReference>
<ReleaseType>Single</ReleaseType>
<ReleaseId>
<ICPN>198765432109</ICPN>
<CatalogNumber Namespace="PADPIDA2025010100A">NS-2025-042</CatalogNumber>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<CLine>
<Year>2025</Year>
<CLineText>Neon Sounds LLC</CLineText>
</CLine>
<Genre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</Genre>
<OriginalReleaseDate>2025-08-15</OriginalReleaseDate>
<ParentalWarningType>NotExplicit</ParentalWarningType>
<ResourceGroup>
<SequenceNumber>1</SequenceNumber>
<ResourceGroupContentItem>
<SequenceNumber>1</SequenceNumber>
<ReleaseResourceReference>A1</ReleaseResourceReference>
</ResourceGroupContentItem>
<ResourceGroupContentItem>
<SequenceNumber>2</SequenceNumber>
<ReleaseResourceReference>A2</ReleaseResourceReference>
</ResourceGroupContentItem>
</ResourceGroup>
</Release>
<TrackRelease>
<ReleaseReference>RT1</ReleaseReference>
<ReleaseId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<ReleaseResourceReference>A1</ReleaseResourceReference>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<Genre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</Genre>
<Keywords>electronic deep house chill night</Keywords>
</TrackRelease>
</ReleaseList>
<DealList>
<ReleaseDeal>
<DealReleaseReference>R0</DealReleaseReference>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>SubscriptionModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>AdvertisementSupportedModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>PayAsYouGoModel</CommercialModelType>
<UseType>PermanentDownload</UseType>
</DealTerms>
</Deal>
</ReleaseDeal>
</DealList>
</NewReleaseMessage>
Complete ERN 4.3.2 release (all fields, with AI declarations)

The same release as above, expressed in ERN 4.3.2 with every field LabelGrid uses. Note the differences from the 4.3 version: the /432 namespace and AvsVersionId="4", <DisplayGenre> instead of <Genre>, the complex <Role><Value>…</Value></Role> form, <ContainsAI> on the track / release / image, an <AiContribution> on every contributor, and a fully-AI vocalist expressed with <SpecialContributor>GenerativeAI</SpecialContributor> (no PartyList entry).

Input metadata (same as the 4.3 example, plus AI disclosures):

FieldValue
Generative AI DisclosureMinor AI assistance only → Partly
Composition AI DisclosureNo generative AI → None
Artwork AINo generative AI → None
AI vocalistEntirely AI-generated credit → SpecialContributor / All

Generated XML:

<?xml version="1.0" encoding="UTF-8"?>
<NewReleaseMessage
xmlns:ern="http://ddex.net/xml/ern/432"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ddex.net/xml/ern/432 http://ddex.net/xml/ern/432/release-notification.xsd"
AvsVersionId="4"
LanguageAndScriptCode="en">
<MessageHeader>
<MessageThreadId>20250815-neonsounds-001</MessageThreadId>
<MessageId>20250815-neonsounds-001-msg01</MessageId>
<MessageSender>
<PartyId>PADPIDA2025010100A</PartyId>
<PartyName><FullName>Neon Sounds</FullName></PartyName>
</MessageSender>
<MessageRecipient>
<PartyId>PADPIDA2014120301U</PartyId>
<PartyName><FullName>Spotify</FullName></PartyName>
</MessageRecipient>
<MessageCreatedDateTime>2025-08-01T10:30:00Z</MessageCreatedDateTime>
</MessageHeader>
<PartyList>
<Party>
<PartyReference>P_LABEL_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds LLC</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:label:100</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_ARTIST_LUNAWAVE</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Luna Wave</FullName>
</PartyName>
<PartyId>
<ISNI>0000000012345678</ISNI>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:200</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_ARTIST_DJKODA</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>DJ Koda</FullName>
</PartyName>
<PartyId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:artist:201</ProprietaryId>
</PartyId>
</Party>
<Party>
<PartyReference>P_CONTRIB_SARAHCHEN</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Sarah Chen</FullName>
</PartyName>
<PartyId>
<IpiNameNumber>00123456789</IpiNameNumber>
</PartyId>
</Party>
<Party>
<PartyReference>P_CONTRIB_MIXMASTER</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Mike Torres</FullName>
</PartyName>
</Party>
<Party>
<PartyReference>P_PUBLISHER_NEONSOUNDS</PartyReference>
<PartyName LanguageAndScriptCode="en">
<FullName>Neon Sounds Publishing</FullName>
</PartyName>
</Party>
<!-- No Party entry for the AI vocalist — it is declared via SpecialContributor -->
</PartyList>
<ResourceList>
<SoundRecording>
<ResourceReference>A1</ResourceReference>
<Type>MusicalWorkSoundRecording</Type>
<SoundRecordingEdition>
<ResourceId>
<ISRC>USNS12500001</ISRC>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>
<DeliveryFile>
<Type>AudioFile</Type>
<AudioCodecType UserDefinedValue="WAV">UserDefined</AudioCodecType>
<NumberOfChannels>2</NumberOfChannels>
<SamplingRate>44100</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<File>
<URI>resources/198765432109_01_01.wav</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>d41d8cd98f00b204e9800998ecf8427e</HashSumValue>
</HashSum>
</File>
</DeliveryFile>
</TechnicalDetails>
</SoundRecordingEdition>
<WorkId>
<ISWC>T3351864278</ISWC>
</WorkId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<!-- Contributors use the complex Role form and carry an AiContribution -->
<Contributor SequenceNumber="1">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role><Value>ComposerLyricist</Value></Role>
<AiContribution>None</AiContribution>
</Contributor>
<Contributor SequenceNumber="2">
<ContributorPartyReference>P_CONTRIB_SARAHCHEN</ContributorPartyReference>
<Role><Value>StudioProducer</Value></Role>
<AiContribution>None</AiContribution>
</Contributor>
<Contributor SequenceNumber="3">
<ContributorPartyReference>P_CONTRIB_MIXMASTER</ContributorPartyReference>
<Role><Value>MixingEngineer</Value></Role>
<AiContribution>Partly</AiContribution>
</Contributor>
<!-- Fully AI-generated vocal credit: SpecialContributor replaces the party reference -->
<Contributor SequenceNumber="4">
<SpecialContributor>GenerativeAI</SpecialContributor>
<Role><Value>Vocalist</Value></Role>
<AiContribution>All</AiContribution>
</Contributor>
<Contributor SequenceNumber="5">
<ContributorPartyReference>P_PUBLISHER_NEONSOUNDS</ContributorPartyReference>
<Role><Value>MusicPublisher</Value></Role>
<AiContribution>Partly</AiContribution>
</Contributor>
<WorkRightsController>
<RightsControllerPartyReference>P_LABEL_NEONSOUNDS</RightsControllerPartyReference>
<RightsControlType>RightsController</RightsControlType>
<RightSharePercentage>100.00</RightSharePercentage>
<Territory>Worldwide</Territory>
</WorkRightsController>
<Duration>PT00H04M32S</Duration>
<ParentalWarningType>NotExplicit</ParentalWarningType>
<!-- Track-level AI = highest of Generative AI (Partly) and Composition AI (None) -->
<ContainsAI>Partly</ContainsAI>
<LanguageOfPerformance>en</LanguageOfPerformance>
</SoundRecording>
<Image>
<ResourceReference>A2</ResourceReference>
<Type>FrontCoverImage</Type>
<ResourceId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890:cover</ProprietaryId>
</ResourceId>
<!-- Artwork AI declaration, before TechnicalDetails -->
<ContainsAI>None</ContainsAI>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T2</TechnicalResourceDetailsReference>
<ImageCodecType>JPEG</ImageCodecType>
<ImageHeight>3000</ImageHeight>
<ImageWidth>3000</ImageWidth>
<File>
<URI>resources/198765432109.jpg</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4</HashSumValue>
</HashSum>
</File>
</TechnicalDetails>
</Image>
</ResourceList>
<ReleaseList>
<Release>
<ReleaseReference>R0</ReleaseReference>
<ReleaseType>Single</ReleaseType>
<ReleaseId>
<ICPN>198765432109</ICPN>
<CatalogNumber Namespace="PADPIDA2025010100A">NS-2025-042</CatalogNumber>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:release:67890</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave feat. DJ Koda</DisplayArtistName>
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
</DisplayArtist>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<CLine>
<Year>2025</Year>
<CLineText>Neon Sounds LLC</CLineText>
</CLine>
<!-- 4.3.2 uses DisplayGenre instead of Genre -->
<DisplayGenre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</DisplayGenre>
<OriginalReleaseDate>2025-08-15</OriginalReleaseDate>
<ParentalWarningType>NotExplicit</ParentalWarningType>
<ResourceGroup>
<SequenceNumber>1</SequenceNumber>
<ResourceGroupContentItem>
<SequenceNumber>1</SequenceNumber>
<ReleaseResourceReference>A1</ReleaseResourceReference>
</ResourceGroupContentItem>
<ResourceGroupContentItem>
<SequenceNumber>2</SequenceNumber>
<ReleaseResourceReference>A2</ReleaseResourceReference>
</ResourceGroupContentItem>
</ResourceGroup>
<!-- Release-level AI = highest value across all tracks and artwork -->
<ContainsAI>Partly</ContainsAI>
</Release>
<TrackRelease>
<ReleaseReference>RT1</ReleaseReference>
<ReleaseId>
<ProprietaryId Namespace="PADPIDA2025010100A">labelgrid:track:12345</ProprietaryId>
</ReleaseId>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Midnight Run</TitleText>
<SubTitle/>
</DisplayTitle>
<ReleaseResourceReference>A1</ReleaseResourceReference>
<ReleaseLabelReference>P_LABEL_NEONSOUNDS</ReleaseLabelReference>
<DisplayGenre>
<GenreText>Electronic</GenreText>
<SubGenre>Deep House</SubGenre>
</DisplayGenre>
<Keywords>electronic deep house chill night</Keywords>
</TrackRelease>
</ReleaseList>
<DealList>
<ReleaseDeal>
<DealReleaseReference>R0</DealReleaseReference>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>SubscriptionModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>AdvertisementSupportedModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>
<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>PayAsYouGoModel</CommercialModelType>
<UseType>PermanentDownload</UseType>
</DealTerms>
</Deal>
</ReleaseDeal>
</DealList>
</NewReleaseMessage>
Multi-language titles (Japanese)

When a release has both English and Japanese metadata. All DisplayTitleText elements come first, then all DisplayTitle elements. Japanese phonetic readings use ja-Kana (mapped from internal ja-Jpan).

<!-- All DisplayTitleText elements first -->
<DisplayTitleText LanguageAndScriptCode="ja">夜明けの歌</DisplayTitleText>
<DisplayTitleText LanguageAndScriptCode="en">Song of Dawn</DisplayTitleText>
<!-- Then all DisplayTitle elements -->
<DisplayTitle LanguageAndScriptCode="ja">
<TitleText>夜明けの歌</TitleText>
<SubTitle/>
</DisplayTitle>
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Song of Dawn</TitleText>
<SubTitle/>
</DisplayTitle>
<!-- Japanese phonetic reading uses ja-Kana -->
<PartyName LanguageAndScriptCode="en">
<FullName>Yuki Tanaka</FullName>
</PartyName>
<PartyName LanguageAndScriptCode="ja-Kana">
<FullName>タナカ ユキ</FullName>
</PartyName>

Key points:

  • Group all DisplayTitleText elements together, then all DisplayTitle elements
  • Use ja-Kana for Japanese phonetic readings (katakana) — this is mapped from the internal ja-Jpan code
  • Provide titles in each supported language
Remix track with mix version

When a track is a remix, the mix version goes into SubTitle and the remixer gets both a FeaturedArtist display role and an ArtisticRole of Remixer.

<SoundRecording>
<ResourceReference>A1</ResourceReference>
<Type>MusicalWorkSoundRecording</Type>
<SoundRecordingEdition>
<ResourceId>
<ISRC>GBXYZ2500042</ISRC>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Deep Records</PLineText>
</PLine>
</SoundRecordingEdition>
<!-- DisplayTitleText uses base title only (NOT "Horizon (Koda Extended Mix)") -->
<DisplayTitleText LanguageAndScriptCode="en">Horizon</DisplayTitleText>
<!-- Mix version goes into SubTitle -->
<DisplayTitle LanguageAndScriptCode="en">
<TitleText>Horizon</TitleText>
<SubTitle>Koda Extended Mix</SubTitle>
</DisplayTitle>
<DisplayArtistName ApplicableTerritoryCode="Worldwide">Luna Wave</DisplayArtistName>
<!-- Primary artist -->
<DisplayArtist SequenceNumber="1">
<ArtistPartyReference>P_ARTIST_LUNAWAVE</ArtistPartyReference>
<DisplayArtistRole>MainArtist</DisplayArtistRole>
</DisplayArtist>
<!-- Remixer: uses FeaturedArtist for display + ArtisticRole=Remixer -->
<DisplayArtist SequenceNumber="2">
<ArtistPartyReference>P_ARTIST_DJKODA</ArtistPartyReference>
<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
<ArtisticRole>Remixer</ArtisticRole>
</DisplayArtist>
<Duration>PT00H06M45S</Duration>
<ParentalWarningType>NotExplicit</ParentalWarningType>
</SoundRecording>

Key points:

  • DisplayTitleText contains only the base title — never the concatenated form like “Horizon (Koda Extended Mix)”
  • The mix version goes into SubTitle inside DisplayTitle
  • The remixer needs both DisplayArtistRole=FeaturedArtist and ArtisticRole=Remixer
  • If multi-language titles are used, localize the mix version in each language
Dolby Atmos (stereo + immersive)

When a track has both stereo and Dolby Atmos versions, the SoundRecording contains two SoundRecordingEdition elements — one NonImmersiveEdition and one ImmersiveEdition. Each must have its own unique ISRC.

<SoundRecording>
<ResourceReference>A1</ResourceReference>
<Type>MusicalWorkSoundRecording</Type>
<!-- Stereo edition (marked NonImmersive when Dolby also exists) -->
<SoundRecordingEdition>
<Type>NonImmersiveEdition</Type>
<ResourceId>
<ISRC>USNS12500001</ISRC>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<TechnicalDetails>
<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>
<DeliveryFile>
<Type>AudioFile</Type>
<AudioCodecType UserDefinedValue="WAV">UserDefined</AudioCodecType>
<NumberOfChannels>2</NumberOfChannels>
<SamplingRate>44100</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<File>
<URI>resources/198765432109_01_01.wav</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>d41d8cd98f00b204e9800998ecf8427e</HashSumValue>
</HashSum>
</File>
</DeliveryFile>
</TechnicalDetails>
</SoundRecordingEdition>
<!-- Dolby Atmos / Immersive edition (separate ISRC required) -->
<SoundRecordingEdition>
<Type>ImmersiveEdition</Type>
<ResourceId>
<!-- Must be a different ISRC from the stereo edition -->
<ISRC>USNS12500002</ISRC>
</ResourceId>
<PLine>
<Year>2025</Year>
<PLineText>Neon Sounds LLC</PLineText>
</PLine>
<TechnicalDetails>
<!-- Technical ref suffixed with "I" for immersive -->
<TechnicalResourceDetailsReference>T1I</TechnicalResourceDetailsReference>
<DeliveryFile>
<Type>AudioFile</Type>
<AudioCodecType UserDefinedValue="DolbyAtmos">UserDefined</AudioCodecType>
<NumberOfChannels>8</NumberOfChannels>
<SamplingRate>48000</SamplingRate>
<BitsPerSample>24</BitsPerSample>
<File>
<!-- Dolby file uses "-dolby" suffix -->
<URI>resources/198765432109_01_01-dolby.wav</URI>
<HashSum>
<Algorithm>MD5</Algorithm>
<HashSumValue>f1e2d3c4b5a6f1e2d3c4b5a6f1e2d3c4</HashSumValue>
</HashSum>
</File>
</DeliveryFile>
</TechnicalDetails>
</SoundRecordingEdition>
<DisplayTitleText LanguageAndScriptCode="en">Midnight Run</DisplayTitleText>
<!-- ... titles, artists, contributors, duration, parental warning ... -->
</SoundRecording>

Key points:

  • The stereo edition gets <Type>NonImmersiveEdition</Type> only when a Dolby edition also exists
  • The Dolby edition uses <Type>ImmersiveEdition</Type>
  • Each edition must have a different ISRC
  • The immersive TechnicalResourceDetailsReference is suffixed with I (e.g., T1I)
  • The Dolby audio file URI uses a -dolby suffix
  • Dolby Atmos requires minimum 6 channels (5.1 surround), typically 8 channels
Copyright owners with territory splits

Multiple copyright owners with regional percentage splits. The default element is WorkRightsController. When no copyright owners are set, the record label is used as the default rights controller at 100%.

<!-- Copyright owner: 60% worldwide -->
<WorkRightsController>
<RightsControllerPartyReference>P_OWNER_PUBLISHERA</RightsControllerPartyReference>
<RightsControlType>RightsController</RightsControlType>
<RightSharePercentage>60.00</RightSharePercentage>
<Territory>Worldwide</Territory>
</WorkRightsController>
<!-- Copyright owner: 40% worldwide -->
<WorkRightsController>
<RightsControllerPartyReference>P_OWNER_PUBLISHERB</RightsControllerPartyReference>
<RightsControlType>RightsController</RightsControlType>
<RightSharePercentage>40.00</RightSharePercentage>
<Territory>Worldwide</Territory>
</WorkRightsController>

Key points:

  • Percentages must total exactly 100% per territory
  • Use Worldwide for global coverage, or specific ISO 3166-1 alpha-2 territory codes
  • RightSharePercentage uses two decimal places (e.g., 60.00)
  • One specific outlet uses ResourceRightsController instead of WorkRightsController
Territory-specific deal

When a release is available only in specific countries rather than worldwide:

<Deal>
<DealTerms>
<!-- Available only in US, GB, DE, FR, and AU -->
<TerritoryCode>US</TerritoryCode>
<TerritoryCode>GB</TerritoryCode>
<TerritoryCode>DE</TerritoryCode>
<TerritoryCode>FR</TerritoryCode>
<TerritoryCode>AU</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-08-15</StartDate>
</ValidityPeriod>
<CommercialModelType>SubscriptionModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>

Key points:

  • List multiple <TerritoryCode> elements within the same DealTerms
  • Use ISO 3166-1 alpha-2 codes (e.g., US, GB, DE)
  • Omit Worldwide when specifying individual territories
Takedown (removing a release)

When you issue a takedown, both the start and end dates in the validity period are set 48 hours in the past:

<Deal>
<DealTerms>
<TerritoryCode>Worldwide</TerritoryCode>
<ValidityPeriod>
<StartDate>2025-06-13</StartDate>
<EndDate>2025-06-13</EndDate>
</ValidityPeriod>
<CommercialModelType>SubscriptionModel</CommercialModelType>
<UseType>UserMakeAvailableLabelProvided</UseType>
</DealTerms>
</Deal>

Key points:

  • Both StartDate and EndDate are set to the same date, 48 hours in the past
  • This signals to the DSP that the release should be removed
  • A takedown deal is generated for each commercial model type

Quick lookup table mapping LabelGrid metadata fields to their DDEX XML representation.

LabelGrid fieldDDEX XML elementNotes
UPC/EAN<ICPN>Inside <ReleaseId>
ISRC<ISRC>Inside <ResourceId> within <SoundRecordingEdition>
ISWC<ISWC>Inside <WorkId> on parent <SoundRecording> (not inside Edition)
Title<DisplayTitleText> + <DisplayTitle>One per language; DisplayTitleText uses base title only
Mix version<SubTitle>Inside <DisplayTitle>
Primary artist<DisplayArtistRole>MainArtist</DisplayArtistRole>
Featured artist<DisplayArtistRole>FeaturedArtist</DisplayArtistRole>
RemixerFeaturedArtist + <ArtisticRole>Remixer</ArtisticRole>Both elements needed
Genre<GenreText> + <SubGenre>Mapped to DSP-specific genre codes
P-Line<PLine> > <Year> + <PLineText>
C-Line<CLine> > <Year> + <CLineText>
Explicit<ParentalWarningType>Values: NotExplicit, Explicit, ExplicitContentEdited
Release date<OriginalReleaseDate> + deal <StartDate>Format: YYYY-MM-DD
Territory<TerritoryCode>Worldwide or ISO 3166-1 alpha-2
Contributor (Producer)<Role>StudioProducer</Role>”Producer” display name maps to DDEX StudioProducer
Contributor (other)<Contributor> > <Role>DDEX role codes (e.g., ComposerLyricist, MixingEngineer)
Publisher<Role>MusicPublisher</Role>Inside <Contributor>
Audio file<File> > <URI>Pattern: resources/{UPC}_{disc}_{track}.{ext}
IPI<IpiNameNumber>Zero-padded to 11 digits
ISNI<ISNI>16 characters
Cover art<Image> with <Type>FrontCoverImage</Type>
Release type<ReleaseType>Appears before <ReleaseId> in ERN 4.3
Catalogue number<CatalogNumber>Inside <ReleaseId>
Track resources<ResourceGroup> > <ResourceGroupContentItem>Not ReleaseResourceReferenceList
Duration<Duration>ISO 8601 format: PT00H04M32S
Language<LanguageOfPerformance>ISO language code
Keywords<Keywords>Inside <TrackRelease>
Dolby stereo<Type>NonImmersiveEdition</Type>Only present when Dolby edition also exists
Dolby Atmos<Type>ImmersiveEdition</Type>Separate ISRC required; file URI uses -dolby suffix
Copyright owner<WorkRightsController>With <RightSharePercentage> and <Territory>

These elements exist only in 4.3.1 and 4.3.2 (not in 4.3.0). See AI declaration fields.

LabelGrid fieldDDEX XML elementNotes
Genre (4.3.1+)<DisplayGenre>Replaces <Genre>; same GenreText + SubGenre children
Contributor role (4.3.1+)<Role><Value>…</Value></Role>Complex form; <Value UserDefinedValue="…">UserDefined</Value> for non-standard roles
AI on track/release/artwork<ContainsAI>Values None / Partly / All; on SoundRecording, Release, and Image
AI per contributor<AiContribution>Values None / Partly / All; child of <Contributor>, after <Role>
Fully AI-generated credit<SpecialContributor>GenerativeAI</SpecialContributor>Replaces <ContributorPartyReference> (no party name)

Use this checklist to verify your XML before submission:

  • Root <NewReleaseMessage> includes ERN 4.3 namespace and schema location
  • <MessageHeader> has valid MessageThreadId, MessageId, sender, and recipient
  • All parties (label, artists, contributors, publishers) are defined in <PartyList>
  • Each party has a unique <PartyReference>
  • <SoundRecording> type is MusicalWorkSoundRecording
  • ISRC is inside <SoundRecordingEdition> > <ResourceId>
  • ISWC (if present) is on parent <SoundRecording> via <WorkId>, not inside the Edition
  • <DisplayTitleText> contains only the base title (no mix version)
  • Mix version (if any) is in <SubTitle> inside <DisplayTitle>
  • Remixer has both DisplayArtistRole=FeaturedArtist and ArtisticRole=Remixer
  • Audio file <URI> follows the pattern resources/{UPC}_{disc}_{track}.{ext}
  • Cover art <Image> has <Type>FrontCoverImage</Type>
  • <ReleaseType> comes before <ReleaseId> in the main <Release>
  • UPC/EAN is in <ICPN> inside <ReleaseId>
  • Resources linked via <ResourceGroup> (not ReleaseResourceReferenceList)
  • Dolby Atmos editions have separate ISRCs from stereo editions
  • <WorkRightsController> percentages total 100% per territory
  • Deal <TerritoryCode> uses Worldwide or valid ISO 3166-1 alpha-2 codes
  • All dates use YYYY-MM-DD format
  • Takedown deals have both <StartDate> and <EndDate> set 48 hours in the past

ERN 4.3.1 / 4.3.2 only:

  • Genre uses <DisplayGenre> (not <Genre>)
  • Every <Contributor> uses the complex <Role><Value>…</Value></Role> form
  • <ContainsAI> is present on each <SoundRecording>, the <Release>, and the cover <Image>, with value None, Partly, or All
  • <ContainsAI> on the track sits after <ParentalWarningType>; on the image it sits before <TechnicalDetails>
  • Each <Contributor> carries an <AiContribution> (None / Partly / All) immediately after <Role>
  • Fully AI-generated credits use <SpecialContributor>GenerativeAI</SpecialContributor> in place of <ContributorPartyReference>

If you need assistance with DDEX integration, contact our support team with your technical requirements.

Not using LabelGrid yet?

Everything you just read about is available on our platform.

See what LabelGrid can do →