Splits
Send contract PDFs and get the deal back as data: the terms in exactly the shape the royalty calculation accepts, plus each party's master, publishing and SoundExchange percentages. Nothing is stored.
/registry/v1/splits- Price: 30 credits
- Request: multipart/form-data
- Response: text/event-stream
- Typical time: 30 s – 2 min
Request
contractsfile, repeated required: Contract PDFs: up to 10 files, 20 MB in total. Send the field once per file; several PDFs are merged into one set of terms.main_artist_namestring: Optional. The artist the splits are built around: they are kept even at 0 / 0 and named in splits.main_artist, by the name the contract uses. If the name isn't found, main_artist is null and the artist is left out.Idempotency-Keyheader: Optional. The same key with the same files and artist in the same billing period is charged once. Recommended.
Response
The same framing as a calculation: heartbeat lines (: ping) while the parse runs, then exactly one data: event, a result or an error.
Result event
Two views of one contract. contract_terms is documented under the royalty calculation's request and can be sent there verbatim: parse a contract once, then run every statement against it at the base price with no AI. splits is the Registry's ownership view. A contract that gives a different split per song contributes only its blanket shares to splits; read contract_terms, where each such share lists its works.
contract_terms The deal, in exactly the shape the royalty calculation accepts.
splits The Registry's ownership view, one line per party.
main_artiststring | null: The party matching main_artist_name, by the name the contract uses; null when the name wasn't found or none was sent.parties[].name, rolestring: The party as named in the contract. Parties with no master, publishing or SoundExchange share are left out; the main artist is always kept.parties[].master_pctnumber: Share of the sound recording's income, 0–100.parties[].publishing_pctnumber: Share of the composition's income, 0–100.parties[].soundexchange_pctnumber: Share of neighbouring-rights income the contract assigns, where it does.
billing What this call cost.
creditsinteger: Credits charged for this call. 0 on a replay under the same Idempotency-Key.replayedtrue: Present only on a replay: this result was charged on its first run, not again.request_idstring: The id the charge is recorded under. Quote it to support.
Unreadable contracts
A scanned image, an encrypted file or an empty PDF ends in an error event with code CONTRACT_UNREADABLE. An error event is never billed.