Planned integration guide. Standalone resolution and license-request workflows are not served
by the current Talent API sandbox. Checks use fictional fixtures and do not evaluate a real
person’s rights.
Start with the runnable quickstart and sandbox support matrix.
Classify the use
Answer a
reference as usual. For the other two, check before the model writes anything.
When your product cannot tell which kind a message is, call
POST /v1/resolutions. It returns the talent the
text names, with the matched span, and use_kind. use_kind is a classification for routing,
not a legal finding, and status: "none" means no protected talent was found, not that the
request is permitted. See Resolution.
The facets that text uses
A license names which parts of a talent’s identity it covers. In text, three facet types apply:
A
knowledge license sets how the assistant may use the Volume in the license’s scope.knowledge:
whether answers are summarised or quoted, the topics in about, and topics it must never
answer. scope.monthly_limits.asks caps knowledge questions per month; past it, checks deny with
monthly_limit_reached.
Check the request the model receives
Send the system prompt, the conversation the model sees and the user’s message, in order. Leave outtalent and Reflections resolves the person from the text; pass it when the user picked the
talent from a list.
Pass
on_escalate: "deny". A chat cannot wait days for a reviewer, so a request that would
escalate returns deny with review_required and a retry_with_hold remedy instead.
sublicense: "end_users_personal", so your users may make personal, non-commercial text in the
talent’s voice. Send a stable end_user.id on every check.
Answer from the decision
Ondeny, do not write as the person. Tell the user why in reasons[].sentence, which is the
license’s or the talent’s own words, and offer what you can do instead: an answer in your
assistant’s own voice, or a reply that does not name them. remedy is for a licensee. End users
are never licensees, so do not offer a license request to a consumer.
On
allow, meet the obligations:
- Add every
generation_instructionsentry to the system prompt. - Generate the whole reply and keep it on your server.
- Submit it as a generation, with the reply’s UTF-8 bytes as base64
data, theirsha256andmedia_type: "text/plain". Text returns its decision in the response. - Show the reply only when that decision is
allow, with thedisclosuretext if there is one.
Long conversations
A persona chat runs many turns for one user. Ask forreuse on the check, up to 1,000 generations
and PT15M, so one decision covers a stretch of the conversation. Each reply is still submitted
as a generation and checked on its own words. When the authorization is used up or expires, run a
new check with the current conversation as context.
Keep prompts private
Chat messages carry personal data. Choose how much text Reflections receives withprompt_handling:
Add
retention: "none" to delete the text as soon as the check is decided, whatever the
decision. To avoid sending messages that name no one, download the signed
name index, normalize text with nfkc_casefold
as the index does, and send only messages that match. A name marked common is weak evidence on
its own. Indirect references, such as “the runner who won last year’s mountain ultra”, still need the server.
See Privacy modes and Resolving talent.
What can go wrong
Related
Text integration design
Proposed resolution and check workflows for assistant replies.
Resolution
How text is matched to talent, and why no match is not permission.
Privacy
What is sent, what is kept, and for how long.
Agent builders
Passing authorizations to the tools an assistant calls.