CUSTOMS Release moderation for distributors and labels

Your releases pass moderation before a store ever sees them.

CUSTOMS checks metadata, artwork, audio and lyrics in a single request and returns a clear verdict: what is wrong, on which track, at which second, and how to fix it.

18,000tracks a day, throughput on a single server
96%accuracy recognising AI-generated music
12checks in one request

01 What we check

Four gates, twelve checks.

Everything a store moderator looks at, checked before the release leaves your desk.

01Metadata

  • Language and script. A release declared in one language and written in another; a lookalike letter from another alphabet that store search will never match; transliteration in brackets.
  • SEO titles. "Hits 2026", search phrases instead of titles, promotional words, platform names, links.
  • Artist names. A description instead of a name ("Sleep Music"), several artists in one field, the artist's name inside the title.
  • Release artists. Various Artists where it does not belong and missing where it does; a guest on one track credited on the whole album; one artist spelled two ways.

02Artwork

  • Text against metadata. The cover shows the wrong title or the wrong artists.
  • What must not be there. Links, QR codes, social handles, phone numbers, store logos, "Out Now", prices, release dates, "CD" and "Vinyl", stock watermarks, a Parental Advisory label with no explicit track, "EP" on a single.
  • What it shows. Nudity, violence, weapons, drugs, hate symbols, recognisable public figures.
  • Quality. Size, square format, colour mode, blur and pixelation at full size.

03Audio

  • Music made by AI generators.
  • Duplicates in your catalogue, including sped-up and slowed-down copies.
  • One recording under different titles within a release.
  • Recordings already released by another artist.
  • Silence instead of a track; a lossless master made from a compressed file.

04Lyrics

  • Transcription of every track's lyrics.
  • Explicit language on a track not marked explicit.
  • Sung language different from the declared one.
  • Someone else's lyrics and covers.
  • Prohibited content, with the line and the time in the track.

02 How it works

Customs for releases.

One release goes in. All four gates check it at the same time. A verdict comes out.

  1. 01Send the release.One request: metadata, artwork, tracks. Files go as a link or as a path on your own server.
  2. 0212 checks run in parallel.Metadata, artwork, audio and lyrics are checked at the same time.
  3. 03Get the verdict.PASS: ready to deliver. WARNING: worth a look. FAIL: the store will send it back.
  4. 04Your moderator decides in a minute.Every finding says what is wrong, where, and how to fix it, with a separate message for the artist.

03 Answers people understand

Not "error 4012". An explanation.

Every finding carries a severity, a place, and two messages: one for the moderator, one for the artist.

FAILTrack 3 · 01:12
For the moderator
Explicit language in the lyrics, and the track is not marked explicit.
For the artist
Mark the track as explicit or upload a clean version.
WARNINGArtwork
For the moderator
The cover says "EP", and the release has two tracks: that is a single.
For the artist
Remove "EP" from the artwork or change the release type.
WARNINGArtists
For the moderator
A guest on one track is credited as an artist of the whole album.
For the artist
Credit the guest on their track only.

04 For developers

One request. One JSON.

One REST request, one response format. Wait for the result in the same request, receive it at your own address when it is ready, or fetch it later.

  • One request
  • One JSON
  • Your track id on every finding
  • Result delivered to your address when ready
POST /api/v1/checksRequest
curl -X POST "https://api.customs.example/api/v1/checks?wait=30" \
  -H "Authorization: Bearer cst_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "release_id": "REL-10457",
    "title": "Night Drive",
    "language": "English",
    "album_type": "Single",
    "artists": [{"name": "Lumen Void", "role": "primary"}],
    "tracks": [
      {"track_id": "T-1", "title": "Night Drive", "explicit": false,
       "audio_url": "https://files.example/REL-10457-01.wav"}
    ],
    "cover_url": "https://files.example/REL-10457.jpg"
  }'
200 application/jsonResponse, shortened
{
  "release_id": "REL-10457",
  "status": "completed",
  "verdict": "FAIL",
  "findings": [
    {
      "code": "lyrics_explicit_not_declared",
      "severity": "major",
      "track": 1,
      "track_id": "T-1",
      "message": "Explicit language at 01:12, and the track is not marked explicit."
    },
    {
      "code": "cover_format_word_mismatch",
      "severity": "minor",
      "message": "The cover calls the release an EP, and it has one track: that is a single."
    }
  ]
}

05 Why CUSTOMS

Built for moderation teams.

An assistant that knows the store rules, works on your server and follows your exceptions.

01

Store rules, not guesswork.

Every check is grounded in Apple Music and Spotify requirements. A finding's severity matches what the store would do: send the release back, hide it, or let it through.

02

An assistant to your moderators.

CUSTOMS does not reject releases on its own; it shows the moderator where to look. Clean releases go out faster, problem releases do not slip through.

03

Runs on your server.

Tracks and artwork are read where they are. We do not store your files.

04

Your rules.

Set the severity of each check and your own exceptions for artist names in your catalogue. Switch off the checks you do not need.

05

Verdict by country.

One finding can block a release in one country and be a remark in another.

06

Your whole catalogue.

Metadata checks are fast enough to run across releases that are already out, not just new ones.

06 Get started

Let stores see only ready releases.

Connecting takes one API key and one request. We will show you the results on your own releases.