> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reflections.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> The OpenAPI document at /api-reference/openapi.yaml defines the target contract. Its x-reflections-availability field and each operation's availability notice identify supported test and live forms. Do not infer implementation from a schema or code sample. Live keys support account details, reads of the licenses the calling account holds as licensee or issued as talent (GET /v1/licenses?role=issuer), and GET /v1/generations?license=… for the state of outputs under such a license (summaries only: no prompt, reference, bytes or metadata). Live image checks, submissions and receipts are built but not activated: until activation, a live POST /v1/checks or /v1/generations returns 403 live_not_activated, which must not be retried. Discovery and JWKS are at the origin root (https://app.reflections.ai/.well-known/...), not under /v1.
> Three rules hold everywhere: a decision is never an error (deny and escalate are 200 responses, and a live check still evaluating is a 202 with status checking); generate nothing for a named talent without an allow; deliver nothing until the generation is allow.
> The sandbox accepts personal rk_test_ keys. Persist a separate Idempotency-Key and body for each logical /v1 POST; retry an unknown outcome with the same key and body. OAuth and Talent API MCP remain planned.

# RSL 1.0

> How a TLP license server acts as an RSL 1.0 license server for a person, how RSL usage values map to TLP use fields, and where the two differ.

This page specifies how a TLP license server serves as the RSL license server for a talent: what
the RSL `server` attribute points at, how it issues and introspects RSL `License` tokens, how an RSL
document refers to a talent's facets, and how RSL's usage values map to TLP's use fields.

## RSL in brief (informative)

