Skip to main content
Production protocol reference. The sandbox uses deterministic fixture rules and test markers. Inline bytes are digest-checked, not evaluated for identity or license-term compliance. Test receipts are not proof of production enforcement or permission to use a real person. Start with the runnable quickstart and sandbox support matrix.
This page states what a decision from Reflections proves and what it does not. Two rules hold across the API:
  1. Every license term is either checked or recorded.
  2. Every receipt states its assurance: observed or attested. Reflections never claims to have inspected bytes or prompts it did not receive.

Checked and recorded terms

Each license revision lists every term with its class in enforcement, and the stage where each checked term is enforced. That list is the answer for that license. The table below is how terms are usually classed.
channels, territories, purpose and commercial use are checked against the use you send. Reflections does not see where you publish an output. If you declare social and place the output on TV, the check cannot stop it. The receipt’s permitted_use records the use you declared, so anyone downstream can compare it with where the output appears.

Observed and attested

A generation receipt is observed: Reflections checked the bytes. A check receipt is attested when Reflections recorded what you stated, such as text you sent withheld.

Where checking stops

  • A check decides on the request you send. Send the request your model receives, including your system text, rewritten prompt and references. See Binding the request.
  • A prompt that describes a person without naming or crediting them is not resolved, and outputs are checked only for the talent their check covered. Reflections does not screen outputs for talent nobody named. A talent who finds such an output can verify it; a verified receipt names the license it was made under.
  • A rule the talent wrote that cannot be read at the generation is delivered and listed in unchecked_terms. A protected attribute, such as identity.samePerson, that cannot be confirmed is never delivered.
  • In a live session, up to 15 seconds of generated speech passes unchecked between samples. A platform that misses session.terminated can keep a session running until its token expires, at most 5 minutes.
  • A tool that verifies an authorization offline cannot learn of a revocation before the token expires, at most 15 minutes after it was issued.
  • allow with talent: [], a resolution with status: "none", and a verification with result: "not_found" each mean only that no protected talent or receipt was found. None of them says content is licensed.
  • talent.verification proves that a real adult controls the account and signed its licenses. It does not prove who owns every right in the name.
  • Reflections does not move money and cannot guarantee that a statement is paid.

What you can rely on

  • Every decision names the license revision and the terms_digest it relied on, and you can recompute the digest from the signed terms.
  • Every receipt is signed by Reflections and verifies offline against https://app.reflections.ai/.well-known/jwks.json.
  • A use the talent declared prohibited is never allowed, and no license can change that.
  • No endpoint can sign, accept or widen a license. Only a person’s signature on the talent’s side makes one.

Example: Ridgeline’s license K7Q4M2

Reflections denies a check that declares TV, denies an image that changes Maya Okafor’s build or shows alcohol, and holds every output for her release. It does not stop Ridgeline from placing a released image next to a brand that conflicts names: that term is Ridgeline’s promise, signed and on the record.

Licenses

Terms, scope and the enforcement list.

Generation checks

What is checked on the bytes.

Provenance

Receipts and their assurance.

Failure modes

What happens when a check cannot finish.