> ## 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.

# List talent

> **Test mode available. Live mode unavailable.** Uses fictional sandbox data only. See [Sandbox](/sandbox) for the supported forms and limits.

Lists talent visible to the caller: every talent who opted into protection, plus the
listing details of talent who accept license requests. Use `licensed=true` to list only
talent the caller (or the account in `Reflections-Account`) holds an active license for.

Restricted keys need `talent:read`.




## OpenAPI

````yaml /api-reference/openapi.yaml get /talent
openapi: 3.1.0
info:
  title: Reflections Talent API
  version: '2026-10-15'
  summary: The license server for a person's name, likeness and voice in generative AI.
  description: >
    This document defines the target Talent API contract. Each operation
    declares its current

    test and live availability. Test mode serves a limited fictional sandbox.
    Live keys support

    account details and reading the caller's own licenses. The initial live
    image check,

    submission and receipt implementation is deployed, but requires separate
    live signing

    activation and production acceptance. Start at
    https://docs.reflections.ai/quickstart for test mode.


    The target API lets any product that can generate a real person check
    whether a use is licensed,

    verify the output it made, prove that verification to anyone downstream,
    report usage, and

    honor revocations.


    Protected requests use a secret key in the `Authorization` header. The
    target contract defines test keys

    (`rk_test_…`) and live keys (`rk_live_…`) use the same base URL; the key
    decides the mode.


    A decision is never an error. `deny` and `escalate` are `200` responses that
    carry a decision.

    Errors use RFC 9457 problem details.
  contact:
    name: Reflections developer support
    url: https://docs.reflections.ai/production/support
    email: developers@reflections.ai
servers:
  - url: https://app.reflections.ai/v1
    description: >-
      Fictional test sandbox and conditional live support; availability and
      activation are separate
security:
  - SecretKey: []
tags:
  - name: Account
    description: The account that owns the calling key.
  - name: Talent
    description: >-
      People whose name, likeness and voice are protected and licensed through
      Reflections.
  - name: Facets
    description: >-
      The parts of a talent's identity a license can cover, such as a voice or a
      likeness.
  - name: Resolutions
    description: Find which talent a prompt, image or voice sample invokes.
  - name: Licenses
    description: Signed licenses and their revisions.
  - name: License requests
    description: Ask a talent for a new license or a wider one.
  - name: Connections
    description: A licensee's permission for a platform to use its licenses.
  - name: Files
    description: References and outputs uploaded for checks and generations.
  - name: Checks
    description: Decide whether a use may proceed, before anything is generated.
  - name: Generations
    description: Check an output against the license its check relied on.
  - name: Sessions
    description: Authorize live voice and video with short-lived tokens and sampled checks.
  - name: Receipts
    description: Signed, portable proof of a decision.
  - name: Verifications
    description: Verify a file, manifest or receipt.
  - name: Revocations
    description: Every narrowing of consent, and the platform's acknowledgement of it.
  - name: Usage records
    description: Report usage for settlement and audit.
  - name: Statements
    description: Monthly amounts owed under a license, reconciled against observed usage.
  - name: Mandates
    description: A representative's authority to act for a talent, and its powers.
  - name: Escalations
    description: >-
      The review queue. Checks and held outputs waiting for the talent's side to
      decide.
  - name: License drafts
    description: Terms prepared for a talent's signature. Only a person signs.
  - name: Webhook endpoints
    description: Where Reflections sends events.
  - name: Events
    description: The record of everything that happened to your objects.
  - name: Test helpers
    description: Act as a talent or reviewer in test mode.
  - name: Discovery
    description: The public discovery document and signing keys. Neither needs a key.
  - name: OAuth
    description: >
      Authorization for connections, MCP clients and RSL clients, and the
      metadata that describes it.
