Rights and availability
A right is a node in a tree, not a word in a list. The taxonomy has fifteen categories (theatrical, non-theatrical, transport and hospitality, physical, television, transactional, streaming, mobile and social, clips and footage, promotional, allied, interactive, derivative, AI and data, secondary), groups under them, and the leaves a deal actually grants. Granting a node grants its descendants. GET /v1/reference/rights returns the whole tree with definitions, synonyms, EMA Avails types and the regions.
What a work holds
| Position | Meaning |
|---|---|
| owned | An ownership holding is recorded: every right, worldwide, in perpetuity unless narrowed. |
| licensed_in | Holdings that came in under contract, for some rights, places and term. Inbound deals imply these automatically. |
| mixed | Both of the above. |
| not_recorded | Nothing recorded. Not available, and not "not held" either: nobody has said. Rights out still show. |
Availability
Availability is rights in, less exclusive rights out, less restrictions, worked out per leaf right and per country over intervals of time, then rolled up to the cell asked about. Non-exclusive rights out remove exclusive availability only.
| State | Meaning |
|---|---|
| available | Held, nothing sold or restricting; exclusive possible. |
| available_non_exclusive | Non-exclusive rights out exist, so only shared availability remains. |
| partial | Available for part of the window; the free intervals are returned. |
| licensed_exclusive | An exclusive grant covers it; the licensee is named. |
| held_back | A holdback or restriction covers it, with the date it lifts. |
| not_held | Holdings exist, but not for this right, place or time. |
| not_held_exclusively | Only non-exclusive rights in, and exclusivity was asked for. |
| not_recorded | No rights-in record for the work. |
| assumed | The organisation opted to treat unrecorded works as owned; never plain available. |
| unknown | A relevant record lacks dates, so the answer is not a guess. |
GET https://app.final-frame.com/api/v1/rights/availability?identity=<work>&right=svod&territory=GB&from=2027-01-01&to=2027-12-31&match=cover
Shows, seasons and episodes
A season has an identity of its own, cut from the show's: the show's identity plus #s2; an episode's adds e3. Every rights endpoint accepts them. What the show holds and licenses applies to every season; a deal whose copy of the show carries only some seasons binds those seasons; a holding or a restriction recorded against one season or episode applies there alone. GET /rights/works/{identity}/children returns the seasons and their episodes, each with its own position and cells.
GET https://app.final-frame.com/api/v1/rights/works/<show>/children?territory=DE&from=2027-01-01&rights=svod,avod GET https://app.final-frame.com/api/v1/rights/works/<show>%23s2 # Season 2 on its own GET https://app.final-frame.com/api/v1/rights/availability?identity=<show>%23s2e3&right=svod&territory=GB&from=2027-01-01
The map
GET /rights/map?right=svod answers one right for every country at once: how many works are available there in the window, how many are licensed out (shared or exclusively) and to whom, how many are held back or not held. With identity it answers for one work instead, giving each country's state. Country codes are ISO 3166-1 alpha-2. The product's map tab draws this same answer.
Release windows
A release plan is a set of windows per work: theatrical, premium transactional, transactional, physical, airline and hotel, Pay-1 and Pay-2, free television, AVOD and FAST, each tied to a right in the vocabulary, with a start, an end or open, and a status (projected, proposed, confirmed, actual, cancelled). A work with a release date and no plan is projected from a profile (studio-wide, 45-day Pay-1, independent, streaming-first, television series). GET /rights/works/{identity}/windows reads a plan with its projection; PUT replaces it; PUT .../release sets the release date, status and profile.
match decides how the window must be met: cover (the whole window, the default), overlap (any of it), start_within (what opens up), end_within (what expires). minWindowDays ignores slivers. Every answer names the deal, holding or restriction behind it.