Sandbox and protocol reference. Test checks and generations return deterministic decisions for
fictional fixtures. Sessions and production evaluation described below are not available
through the current Talent API.
Start with the runnable quickstart and sandbox support matrix.
deny and escalate are 200 responses with a decision field. An error means the request could
not be evaluated at all. Handle the decisions in your product, not in your error handler.
The three decisions
At each stage
The same decisions apply at three stages. Each reason says which one instage.
A live call has no time for a person to review it, so sessions never escalate. A license that holds
every output for release cannot start a session, and the session is denied with
session_not_permitted. Interactive products can ask checks to behave the same way with
on_escalate: "deny". See Escalation.
Check statuses
A check’sstatus tracks what happened after its decision.
When an escalated check is decided, you receive
check.resolved
with the new decision. A declined escalation is deny with review_declined, and an expired one
is deny with hold_expired.
The authorization
Anallow carries an authorization: proof that the check allowed this use.
Without
reuse, the authorization covers only the request that was checked. The check’s
request_digest is a digest of the inputs, the use and the execution, and the token carries it, so
a different prompt, a new reference or another model needs a new check. Pass the token to the tool
or model provider that generates; it verifies the token offline against the JWKS. A generation past
max_generations fails with 409 authorization_consumed. See
Authorization token for the claims.
Reuse
One check can cover many generations of the same use, talent, execution and end user, even when their inputs differ, such as the lines of a text-to-speech script: sendreuse: { "max_generations": 200, "ttl": "PT15M" }, up to 1,000 generations and PT15M. Every
output is still checked at the generation, and generations under reuse omit candidate_index. A
change of use, talent, model or end user needs a new check. A revocation ends the reuse window at
once. See Bind the request.
Reasons
Adeny or escalate carries reasons[]:
Every code, its stage and its usual remedy are in Reason codes.
Remedies
Adeny that a change could fix carries a remedy:
remedy.suggested_scope holds the scope that would allow the use, ready to send as
requested_scope on a license request. A
deny for talent_prohibits has no remedy: no license can change it.
A missing license is a
deny with a license_request remedy, never an escalate. A request for a
license is a business negotiation, and a generation cannot be held open while it happens. Escalation
is for a use a license covers when a person must decide, or when the check could not finish.Several talent
When a request invokes more than one talent, each entry intalent[] carries its own decision,
license, license_revision and terms_digest. The check’s decision is the most restrictive of
them: deny over escalate, escalate over allow. See Multi-talent.
Receipts
allow and deny decisions carry a receipt, a signed record of the decision. An escalated check
receives its receipt when it is decided. See Provenance.
Example: a channel the license does not cover
Ridgeline’s license covers social media and its website. A check that adds TV is denied:sent. If Maya Okafor signs, you receive license_request.signed and then
license.revision_pending. Accept the revision at the license’s acceptance_url; when you
receive license.revised, it is in force and you can check again.
Related
Obligations
What an
allow requires of you.Escalation
Who reviews, and how long it can take.
Reason codes
Every reason, its stage and its remedy.
Decision semantics
The normative definition in the Standard.