paths:
  /talent:
    get:
      tags:
        - Talent
      summary: List talent
      description: >
        **Test mode available. Live mode unavailable.** Uses fictional sandbox
        data only. See [Sandbox](/sandbox) for the supported forms and limits.


        Lists talent visible to the caller: every talent who opted into
        protection, plus the

        listing details of talent who accept license requests. Use
        `licensed=true` to list only

        talent the caller (or the account in `Reflections-Account`) holds an
        active license for.


        Restricted keys need `talent:read`.
      operationId: listTalent
      parameters:
        - $ref: '#/components/parameters/ReflectionsVersion'
        - $ref: '#/components/parameters/ReflectionsAccount'
        - name: q
          in: query
          description: Search names and aliases.
          schema:
            type: string
            maxLength: 200
        - name: facet_type
          in: query
          description: Only talent with a ready facet of this type.
          schema:
            $ref: '#/components/schemas/FacetType'
        - name: licensed
          in: query
          description: Only talent with an active license held by the licensee.
          schema:
            type: boolean
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: A page of talent.
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TalentList'
              examples:
                licensed_voice:
                  summary: Talent named Maya with a licensed voice
                  value:
                    object: list
                    data:
                      - id: tal_9t0wxyhk5zba2q8v1m3n7p4r6s
                        object: talent
                        livemode: true
                        name: Maya Okafor
                        aliases:
                          - Maya O.
                        status: active
                        verification:
                          verified: true
                          method: id_document
                          verified_at: '2026-06-11T09:30:00Z'
                        protection:
                          references: true
                          modalities:
                            - image
                            - video
                            - speech
                        posture:
                          default: license_required
                          accepts_requests: true
                          rules:
                            - purpose: political
                              declaration: prohibited
                            - kind: endorsement
                              purpose: advertising
                              declaration: license_required
                            - modality: text
                              kind: reference
                              declaration: allowed
                              obligations: []
                        representation:
                          - account: acct_6m8n0p2q4r6s8t0v2w4x6y8z0b
                            name: Summit Talent Management
                            role: manager
                            powers:
                              - issue_licenses
                              - review_outputs
                              - revoke
                              - receive_statements
                        facets:
                          - id: fct_5zba2q8v1m3n7p4r6s9t0wxyhk
                            type: likeness
                            label: Studio likeness
                            status: ready
                          - id: fct_v1m3n7p4r6s9t0wxyhk5zba2q8
                            type: voice
                            label: Speaking voice
                            status: ready
                          - id: fct_q4r6s9t0wxyhk5zba2q8v1m3n7
                            type: name
                            label: Name
                            status: ready
                        hcs_subject_id: null
                        profile_url: https://app.reflections.ai/t/maya-okafor
                        created_at: '2026-06-11T09:00:00Z'
                        updated_at: '2026-10-01T12:00:00Z'
                    has_more: false
                    next_cursor: null
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/Unavailable'
      security:
        - SecretKey:
            - talent:read
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >
            : "${REFLECTIONS_KEY:?Set REFLECTIONS_KEY before running this
            example}"


            curl --fail-with-body --max-time 30
            'https://app.reflections.ai/v1/talent?limit=10' \
              -H "Authorization: Bearer $REFLECTIONS_KEY" \
              -H "Reflections-Version: 2026-10-15"
        - lang: typescript
          label: TypeScript
          source: >
            import { env, exit } from "node:process";


            const apiKey = env.REFLECTIONS_KEY;

            if (!apiKey) throw new Error("Set REFLECTIONS_KEY before running
            this example");


            const response = await
            fetch("https://app.reflections.ai/v1/talent?limit=10", {
              method: "GET",
              headers: {
                Authorization: `Bearer ${apiKey}`,
                "Reflections-Version": "2026-10-15",
              },
              signal: AbortSignal.timeout(30_000),
            });

            const responseBody = await response.text();

            if (!response.ok) {
              console.error(`HTTP ${response.status}: ${responseBody}`);
              exit(1);
            }

            console.log(responseBody);
        - lang: python
          label: Python
          source: |
            import os
            from urllib.error import HTTPError
            from urllib.request import Request, urlopen

            apiKey = os.environ["REFLECTIONS_KEY"]
            if not apiKey:
                raise ValueError("Set REFLECTIONS_KEY before running this example")

            headers = {
                "Authorization": f"Bearer {apiKey}",
                "Reflections-Version": "2026-10-15",
            }
            request = Request("https://app.reflections.ai/v1/talent?limit=10",
                              method="GET", headers=headers)
            try:
                with urlopen(request, timeout=30) as response:
                    print(response.read().decode("utf-8"))
            except HTTPError as error:
                error_body = error.read().decode("utf-8")
                raise RuntimeError(f"HTTP {error.code}: {error_body}") from error
        - lang: go
          label: Go
          source: |
            package main

            import (
                "fmt"
                "io"
                "net/http"
                "os"
                "time"
            )

            func main() {
                apiKey := os.Getenv("REFLECTIONS_KEY")
                if apiKey == "" {
                    panic("Set REFLECTIONS_KEY before running this example")
                }

                request, err := http.NewRequest("GET", "https://app.reflections.ai/v1/talent?limit=10", nil)
                if err != nil {
                    panic(err)
                }
                request.Header.Set("Authorization", "Bearer " + apiKey)
                request.Header.Set("Reflections-Version", "2026-10-15")
                client := &http.Client{Timeout: 30 * time.Second}
                response, err := client.Do(request)
                if err != nil {
                    panic(err)
                }
                defer response.Body.Close()
                responseBody, err := io.ReadAll(response.Body)
                if err != nil {
                    panic(err)
                }
                if response.StatusCode < 200 || response.StatusCode >= 300 {
                    panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, responseBody))
                }
                fmt.Print(string(responseBody))
            }