[Really Simple Licensing (RSL) 1.0](https://rslstandard.org), maintained by the RSL Technical
Steering Committee, is an XML vocabulary for machine-readable licensing terms. An RSL document
(`<rsl>`) lists `<content>` elements, each with a `url` and an optional `server` attribute that
names the RSL license server for that content. Each `<content>` holds `<license>` elements, whose
`<permits>` and `<prohibits>` elements list values by `type`: `usage`, `user` and `geo`. When a
value appears in both, it is prohibited.

The Open License Protocol (OLP) is RSL's protocol for licenses, built on OAuth 2.0: a client obtains
a token whose `token_type` is `License` (RSL 1.0 §5.4.3) from the license server's token endpoint, and a
content host checks a token it receives by introspection at the license server (§5.5).

## A TLP license server as an RSL license server

**TLP-RSL-1.** A TLP license server that serves as the RSL license server for a talent MUST serve
OLP at the `token_endpoint` and `introspection_endpoint` of its discovery document, and the RSL
documents that cover the talent MUST name it in their `server` attribute. For the Talent API,
`server` is `https://app.reflections.ai/oauth`, the token endpoint is
`https://app.reflections.ai/oauth/token`, and the introspection endpoint is
`https://app.reflections.ai/oauth/introspect`.

**TLP-RSL-2.** A `<content>` element whose `url` is a facet's [object IRI](/standard/terminology#identifiers)
refers to that facet: the talent's identity in that form, not a file. RSL documents for media of the
talent, such as photos on the talent's own site, MAY name the same `server`.

**TLP-RSL-3.** A license server MUST issue a `License` token for content that covers a talent only when
the requesting account holds a license covering the requested usage, or the talent's posture
declares that usage `allowed`. It MUST NOT issue one for a usage the talent's posture declares
`prohibited`.

**TLP-RSL-4.** A license server MUST answer introspection of a `License` token with the fields RSL 1.0 §5.5.3 defines: `active`,
`token_type`, `license`, `resource`, `permitted` and, when access is not permitted, `reason`. A token under a license that is revoked or
suspended MUST be inactive from the revocation's `effective_at` or the suspension.

**TLP-RSL-5.** A `License` token is a license to use content as its RSL license describes, such as
sending a talent's reference media to a model as input. It is not a decision about a generation. A
platform MUST still send a TLP check before it generates a talent, and a generation tool MUST NOT
accept a `License` token as an authorization ([TLP-TOK-8](/standard/tokens#verifying-a-token)).

**TLP-RSL-6.** An RSL document published for a talent by or for its license server MUST agree with
the talent's licenses and posture. A usage in `<prohibits>` corresponds to a `prohibited`
declaration or a prohibited term, never to `license_required`.

**TLP-RSL-7.** A platform that finds a `server` attribute covering a talent MUST treat that server
as the talent's license server, first in the order of [TLP-DSC-5](/standard/discovery#finding-the-license-server-for-a-talent),
and MUST confirm through its discovery document, at the `server` URL's origin, that it is a TLP
license server.

### Example (informative)

An RSL document for Maya Okafor's studio likeness facet. It permits commercial use of the facet's
reference media as model input in the United States and Canada, and prohibits training:

```xml theme={null}
<rsl xmlns="https://rslstandard.org/rsl">
  <content url="https://app.reflections.ai/fct_5zba2q8v1m3n7p4r6s9t0wxyhk"
           server="https://app.reflections.ai/oauth">
    <license>
      <permits type="usage">ai-input</permits>
      <permits type="user">commercial</permits>
      <permits type="geo">US CA</permits>
      <prohibits type="usage">ai-train</prohibits>
    </license>
  </content>
</rsl>
```

```mermaid theme={null}
sequenceDiagram
    participant C as RSL client
    participant LS as License server
    participant H as Content host
    C->>LS: Request a license token at the token endpoint
    LS->>LS: Find a license or posture that covers the usage
    LS-->>C: Token of type rsl
    C->>H: Fetch content with the token
    H->>LS: Introspect the token
    LS-->>H: Active, content and usage covered
    H-->>C: Content
```

## Mapping RSL values to TLP

Where an RSL value has a TLP counterpart, the two mean the same thing for a talent. Values with no
counterpart are not translated.

| RSL `type` | RSL value | TLP counterpart |
| - | - | - |
| `usage` | `all` | Every use of the facet the license or posture covers |
| `usage` | `ai-all` | Every use of the facet by an AI system: every `modality` and `kind` |
| `usage` | `ai-train` | The license's `training` term (`permitted` or `prohibited`) and the `no_training` obligation. `<prohibits>` corresponds to `training: prohibited`. |
| `usage` | `ai-input` | Sending the facet's reference material to a model: the license's `material_access`, and inputs with role `reference` or `voice_sample` |
| `usage` | `ai-index` | No counterpart |
| `usage` | `search` | No counterpart. Talking about a talent without synthesis is `kind: reference`, which needs no license. |
| `user` | `commercial` | `use.commercial: true` |
| `user` | `non-commercial` | `use.commercial: false` |
| `user` | `education` | `use.purpose: education` |
| `user` | `personal` | `use.purpose: personal`, and `sublicense: end_users_personal` for a platform's end users |
| `user` | `government` | No counterpart |
| `geo` | ISO 3166-1 alpha-2 codes | `use.territories`, value for value |

TLP's `modality`, `kind`, the other purposes and `channels` have no RSL counterpart.

## Divergences

| Aspect | RSL 1.0 | TLP 1.0 |
| - | - | - |
| What is licensed | Content: pages, files and datasets, and how AI systems use them | A person's identity: what may be generated of them, and how the output is used |
| Unit of decision | A published license that a client reads | A decision per request, bound to a signed license revision and the request's digest |
| Absent terms | RSL 1.0 does not define a type with no `<permits>`, and requires conservative interpretation (§3.1.1) | Absence is never permission: a use no license covers is decided by the talent's posture |
| Outcomes | Permitted or prohibited | `allow`, `deny` or `escalate`, with obligations |
| Token | An OLP token for access to content, checked by introspection | A token bound to one request digest, one model, a generation count and at most 15 minutes, verified offline |
| Proof | None defined for outputs | A signed receipt for every decision, embedded in the output's C2PA manifest |

## Related

<Columns cols={2}>
  <Card title="Discovery" icon="compass" href="/standard/discovery">
    The discovery document and the order for finding a license server.
  </Card>

  <Card title="Human Consent Standard" icon="scale-balanced" href="/standard/interop/human-consent-standard">
    The RSL extension for people and other rights subjects.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.