Planned Talent API integration guide. License acceptance, OAuth connections, license requests
and settlement are not served through the current sandbox. This reference does not describe
the separate portal’s current capabilities.
Start with the runnable quickstart and sandbox support matrix.
Accept a license
A license starts with the talent’s signature, in the Talent Portal. When the talent or their representative signs one for you, you receivelicense.issued and the license is
pending_acceptance. Its acceptance_url is the hosted page where you read the signed document
and accept it. No endpoint can accept a license; a person on your side does it on that page.
license_pending_acceptance. After you accept, you
receive license.accepted and the license is active, or scheduled if its window has not
started. If you decline, you receive license.declined. The handle is a six-character name
people can read aloud on a call: Ridgeline’s license from Maya Okafor is K7Q4M2.
Read the terms
GET /v1/licenses/{license_id} returns the license
with scope, the terms in normalized form. The signed document itself is a revision:
GET /v1/licenses/{license_id}/revisions/{revision_id}
returns terms exactly as signed, its terms_digest, the signatures, and enforcement, which
says for each term whether Reflections enforces it.
You keep recorded terms yourself. If Maya Okafor’s license names a competitor she must not appear
beside, no check stops that placement. See What we enforce.
To confirm you hold the signed document, compute the digest yourself: SHA-256 over the
tlp-json-1 form of the revision’s terms. The terms digest
gives the rules and code that reproduces it. A plain json.dumps(..., sort_keys=True) is not
enough: it writes 1.0 and 1e-07 where tlp-json-1 writes 1 and 1e-7.
Revisions
Each signed version of a license is a revision with its ownterms_digest, and its terms never
change. A change request, an amendment or a renewal produces a new one. When the talent’s side
signs it, you receive license.revision_pending with pending_revision naming it, and you accept
or decline it at the license’s acceptance_url. The current revision stays in force until you
accept. Then you receive license.revised with current_revision pointing at the new revision,
and new checks use it at once. Authorizations already issued keep the revision they name, and every receipt names the
revision and digest its output was made under, so you can always show which terms applied.
Connect the platforms you generate on
A platform can use your licenses only after you connect it. On the platform, choose to connect your Reflections account. You are sent to Reflections, where you sign in and see the platform’s name, the scopes it asks for and which of your licenses it may use: all of them, or the ones you list. When you approve, the platform receivesconnection.created and sends checks for you with
your account ID in Reflections-Account.
List your connections, and end one when you stop working with a platform:
account_not_connected, and
authorizations it already holds stop working when they expire. A license can also restrict
platforms itself: with scope.platforms.mode set to listed, only the accounts it lists may run
checks under it.
Request a license
When a check for you is denied for lack of a license, itsremedy says what to ask for:
Pass the denied check’s ID as
check so the talent sees the use that prompted the request, use
remedy.suggested_scope as a starting requested_scope, and add an offer and a note. A
connected platform can send the request for you with license_requests:write.
license_request.signed, whose license_revision is what they signed, then license.issued for a
new license or license.revision_pending for a change. Accept either on its acceptance page as
above. If they decline, you receive license_request.declined with their decision_note.
Withdraw a request they have not answered with
POST /v1/license_requests/{request_id}/withdraw.
A deny with talent_prohibits has no remedy: the talent’s posture rules the use out and no
license can be requested. A talent whose posture.accepts_requests is false takes no requests
through the API.
The proposed license-request signing helper
would exercise signing and acceptance with fictional talent. License requests and this helper
are not served by the current sandbox.
Statements and payments
Licenses with compensation are settled from statements. Each month you receivestatement.issued
for each license you hold, and
GET /v1/statements?license=… lists them.
payments with id pay_vav8qg9xm8hqznbhb4xmm1k47f. When the talent’s
side confirms receipt, the payment gets confirmed_at. The statement becomes paid once
confirmed payments reach amount_due. See Usage and settlement.
When a talent narrows consent
A talent or representative can suspend a license during a dispute (license.suspended; checks
deny with license_suspended until license.resumed) or revoke it (license.revoked, with a
revocation.created for your platforms). What happens to outputs already released follows the
license’s post_revocation term: retain keeps them usable within their scope and window,
cease_distribution stops new placements, and withdraw requires a takedown, only after a
revocation for cause. See Revocation.
Related
Licenses
Revisions, digests and the terms a license can carry.
Parties
Who answers for what: talent, licensees, platforms and end users.
Usage and settlement
Usage records, reconciliation and statements.
Image and video platforms
What the platforms you connect do with your licenses.