components:
  parameters:
    ReflectionsVersion:
      name: Reflections-Version
      in: header
      required: false
      description: >-
        The dated API version. Defaults to the version your account is pinned
        to.
      schema:
        type: string
        example: '2026-10-15'
    ReflectionsAccount:
      name: Reflections-Account
      in: header
      required: false
      description: >
        Act for a connected licensee. The value is the licensee's account ID.
        Requires an active

        connection between that account and yours.
      schema:
        type: string
        pattern: ^acct_[0-9a-hjkmnp-tv-z]{26}$
    Limit:
      name: limit
      in: query
      description: Number of objects to return, 1 to 100.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    Cursor:
      name: cursor
      in: query
      description: The `next_cursor` from the previous page.
      schema:
        type: string
  schemas:
    FacetType:
      type: string
      description: >
        `name`: the name in text. `likeness`: face and body in images and video.
        `voice`: the

        voice in speech. `twin`: a persona that speaks or writes as the talent.
        `knowledge`: a

        Volume of the talent's own words a model may draw on.
      enum:
        - name
        - likeness
        - voice
        - twin
        - knowledge
    TalentList:
      allOf:
        - $ref: '#/components/schemas/ListBase'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Talent'
              description: The talent on this page, newest first.
    ListBase:
      type: object
      required:
        - object
        - has_more
      properties:
        object:
          type: string
          const: list
          description: Always `list`.
        has_more:
          type: boolean
          description: Whether another page exists.
        next_cursor:
          type:
            - string
            - 'null'
          description: Pass as `cursor` to read the next page.
    Talent:
      type: object
      required:
        - id
        - object
        - livemode
        - name
        - aliases
        - status
        - verification
        - protection
        - posture
        - facets
        - created_at
      properties:
        id:
          type: string
          pattern: ^tal_[0-9a-hjkmnp-tv-z]{26}$
          description: Unique identifier, prefixed `tal_`.
        object:
          type: string
          const: talent
          description: Always `talent`.
        livemode:
          type: boolean
          description: '`true` in live mode, `false` in test mode.'
        name:
          type: string
          description: The name the talent confirmed.
        aliases:
          type: array
          description: >-
            Other names the talent confirmed, such as a stage name or a
            transliteration.
          items:
            type: string
        status:
          type: string
          enum:
            - active
            - withdrawn
          description: >-
            `withdrawn`: the talent withdrew consent everywhere. Every check
            denies with `license_revoked` or `talent_prohibits`.
        verification:
          type: object
          description: >
            Proves a real adult controls this talent's account and signed their
            licenses. It does

            not prove who owns every right in the name.
          required:
            - verified
          properties:
            verified:
              type: boolean
              description: >
                Whether Reflections verified that a real adult controls this
                talent's account.
            method:
              type:
                - string
                - 'null'
              enum:
                - id_document
                - representative
                - null
              description: >
                How the talent was verified: with an identity document, or
                through a representative.

                `null` when not verified.
            verified_at:
              type:
                - string
                - 'null'
              format: date-time
              description: When the talent was verified. `null` when not verified.
        protection:
          type: object
          description: How references are matched to this talent.
          required:
            - references
          properties:
            references:
              type: boolean
              description: >-
                Reference images and voice samples sent with a check are matched
                against this talent's face and voice.
            modalities:
              type: array
              items:
                $ref: '#/components/schemas/Modality'
              description: >-
                The modalities in which reference media is matched against this
                talent.
        posture:
          $ref: '#/components/schemas/Posture'
          description: The talent's standing public answers for uses with no license.
        representation:
          type: array
          items:
            $ref: '#/components/schemas/Representation'
          description: >
            Accounts with a mandate to act for the talent, with each one's
            `role` and `powers`.
        facets:
          type: array
          items:
            $ref: '#/components/schemas/FacetSummary'
          description: >
            Each facet's `id`, `type`, `label` and `status`. Retrieve a facet
            for the rest.
        hcs_subject_id:
          type:
            - string
            - 'null'
          description: >-
            The talent's subject ID in the Human Consent Registry, when
            registered there.
        profile_url:
          type: string
          format: uri
          description: The talent's public page.
        created_at:
          type: string
          format: date-time
          description: When the talent's record was created.
        updated_at:
          type: string
          format: date-time
          description: When the talent last changed.
    Problem:
      type: object
      description: An RFC 9457 problem detail. Every error has this shape.
      required:
        - type
        - title
        - status
        - code
        - request_id
      properties:
        type:
          type: string
          format: uri
          description: A URL for this error, under `https://docs.reflections.ai/errors/`.
        title:
          type: string
          description: A short summary of the error.
        status:
          type: integer
          description: The HTTP status.
        detail:
          type: string
          description: What happened in this request.
        code:
          $ref: '#/components/schemas/ErrorCode'
          description: The stable error code. Branch on it, then on `status`.
        param:
          type: string
          description: The field at fault, as a path such as `use.territories[1]`.
        request_id:
          type: string
          description: >
            `req_…`, the same value as the `Request-Id` header. Include it when
            you contact support.
        doc_url:
          type: string
          format: uri
          description: A link to the documentation for this error.
    Modality:
      type: string
      description: >-
        What will be generated. `speech` is a voice speaking words; `audio` is
        any other sound.
      enum:
        - image
        - video
        - speech
        - audio
        - text
    Posture:
      type: object
      description: >
        The talent's standing, public answers, before any license. The most
        specific rule wins;

        `prohibited` wins a tie. A license can widen `license_required`, never
        `prohibited`.
      required:
        - default
        - rules
        - accepts_requests
      properties:
        default:
          $ref: '#/components/schemas/Declaration'
          description: The declaration that applies when no rule matches.
        rules:
          type: array
          items:
            $ref: '#/components/schemas/PostureRule'
          description: >
            Declarations for particular uses. The most specific matching rule
            wins, and `prohibited`

            wins a tie.
        accepts_requests:
          type: boolean
          description: Whether the talent accepts license requests through the API.
    Representation:
      type: object
      description: An account with a mandate to act for the talent.
      required:
        - account
        - name
        - role
        - powers
      properties:
        account:
          type: string
          pattern: ^acct_[0-9a-hjkmnp-tv-z]{26}$
          description: The representative's account ID.
        name:
          type: string
          description: The representative's name.
        role:
          type: string
          enum:
            - agency
            - manager
            - estate
            - union
            - legal
          description: What the representative is to the talent.
        powers:
          type: array
          items:
            type: string
            enum:
              - issue_licenses
              - review_outputs
              - revoke
              - receive_statements
          description: >
            What the mandate allows. `issue_licenses`: answer requests, and
            draft and sign licenses.

            `review_outputs`: decide escalations and release held outputs.
            `revoke`: revoke or

            suspend licenses. `receive_statements`: read, confirm and dispute
            statements.
    FacetSummary:
      type: object
      required:
        - id
        - type
        - label
        - status
      properties:
        id:
          type: string
          pattern: ^fct_[0-9a-hjkmnp-tv-z]{26}$
          description: Unique identifier of the facet, prefixed `fct_`.
        type:
          $ref: '#/components/schemas/FacetType'
          description: The part of the talent's identity the facet covers.
        label:
          type: string
          description: The talent's name for the facet, such as "Speaking voice".
        status:
          $ref: '#/components/schemas/FacetStatus'
          description: Whether the facet can be licensed.
    ErrorCode:
      type: string
      description: A stable error code. See the error code catalog.
      enum:
        - invalid_request
        - parameter_missing
        - parameter_invalid
        - unsupported_modality
        - unsupported_media_type
        - media_unreadable
        - version_unsupported
        - authorization_code_invalid
        - authentication_required
        - invalid_api_key
        - token_invalid
        - insufficient_scope
        - account_not_connected
        - mandate_required
        - livemode_mismatch
        - live_not_activated
        - platform_not_permitted
        - resource_not_found
        - idempotency_key_in_use
        - generation_already_submitted
        - authorization_consumed
        - check_not_allowed
        - check_expired
        - escalation_closed
        - license_draft_closed
        - invalid_state_transition
        - session_not_active
        - payload_too_large
        - idempotency_key_reused
        - artifact_digest_mismatch
        - rate_limited
        - internal_error
        - service_unavailable
        - evaluation_timeout
    Declaration:
      type: string
      description: >
        A talent's public answer for a kind of use. `allowed`: no license
        needed; follow the

        obligations. `license_required`: request a license. `prohibited`: never,
        and no license

        can be requested.
      enum:
        - allowed
        - license_required
        - prohibited
    PostureRule:
      type: object
      description: One public declaration. Omitted fields match every value.
      required:
        - declaration
      properties:
        modality:
          $ref: '#/components/schemas/Modality'
          description: The modality the rule matches.
        kind:
          $ref: '#/components/schemas/UseKind'
          description: The use kind the rule matches.
        purpose:
          $ref: '#/components/schemas/Purpose'
          description: The purpose the rule matches.
        commercial:
          type: boolean
          description: Whether the rule matches commercial or non-commercial uses.
        declaration:
          $ref: '#/components/schemas/Declaration'
          description: The talent's answer for the uses the rule matches.
        obligations:
          type: array
          description: What a use declared `allowed` must do.
          items:
            $ref: '#/components/schemas/Obligation'
    FacetStatus:
      type: string
      description: >-
        `preparing`: not usable yet. `ready`: licensable. `withdrawn`: the
        talent withdrew it; licenses that cover it deny.
      enum:
        - preparing
        - ready
        - withdrawn
    UseKind:
      type: string
      description: >
        How the talent appears. `depiction`: shown or heard. `impersonation`:
        speaks or writes as

        the talent. `endorsement`: implies the talent approves something.
        `reference`: talked

        about, without synthesis; needs no license.
      enum:
        - depiction
        - impersonation
        - endorsement
        - reference
    Purpose:
      type: string
      enum:
        - advertising
        - branded_content
        - entertainment
        - editorial
        - personal
        - education
        - political
    Obligation:
      type: object
      description: >-
        Something you must do to proceed. Each type uses only the fields listed
        for it.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/ObligationType'
          description: >
            The kind of obligation. Treat a type you do not know as unmet: do
            not generate or

            deliver.
        required:
          type: string
          enum:
            - all
            - sampled
          description: >-
            `generation_check`: submit every output, or the sampled share in
            `sample_rate`.
        sample_rate:
          type: number
          minimum: 0
          maximum: 1
          description: >
            `generation_check` with `required: sampled`: the share of outputs to
            submit, from 0 to

            1, chosen at random.
        reviewer:
          type: string
          enum:
            - talent
            - representative
            - reflections
          description: '`hold_until_release`: who releases each output.'
        instructions:
          type: array
          items:
            type: string
          description: '`generation_instructions`: include these in what the model receives.'
        level:
          type: string
          enum:
            - licensed
            - brand
            - scope
          description: >-
            `disclosure`: `licensed` says the person's likeness is licensed;
            `brand` adds who licensed it; `scope` adds the use.
        text:
          type: string
          description: '`disclosure` and `attribution`: the words to show.'
        placement:
          type: string
          enum:
            - visible
            - metadata
            - both
          description: '`disclosure`: where the label goes.'
        material:
          type: string
          enum:
            - references
            - voice
            - outputs
          description: '`delete_material` and `no_training`: what the obligation covers.'
        within:
          allOf:
            - $ref: '#/components/schemas/Duration'
          description: >-
            The deadline. `delete_material`: counted from the decision.
            `usage_report`: from the generation's decision or the session's end.
        units:
          type: string
          enum:
            - outputs
            - seconds
            - characters
            - placements
            - impressions
          description: '`usage_report`: the unit to report.'
        term:
          $ref: '#/components/schemas/Address'
          description: The address of the license term the obligation comes from.
    ObligationType:
      type: string
      description: >
        `generation_check`: submit outputs before delivery.
        `hold_until_release`: deliver nothing

        until the reviewer releases it. `draft_watermark`: mark drafts shown
        while held.

        `generation_instructions`: pass the instructions to the model.
        `disclosure`,

        `attribution`: label the output as stated. `c2pa_manifest`: embed the
        `c2pa` assertion.

        `no_training`: never train on the material. `delete_material`: delete it
        within `within`.

        `usage_report`: report usage within `within`.
      enum:
        - generation_check
        - hold_until_release
        - draft_watermark
        - generation_instructions
        - disclosure
        - attribution
        - c2pa_manifest
        - no_training
        - delete_material
        - usage_report
    Duration:
      type: string
      description: An ISO 8601 duration, such as `PT60S` or `P30D`.
      example: P30D
    Address:
      type: string
      description: >
        Where a reason or finding rests, written as an address:
        `license:<id>/terms.<key>` for a

        term, `talent:<id>` for a talent's standing boundary.
      example: license:lic_k5zba2q8v1m3n7p4r6s9t0wxyh/terms.channels
  headers:
    RequestId:
      description: Identifies this request. Include it when you contact support.
      schema:
        type: string
        example: req_8f2k4m6p8r0t2v4x6z8b0d2f4h
    RateLimit:
      description: >-
        Remaining quota and seconds until it resets, as IETF RateLimit header
        fields.
      schema:
        type: string
        example: '"checks";r=184;t=1'
    RateLimitPolicy:
      description: The policy the RateLimit field reports against.
      schema:
        type: string
        example: '"checks";q=200;w=1'
    RetryAfter:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  responses:
    BadRequest:
      description: The request was malformed or a parameter was invalid.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://docs.reflections.ai/errors/parameter_invalid
            title: A parameter is invalid
            status: 400
            code: parameter_invalid
            param: use.territories[1]
            detail: '"UK" is not an ISO 3166-1 alpha-2 code. Use "GB".'
            request_id: req_8f2k4m6p8r0t2v4x6z8b0d2f4h
    Unauthorized:
      description: The key is missing, unknown or revoked.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://docs.reflections.ai/errors/invalid_api_key
            title: The API key is not valid
            status: 401
            code: invalid_api_key
            request_id: req_8f2k4m6p8r0t2v4x6z8b0d2f4h
    Forbidden:
      description: >-
        The key may not do this, the licensee is not connected, or live mode is
        not activated for this operation (`live_not_activated`).
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://docs.reflections.ai/errors/account_not_connected
            title: The licensee has not connected your platform
            status: 403
            code: account_not_connected
            detail: >-
              acct_2q8v1m3n7p4r6s9t0wxyhk5zba has no active connection with your
              account.
            request_id: req_8f2k4m6p8r0t2v4x6z8b0d2f4h
    RateLimited:
      description: Too many requests.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://docs.reflections.ai/errors/rate_limited
            title: Too many requests
            status: 429
            code: rate_limited
            request_id: req_8f2k4m6p8r0t2v4x6z8b0d2f4h
    ServerError:
      description: Something failed on our side. Retry with the same idempotency key.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unavailable:
      description: >
        Reflections is temporarily unavailable. Do not generate a named talent
        without a valid

        authorization. Retry with the same idempotency key.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  securitySchemes:
    SecretKey:
      type: http
      scheme: bearer
      description: >
        Your secret key, `rk_test_…` or `rk_live_…`, sent as `Authorization:
        Bearer <key>`. Keep it

        on your server. Restricted keys carry only the scopes you give them.

````

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