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 changes — DisplayGenre, 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.
ERN 4.3 message structure
Section titled “ERN 4.3 message structure”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 datesThe 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">| Attribute | Description |
|---|---|
xmlns:ern | ERN 4.3 namespace URI |
xsi:schemaLocation | Schema for validation |
AvsVersionId | Allowed value set version |
LanguageAndScriptCode | Default language of the message |
ERN 4.3.2
Section titled “ERN 4.3.2”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.
Root element
Section titled “Root element”<?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">| Attribute | ERN 4.3 | ERN 4.3.2 |
|---|---|---|
xmlns:ern | http://ddex.net/xml/ern/43 | http://ddex.net/xml/ern/432 |
xsi:schemaLocation | …/ern/43 …/ern/43/release-notification.xsd | …/ern/432 …/ern/432/release-notification.xsd |
AvsVersionId | 3 | 4 |
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:
| Area | ERN 4.3 (4.3.0) | ERN 4.3.1 and 4.3.2 |
|---|---|---|
| Genre element | <Genre> | <DisplayGenre> — same GenreText + SubGenre children, just renamed |
| Contributor role | Simple: <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.
Where each element goes
Section titled “Where each element goes”| Element | Appears on | Position | Values |
|---|---|---|---|
<ContainsAI> | each <SoundRecording> (track) | After <ParentalWarningType>, before <LanguageOfPerformance> | None / Partly / All |
<ContainsAI> | the main <Release> | After the <ResourceGroup> block | None / 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 AI | Replaces <ContributorPartyReference> (mutually exclusive) | Fixed value GenerativeAI |
How the values are determined
Section titled “How the values are determined”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 selection | DDEX value |
|---|---|
| No generative AI was used | None |
| Minor AI assistance only | Partly |
| AI generated material portions | Partly |
| Entirely generated with AI | All |
- 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 atPartly— a value ofAllis only ever expressed through<SpecialContributor>GenerativeAI</SpecialContributor>, which carries no party name.
Examples in context
Section titled “Examples in context”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.
MessageHeader
Section titled “MessageHeader”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>| Element | Description |
|---|---|
MessageThreadId | Groups related messages (e.g., updates to the same release) |
MessageId | Unique identifier for this specific message |
MessageSender | Your organization’s DDEX Party ID and name |
MessageRecipient | The receiving DSP’s Party ID and name |
MessageCreatedDateTime | ISO 8601 timestamp of when the message was created |
PartyList
Section titled “PartyList”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.
Record label
Section titled “Record label”<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
Section titled “Artists”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
Section titled “Contributors”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>Publishers
Section titled “Publishers”<Party> <PartyReference>P_PUBLISHER_NEONSOUNDS</PartyReference> <PartyName LanguageAndScriptCode="en"> <FullName>Neon Sounds Publishing</FullName> </PartyName></Party>Supported party identifiers:
| Identifier | Element | Format |
|---|---|---|
| ISNI | <ISNI> | 16 characters (15 digits + check digit) |
| IPI | <IpiNameNumber> | Zero-padded to 11 digits |
| Proprietary | <ProprietaryId> | LabelGrid internal reference |
ResourceList
Section titled “ResourceList”Contains all audio files and artwork. Each resource gets a ResourceReference (e.g., A1, A2) used to link it to releases.
Sound recording
Section titled “Sound recording”<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:
ISRCandPLinego insideSoundRecordingEditionISWCgoes on the parentSoundRecordingviaWorkId(not inside the Edition)DisplayTitleTextcontains only the base title (no mix version)- The
SubTitleelement insideDisplayTitleholds 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}
Cover art
Section titled “Cover art”<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>ReleaseList
Section titled “ReleaseList”Contains the main release (the album or single) and individual track releases. The main release links to resources via ResourceGroup.
Main release
Section titled “Main release”<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:
ReleaseTypecomes beforeReleaseIdin ERN 4.3- The UPC/EAN goes into
<ICPN>insideReleaseId - Resources are linked through
ResourceGroup(notReleaseResourceReferenceList) ReleaseLabelReferencepoints to the label’sPartyReference
Track release
Section titled “Track release”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>DealList
Section titled “DealList”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:
| Model | Description | Example |
|---|---|---|
SubscriptionModel | Paid subscription streaming | Spotify Premium, Apple Music |
AdvertisementSupportedModel | Free ad-supported streaming | Spotify Free, YouTube |
PayAsYouGoModel | Pay-per-download purchase | iTunes, Amazon Music |
Examples
Section titled “Examples”Complete single release
A full single-track release with one primary artist, one featured artist, and complete contributor credits.
Input metadata:
| Field | Value |
|---|---|
| Title | Midnight Run |
| Artist | Luna Wave (primary), DJ Koda (featured) |
| UPC | 198765432109 |
| Release Date | 2025-08-15 |
| Label | Neon Sounds |
| Catalogue Number | NS-2025-042 |
| Genre | Electronic / Deep House |
| C-Line | 2025 Neon Sounds LLC |
| P-Line | 2025 Neon Sounds LLC |
| Track ISRC | USNS12500001 |
| Explicit | Not 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):
| Field | Value |
|---|---|
| Generative AI Disclosure | Minor AI assistance only → Partly |
| Composition AI Disclosure | No generative AI → None |
| Artwork AI | No generative AI → None |
| AI vocalist | Entirely 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
DisplayTitleTextelements together, then allDisplayTitleelements - Use
ja-Kanafor Japanese phonetic readings (katakana) — this is mapped from the internalja-Jpancode - 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:
DisplayTitleTextcontains only the base title — never the concatenated form like “Horizon (Koda Extended Mix)”- The mix version goes into
SubTitleinsideDisplayTitle - The remixer needs both
DisplayArtistRole=FeaturedArtistandArtisticRole=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
TechnicalResourceDetailsReferenceis suffixed withI(e.g.,T1I) - The Dolby audio file URI uses a
-dolbysuffix - 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
Worldwidefor global coverage, or specific ISO 3166-1 alpha-2 territory codes RightSharePercentageuses two decimal places (e.g.,60.00)- One specific outlet uses
ResourceRightsControllerinstead ofWorkRightsController
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 sameDealTerms - Use ISO 3166-1 alpha-2 codes (e.g.,
US,GB,DE) - Omit
Worldwidewhen 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
StartDateandEndDateare 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
Field-to-XML reference
Section titled “Field-to-XML reference”Quick lookup table mapping LabelGrid metadata fields to their DDEX XML representation.
| LabelGrid field | DDEX XML element | Notes |
|---|---|---|
| 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> | |
| Remixer | FeaturedArtist + <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> |
ERN 4.3.1 / 4.3.2 only
Section titled “ERN 4.3.1 / 4.3.2 only”These elements exist only in 4.3.1 and 4.3.2 (not in 4.3.0). See AI declaration fields.
| LabelGrid field | DDEX XML element | Notes |
|---|---|---|
| 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) |
XML structure checklist
Section titled “XML structure checklist”Use this checklist to verify your XML before submission:
- Root
<NewReleaseMessage>includes ERN 4.3 namespace and schema location -
<MessageHeader>has validMessageThreadId,MessageId, sender, and recipient - All parties (label, artists, contributors, publishers) are defined in
<PartyList> - Each party has a unique
<PartyReference> -
<SoundRecording>type isMusicalWorkSoundRecording - 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=FeaturedArtistandArtisticRole=Remixer - Audio file
<URI>follows the patternresources/{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>(notReleaseResourceReferenceList) - Dolby Atmos editions have separate ISRCs from stereo editions
-
<WorkRightsController>percentages total 100% per territory - Deal
<TerritoryCode>usesWorldwideor valid ISO 3166-1 alpha-2 codes - All dates use
YYYY-MM-DDformat - 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 valueNone,Partly, orAll -
<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>
Need help?
Section titled “Need help?”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 →