Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

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.

Headers

Reflections-Version
string

The dated API version. Defaults to the version your account is pinned to.

Example:

"2026-10-15"

Idempotency-Key
string

A unique key for this operation, up to 255 characters. In test mode, POST keys are scoped to your account and mode and bind the endpoint and body for 24 hours. A different endpoint or body with the same key is refused.

Initial live check and generation creation require a nonempty key. Each operation has a separate account-scoped namespace; retain the same API key, body and idempotency key for retries within 24 hours of creation. A pending check returns 202 with status: "checking". Completed checks replay their sealed response; successful generation POSTs replay the original accepted 202, so use GET for current state. Live verification is a read-only query that returns a fresh verification ID on each call, without exact response caching.

The broader delegated-account contract also scopes keys to Reflections-Account; delegated requests and the other planned live POST operations remain unsupported.

Maximum string length: 255

Body

application/json
inputs
object[]
required

The parts of the request, in order, as you would send them on a check.

Required array length: 1 - 64 elements
modality
enum<string>

What the model will generate, as in a check's use.modality.

Available options:
image,
video,
speech,
audio,
text
exclude_talent
string[]

Talent your user confirmed they did not mean. They are left out of candidates.

Pattern: ^tal_[0-9a-hjkmnp-tv-z]{26}$

Response

The resolution.

id
string
required

Unique identifier, prefixed res_.

Pattern: ^res_[0-9a-hjkmnp-tv-z]{26}$
object
string
required

Always resolution.

Allowed value: "resolution"
livemode
boolean
required

true in live mode, false in test mode.

status
enum<string>
required

ambiguous: more than one candidate, or one weak candidate. none: no protected talent found, which is not permission.

Available options:
matched,
ambiguous,
none
candidates
object[]
required

Each talent the inputs may invoke, including every match at medium confidence or higher. Empty when status is none.

use_kind
enum<string>
required

How the inputs use the talent. A classification for routing, not a legal finding.

Available options:
depiction,
impersonation,
endorsement,
reference
created_at
string<date-time>
required

When the resolution was made.