Skip to main content
Planned design guide. This workflow starts with standalone resolution, which is not served by the current Talent API sandbox. The examples describe the target integration; use explicit fictional talent IDs in current sandbox checks. Start with the runnable quickstart and sandbox support matrix.
An assistant meets real people in three ways. A question about a public figure is a reference and needs no license. Writing as the talent is impersonation. Text that implies the talent approves something is endorsement. The last two need a check before the model writes anything. These examples describe all three paths using fictional talent; standalone resolution must be implemented before this complete workflow can run.
1

Export your test key

2

Classify a question about a public figure

If your product cannot tell how a message uses a person, resolve it. The resolution names the talent and classifies the use. It never clears a use; it tells you what to send next.
use_kind: "reference" means the message talks about her without synthesis. Answer it as usual. use_kind is a classification for routing, not a legal finding.
3

Check a request to write as a talent

Send the request the model will receive: your system prompt, the conversation it sees and the user’s message. Leave out talent, so Reflections resolves the person from the text. Pass on_escalate: "deny", because a chat cannot wait for a person to review.
Reflections found Iris Calder in the prompt. She requires a license and you hold none:
Do not write as her. Tell the user why with reasons[].sentence, and offer what you can do instead, such as a toast in your assistant’s own voice. The license_request remedy is for a licensee, such as a brand you work for. End users are never licensees, so do not offer it to a consumer.
4

Check a request that implies approval

Text that says or implies the talent approves a product is endorsement. This one is for a marketer’s social post, so it is commercial.
Dev Marlow’s posture prohibits every commercial use. There is no remedy, because no license can be requested:
Refuse the endorsement and show the sentence. You can still write a caption that does not name him or speak for him.
5

Answer from the decision

Route every reply through one function. With on_escalate: "deny" a check never returns escalate, so there are two branches.

When a check allows

With a license that covers the use, the check returns allow. Generate with every generation_instructions entry in the system prompt, keep the whole reply on your server, and submit it as a generation before you show any of it. Text returns its decision in the response.
Show the reply only when the function returns it, with the disclosure text if the check carried one. Do not stream an impersonation reply to the user token by token: the generation check needs the complete text first.
Chat messages carry personal data. Set prompt_handling.mode to redacted after you strip it, or keep text out of Reflections with the local name index. See Privacy modes.

Next

LLM assistants

Names, personas and knowledge in text, in production.

Resolution

How text is matched to talent, and why no match is not permission.

Decisions

allow, deny and escalate, and what each requires.

Binding the request

Sending the system prompt and context the model receives.