Skip to main content

Overview

The Royalti.io API supports advanced metadata fields for both Products (albums/releases) and Assets (tracks) aligned with the DDEX MEAD (Music Enrichment and Description) standard. These fields enable rich metadata delivery to Digital Service Providers (DSPs), improving discoverability and providing comprehensive release information.

When to Use MEAD Fields

  • Reissues and Special Editions: Track original release dates, edition types, and reissue status
  • Chart-Eligible Releases: Include chart history and sequence information
  • Professional Productions: Document recording/mastering locations, producers, and engineers
  • Multi-Disc Releases: Specify disc counts and track totals
  • Catalog Variants: Link related releases via parent release IDs
  • Track-Level Enrichment: Add musical attributes like tempo, key, and mood to assets

Product MEAD Fields

Release Information

FieldTypeDescriptionExample
editionstringEdition designation”Deluxe”, “Remastered”, “Anniversary”
reissuebooleanWhether this is a reissuetrue
originalReleaseDatedateOriginal release date (for reissues)“1985-06-15”
packageTypestringPhysical/digital package type”Album”, “EP”, “Compilation”
totalTracksintegerTotal track count12
totalDiscsintegerTotal disc count2
sequenceNumberintegerPosition in series/discography5
parentReleaseIduuidParent release for variants”550e8400-e29b-41d4-a716-446655440000”

Production Credits

FieldTypeDescriptionExample
producerarrayProducer name(s)[“Rick Rubin”, “Dr. Dre”]
engineerarrayEngineer name(s)[“Bob Clearmountain”]
recordingLocationstringRecording studio/location”Abbey Road Studios, London”
masteringLocationstringMastering facility”Sterling Sound, NYC”

Chart and Performance Data

FieldTypeDescription
chartHistoryarrayHistorical chart positions
Chart History Object:
{
  "chart": "Billboard Hot 100",
  "position": 1,
  "date": "2024-03-15"
}
FieldTypeDescriptionExample
c_line_yearintegerCopyright line year2024
p_line_yearintegerPhonogram line year2024
copyrightstringCopyright holder”XYZ Records Inc”
publisherstringPublisher name”XYZ Publishing”
languagestringPrimary language (ISO 639-1)“en”

Asset MEAD Fields

Assets (tracks) support their own set of MEAD enhancement fields for track-level metadata.

Musical Attributes

FieldTypeDescriptionExample
temponumberTempo in BPM120
keystringMusical key”C major”, “A minor”
moodarrayMood descriptors[“Energetic”, “Uplifting”]

Production Information

FieldTypeDescriptionExample
recordingLocationstringRecording studio/location”Electric Lady Studios, NYC”
recordingDatedateDate of recording”2024-03-15”
productionYearintegerYear of production2024
copyrightOwnerstringCopyright owner”XYZ Records Inc”

Classification

FieldTypeDescriptionExample
genrearrayGenre classifications[“Pop”, “Electronic”]
subGenrearraySub-genre classifications[“Synth-pop”, “Dance”]
rhythmStylearrayRhythm style descriptors[“Four-on-the-floor”]
instrumentationarrayInstruments used[“Synthesizer”, “Drums”, “Bass”]
languagestringLyric language (ISO 639-1)“en”

Additional Metadata

FieldTypeDescriptionExample
alternativeTitlesarrayAlternative track titles[“Radio Edit”, “Club Mix”]
chartPositionsarrayHistorical chart positionsSee chart object below

Quick Start

Creating a Product with MEAD Fields

curl -X POST https://api.royalti.io/product \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Greatest Hits (Remastered)",
    "upc": "123456789012",
    "displayArtist": "Example Artist",
    "releaseDate": "2024-06-01",
    "edition": "Remastered",
    "reissue": true,
    "originalReleaseDate": "1995-03-15",
    "c_line_year": 2024,
    "p_line_year": 1995,
    "copyright": "Legacy Records LLC",
    "publisher": "Legacy Records LLC",
    "totalTracks": 16,
    "totalDiscs": 1,
    "recordingLocation": "Sunset Sound, Los Angeles",
    "masteringLocation": "Bernie Grundman Mastering",
    "producer": ["Original Producer Name"],
    "engineer": ["Remaster Engineer Name"]
  }'

Creating an Asset with MEAD Fields

curl -X POST https://api.royalti.io/asset \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Summer Nights",
    "isrc": "USRC12345678",
    "displayArtist": "Example Artist",
    "tempo": 128,
    "key": "G major",
    "mood": ["Energetic", "Happy", "Summer"],
    "genre": ["Pop", "Dance"],
    "subGenre": ["Synth-pop"],
    "recordingLocation": "Electric Lady Studios, NYC",
    "recordingDate": "2024-02-15",
    "productionYear": 2024,
    "copyrightOwner": "XYZ Records Inc",
    "instrumentation": ["Synthesizer", "Drums", "Bass", "Vocals"],
    "language": "en"
  }'

Common Use Cases

Product: Reissued Album

When re-releasing a classic album with new mastering:
{
  "title": "Thriller (40th Anniversary Edition)",
  "releaseDate": "2022-11-18",
  "edition": "40th Anniversary",
  "reissue": true,
  "originalReleaseDate": "1982-11-30",
  "c_line_year": 2022,
  "p_line_year": 1982,
  "masteringLocation": "Capitol Studios, Hollywood",
  "producer": ["Quincy Jones"],
  "engineer": ["Matt Hennessy"]
}
For reissues, p_line_year typically reflects the original recording year, while c_line_year reflects the new release year.

Product: Deluxe Edition with Bonus Tracks

