Preview release.These docs are a work in progress. Pages are still being written, links may break, and structure may shift without notice. Treat everything here as a draft and report issues onGitHub.
Evaluate claims for one target
const url = 'https://example.com/v1/evaluations';const options = { method: 'POST', headers: {'X-Api-Key': '<X-Api-Key>', 'Content-Type': 'application/json'}, body: '{"claims":[{"id":"example","version":"example"}],"disclosure":"example","format":"example","on_behalf_of":{"actor":{"assurance":"example","id_hash":"example","type":"example"},"delegation_ref":"example"},"purpose":"example","relationship":{"attributes":{},"type":"example"},"requester":{"assurance":{"evidence":[{}],"issuer":"example","level":"example","level_scheme":"example","method":"example","verified_at":"2026-04-15T12:00:00Z"},"attributes":{},"id":"example","identifiers":[{"country":"example","issuer":"example","scheme":"example","value":"example"}],"profile":"example","type":"example"},"target":{"assurance":{"evidence":[{}],"issuer":"example","level":"example","level_scheme":"example","method":"example","verified_at":"2026-04-15T12:00:00Z"},"attributes":{},"id":"example","identifiers":[{"country":"example","issuer":"example","scheme":"example","value":"example"}],"profile":"example","type":"example"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/evaluations \ --header 'Content-Type: application/json' \ --header 'X-Api-Key: <X-Api-Key>' \ --data '{ "claims": [ { "id": "example", "version": "example" } ], "disclosure": "example", "format": "example", "on_behalf_of": { "actor": { "assurance": "example", "id_hash": "example", "type": "example" }, "delegation_ref": "example" }, "purpose": "example", "relationship": { "attributes": {}, "type": "example" }, "requester": { "assurance": { "evidence": [ {} ], "issuer": "example", "level": "example", "level_scheme": "example", "method": "example", "verified_at": "2026-04-15T12:00:00Z" }, "attributes": {}, "id": "example", "identifiers": [ { "country": "example", "issuer": "example", "scheme": "example", "value": "example" } ], "profile": "example", "type": "example" }, "target": { "assurance": { "evidence": [ {} ], "issuer": "example", "level": "example", "level_scheme": "example", "method": "example", "verified_at": "2026-04-15T12:00:00Z" }, "attributes": {}, "id": "example", "identifiers": [ { "country": "example", "issuer": "example", "scheme": "example", "value": "example" } ], "profile": "example", "type": "example" } }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Claim reference. Wire requests may also use a plain string claim id.
object
Frozen minimal actor/delegation envelope. Replaces the previous free-form object; free-form payloads are rejected. Simple deployments omit on_behalf_of entirely. Production-grade delegation (OAuth token exchange / RAR / CIBA) arrives post-1.0 as an additive profile that maps the actor onto OAuth act-claim semantics via the opaque delegation_ref; the shape does not bake in a single-actor assumption.
object
object
Optional assurance level of the actor (for example an acr value).
Keyed-hash identifier of the actor in hmac-sha256:
Opaque reference to an out-of-band delegation record. Not interpreted by the envelope; the indirection point through which a later OAuth profile resolves an actor chain.
object
object
object
object
object
object
object
object
object
object
object
object
Examplegenerated
{ "claims": [ { "id": "example", "version": "example" } ], "disclosure": "example", "format": "example", "on_behalf_of": { "actor": { "assurance": "example", "id_hash": "example", "type": "example" }, "delegation_ref": "example" }, "purpose": "example", "relationship": { "attributes": {}, "type": "example" }, "requester": { "assurance": { "evidence": [ {} ], "issuer": "example", "level": "example", "level_scheme": "example", "method": "example", "verified_at": "2026-04-15T12:00:00Z" }, "attributes": {}, "id": "example", "identifiers": [ { "country": "example", "issuer": "example", "scheme": "example", "value": "example" } ], "profile": "example", "type": "example" }, "target": { "assurance": { "evidence": [ {} ], "issuer": "example", "level": "example", "level_scheme": "example", "method": "example", "verified_at": "2026-04-15T12:00:00Z" }, "attributes": {}, "id": "example", "identifiers": [ { "country": "example", "issuer": "example", "scheme": "example", "value": "example" } ], "profile": "example", "type": "example" }}Responses
Section titled “Responses”Claim evaluation result
object
object
object
Policy-asserted confidence label configured on the source binding and method. This is returned verbatim for successful matches against that binding; it is not a measured quality score for the individual match.
Configured matching method for the source binding.
Target-matching policy identifier for the source binding: the policy that governs how the request target is matched to a source record. Distinct from generated_by.policy_id in claim provenance, which names the evaluation policy under which the result was produced.
Reserved optional per-match score. Current configured-only matching usually omits this field.
Versioned claim provenance (registry-notary-claim-provenance/v1). PROV-mappable but not PROV-O. Requester-side identity (client, actor, subject) is deliberately absent; it lives in restricted audit only.
object
Upstream provenance records this result was derived from. Always empty in v1; reserved for additive cross-evaluation linking.
object
object
Sha256:
Evaluation policy identifier: the policy under which this result was produced. Distinct from matching.policy_id, which names the target-matching policy for a source binding. Present for flows evaluated under a named policy (e.g. self-attestation); omitted for machine-client flows with no evaluation policy.
Identifier of the service that produced the result. Replaces the dropped computed_by field; the CCCEV renderer maps its provider agent from here.
object
Minimized summaries for connectors that cross an external execution boundary (the source-adapter sidecar). The full assurance document stays in restricted audit.
object
object
Sha256:
Source-adapter sidecar runtime.
object
object
object
Claim value. The runtime may return any JSON value.
object
Example
{ "results": [ { "claim_id": "farmer-under-4ha", "claim_version": "2026-05", "disclosure": "predicate", "evaluation_id": "01HX7Y5F2WAJ7ZP0Q4M5K9E8NC", "expires_at": "2026-05-25T12:00:00Z", "format": "application/vnd.registry-notary.claim-result+json", "issued_at": "2026-05-24T12:00:00Z", "matching": { "confidence": "high", "method": "identifier_exact", "policy_id": "national-id-exact-v1", "score": 1 }, "provenance": { "derived_from": [], "generated_by": { "claim_id": "person_is_alive", "claim_version": "1", "evaluation_id": "01HX7Y5F2WAJ7ZP0Q4M5K9E8NC", "policy_hash": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "policy_id": "self-attestation", "policy_version": "v1", "service_id": "demo.registry-notary", "type": "claim_evaluation" }, "schema_version": "registry-notary-claim-provenance/v1", "used": { "source_count": 1, "source_runtimes": [], "source_versions": {} } }, "requester_ref": { "handle": "rnref:v1:example-requester-ref", "identifier_schemes": [ "agency_id" ], "profile": "benefits", "type": "Agency" }, "satisfied": true, "subject_type": "person", "target_ref": { "handle": "rnref:v1:example-target-ref", "identifier_schemes": [ "national_id" ], "profile": "resident", "type": "Person" }, "value": true } ]}Invalid request
object
Example
{ "code": "request.invalid", "detail": "the evidence request is invalid", "status": 400, "title": "Invalid evidence request", "type": "https://docs.registry-notary.dev/problems/request/invalid"}Missing or invalid credential
object
Example
{ "code": "auth.missing_credential", "detail": "missing authentication credential", "status": 401, "title": "Missing credential", "type": "https://docs.registry-notary.dev/problems/auth/missing_credential"}Not authorized for requested claim, purpose, disclosure, or format
object
Example
{ "code": "auth.scope_denied", "detail": "missing required scope", "status": 403, "title": "Scope denied", "type": "https://docs.registry-notary.dev/problems/auth/scope_denied"}Requested format is not acceptable
object
Example
{ "code": "format.unsupported", "detail": "the requested claim format is not supported", "status": 406, "title": "Claim format not supported", "type": "https://docs.registry-notary.dev/problems/format/unsupported"}Request body or batch is too large
object
Example
{ "code": "request.too_large", "detail": "the request body or batch is too large", "status": 413, "title": "Request too large", "type": "https://docs.registry-notary.dev/problems/request/too_large"}Self-attestation request is rate limited
object
Example
{ "code": "self_attestation.rate_limited", "detail": "self-attestation request is rate limited", "status": 429, "title": "Self-attestation rate limited", "type": "https://docs.registry-notary.dev/problems/self_attestation/rate_limited"}Source service is unavailable
object
Example
{ "code": "source.unavailable", "detail": "the evidence source is unavailable", "status": 503, "title": "Source unavailable", "type": "https://docs.registry-notary.dev/problems/source/unavailable"}