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

Send exactly one of receipt, manifest, url, sha256 or fingerprint.

receipt
string

A receipt ID or JWS.

manifest
string

A C2PA manifest store.

url
string<uri>

A file Reflections can fetch.

sha256
string

SHA-256 of the file's bytes, in hex. Matches only an exact copy of a registered output.

Pattern: ^[0-9a-f]{64}$
fingerprint
object

A fingerprint you computed, when the bytes cannot leave your platform.

Response

The verification.

id
string
required

Unique identifier, prefixed vrf_.

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

Always verification.

Allowed value: "verification"
result
enum<string>
required

verified: a valid receipt matches. not_found: nothing matches; this says nothing about whether the content is licensed. invalid: a receipt or manifest is present and fails verification.

Available options:
verified,
not_found,
invalid
method
enum<string>
required

How the content matched: its receipt, an embedded manifest, the exact digest, a fingerprint or a watermark.

Available options:
receipt,
manifest,
digest,
fingerprint,
watermark
created_at
string<date-time>
required

When the verification was made.

match
object | null

How the file matched a registered output, for digest, fingerprint and watermark. null when a receipt or manifest matched.

manifest
object | null

The C2PA manifest read from the file or sent as manifest. null when none was read.

receipt
object | null

The matching receipt, in full, with its live use_status. null when nothing matched.

detail
string | null

What failed, when result is invalid. Otherwise null.