When releasing an expanded version of an album:
{
  "title": "Album Name (Deluxe Edition)",
  "edition": "Deluxe",
  "totalTracks": 18,
  "totalDiscs": 2,
  "parentReleaseId": "original-album-uuid",
  "sequenceNumber": 2
}

Product: Multi-Disc Box Set

For comprehensive anthology releases:
{
  "title": "Complete Studio Albums Box Set",
  "packageType": "Box Set",
  "totalDiscs": 8,
  "totalTracks": 96,
  "edition": "Collector's Edition",
  "recordingLocation": "Various Studios",
  "producer": ["Producer A", "Producer B", "Producer C"]
}

Product: Chart-Eligible Release with History

Including historical chart performance:
{
  "title": "Hit Single",
  "chartHistory": [
    {
      "chart": "Billboard Hot 100",
      "position": 1,
      "date": "2023-08-15"
    },
    {
      "chart": "UK Singles Chart",
      "position": 3,
      "date": "2023-08-18"
    }
  ]
}

Asset: Electronic Dance Track

Rich metadata for DJ and playlist curation:
{
  "title": "Midnight Drive",
  "isrc": "USRC98765432",
  "displayArtist": "DJ Example",
  "tempo": 126,
  "key": "A minor",
  "mood": ["Dark", "Driving", "Atmospheric"],
  "genre": ["Electronic", "House"],
  "subGenre": ["Tech House", "Progressive"],
  "rhythmStyle": ["Four-on-the-floor"],
  "instrumentation": ["Synthesizer", "Drum Machine", "Bass Synthesizer"],
  "language": "en"
}

Asset: Acoustic Recording

Capturing performance details:
{
  "title": "Unplugged Session",
  "isrc": "USRC11223344",
  "displayArtist": "Singer Songwriter",
  "recordingLocation": "Village Studios, Los Angeles",
  "recordingDate": "2024-01-20",
  "productionYear": 2024,
  "copyrightOwner": "Indie Label LLC",
  "mood": ["Intimate", "Melancholic", "Reflective"],
  "instrumentation": ["Acoustic Guitar", "Vocals", "Piano"],
  "key": "E minor",
  "tempo": 72
}

Updating Existing Products

Add MEAD fields to existing products using the PUT endpoint:
curl -X PUT https://api.royalti.io/product/prod-123 \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "edition": "Deluxe",
    "totalTracks": 15,
    "producer": ["New Producer"],
    "recordingLocation": "Studio Name"
  }'

Updating Existing Assets

Add MEAD fields to existing assets using the PUT endpoint:
curl -X PUT https://api.royalti.io/asset/asset-123 \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tempo": 128,
    "key": "C major",
    "mood": ["Uplifting", "Energetic"],
    "copyrightOwner": "New Rights Holder LLC"
  }'

Bulk Operations

Update multiple products with MEAD fields efficiently:
curl -X POST https://api.royalti.io/product/bulk \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      {
        "title": "Album One",
        "upc": "111111111111",
        "displayArtist": "Artist",
        "releaseDate": "2024-01-01",
        "edition": "Standard",
        "c_line_year": 2024,
        "p_line_year": 2024
      },
      {
        "title": "Album One (Deluxe)",
        "upc": "222222222222",
        "displayArtist": "Artist",
        "releaseDate": "2024-03-01",
        "edition": "Deluxe",
        "c_line_year": 2024,
        "p_line_year": 2024,
        "totalTracks": 18
      }
    ]
  }'

DSP Delivery Integration

MEAD fields are automatically included when delivering products to DSPs that support rich metadata.

Supported Providers

DSPs that accept MEAD enhancement fields:
ProviderEditionReissue InfoProduction CreditsChart Data
SpotifyYesYesYesNo
Apple MusicYesYesYesNo
YouTube MusicYesYesPartialNo
TidalYesYesYesYes
DeezerYesYesPartialNo
Amazon MusicYesYesYesNo

Validation Before Delivery

When delivering products, MEAD fields are validated against provider requirements:
curl -X POST https://api.royalti.io/product/prod-123/deliveries/validate \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "providers": ["spotify-ddex-sftp", "apple-ddex-api"]
  }'
The validation response includes warnings for MEAD fields that may not transfer to specific providers.

Best Practices

Copyright Year Accuracy

Use p_line_year for original recording year and c_line_year for the current release compilation/mastering year.

Link Related Releases

Use parentReleaseId and sequenceNumber to maintain catalog relationships between standard and deluxe editions.

Production Credits

Include all relevant producers and engineers for proper attribution and improved DSP discoverability.

Reissue Documentation

Always set originalReleaseDate when reissue is true for accurate release history.

Troubleshooting

Cause: The delivery provider may not support specific MEAD fields.Solution:
  1. Check the provider’s supported fields in the Product Delivery guide
  2. Verify the fields are set before delivery
  3. Some fields are DDEX MEAD-specific and may not transfer via CSV delivery methods
Error: Year must be between 1900 and 2100Solution: Ensure year values are 4-digit integers within the valid range:
{
  "c_line_year": 2024,
  "p_line_year": 1985
}
Error: Invalid chart history formatSolution: Each chart history entry must include chart, position, and date:
{
  "chartHistory": [
    {
      "chart": "Billboard Hot 100",
      "position": 1,
      "date": "2024-01-15"
    }
  ]
}
Error: Tempo must be a positive numberSolution: Tempo should be a positive integer representing BPM (beats per minute), typically between 60-200:
{
  "tempo": 128
}
Cause: Some DSPs have their own genre/mood taxonomies and may not accept custom values.Solution:
  1. Use standardized mood and genre terms where possible
  2. Check DSP-specific documentation for accepted values
  3. Asset classification fields like mood, genre, and subGenre are best-effort mappings