- Recording (
recording.*). Administrators and credits for recordings, and the recordings of a musical work by ISWC. - Musical work (
musicalwork.*). The full publishing behind recordings, and the works credited to a writer.
Concepts
Reading the lookup responses is much easier with four distinctions.Sound recording vs musical work
A sound recording is a specific captured performance, identified by ISRC. A musical work is the composition it is a recording of, identified by ISWC. One recording can resolve to several musical works, and one musical work has many recordings. Every lookup method crosses between the two in one direction or the other.Ownership vs collection
Mechanical ownership share is a rights holder’s share of the work, on a 0–100 scale. It carries no territory: owning a share of a work means owning that share everywhere. Collection share is what is collectible in a specific territory, which diverges from ownership wherever a sub-publishing or administration deal puts collection in local hands. We hold it for controlled chains only, so the collection reported for a work in a country is the controlled part of it, never the whole work redistributed. A rights holder can carry a real ownership share and contribute no collection at all.Bands vs exact shares
Shares come back as band labels —0-30, 30-70, 70-100 — in both mech_ownership_share and
mech_share. The precise numbers are a separately priced add-on: set options.exact_ownership on
musicalwork.recording.details.search.post and the same fields carry the figure instead. A key
without that product gets a 403 for the option, not a silent downgrade.
A
null share is not a zero: it means the data carries no share. A territory with nothing
collectible is omitted from collection rather than reported as zero.Rights vs credits
administrator_list answers who controls the publishing. credit_list answers who made the
recording — producers, engineers, players, composers, labels. They come from different pipelines and
will disagree about the same recording. That is expected: they answer different questions, and we do
not reconcile them.
Response conventions
Every method answers over HTTP 200. The outcome of the call ismessage.header.status_code, and
a request we cannot run carries a prose hint beside a machine-readable hint_code in the same
header. Integrate against hint_code — the prose is free to change.
An empty result is a coverage gap, never an error: an ISRC, ISWC or IPI we hold nothing for is a
200 with an empty list, not a 404. A failed read is a 500 and never an empty list, so the two
can always be told apart.
The batch methods take up to 25 recordings and answer one entry per submitted recording, in
request order, so you can zip the response onto your request. Any bad input fails the whole
request with a 400: there is no per-row invalid state. ISRCs and ISWCs are accepted hyphenated and
in lower case.
The paginated methods serve a fixed page size of 25. Sending page_size is a 400 rather than
being ignored, so a short page always means the end of the results.