Schemas
Claim payload
When encryptionKeyPem is null, claimPayload is a JSON string. Once parsed (JSON.parse(claimPayload)), it has the following shape:
ClaimPayload
| Field | Type | Description |
|---|---|---|
claim_type | string | The claim type that was evaluated |
claim_result | 'passed' | 'failed' | The outcome of the claim |
methodology | MethodologyCalculation[] | Omitted if the claim config sets hide_methodology |
MethodologyCalculation
| Field | Type | Description |
|---|---|---|
method | 'facial_age_estimation' | 'document_selfie' | 'live_selfie' | The verification method used |
result | 'passed' | 'failed' | The outcome of this method |
Claim types
| Claim type | Description |
|---|---|
age_over_18_germany | Age 18+ for Germany — facial estimation with document selfie fallback |
age_over_18_united_kingdom | Age 18+ for UK — facial estimation with document selfie fallback |
age_over_18_france | Age 18+ for France — facial estimation with document selfie fallback, methodology hidden from the claim response |
age_over_18_italy | Age 18+ for Italy — facial estimation with document selfie fallback, methodology hidden |
age_over_18_australia | Age 18+ for Australia — facial estimation with document selfie fallback |
age_over_16_australia | Age 16+ for Australia — facial estimation with document selfie fallback |
age_over_18_brazil | Age 18+ for Brazil — facial estimation with document selfie fallback |
age_over_18_verified | Age 18+ via document selfie only (no estimation fallback) |
age_over_21_verified | Age 21+ via document selfie only |
age_over_13_verified | Age 13+ via document selfie only |
age_over_18_estimated | Age 18+ via facial age estimation only (no document fallback) |
age_over_13_estimated | Age 13+ via facial age estimation only (no document fallback) |
live_human_presence | Confirms a live human is present — via 3-point or video selfie |
PersonaError
Base class for all TypeScript SDK errors. Extends Error.
| Property | Type | Description |
|---|---|---|
statusCode | number | HTTP status code from the Persona API |
title | string | Short description of the error |
details | string | undefined | Optional longer description |
code | string | undefined | Optional machine-readable error code |
meta | Record<string, unknown> | undefined | Optional additional metadata |
Error responses
All Relay API endpoints return errors in the following shape:
1 { 2 "errors": [ 3 { 4 "status": "401", 5 "title": "Unauthorized", 6 "detail": "..." 7 } 8 ] 9 }
| Status | Description |
|---|---|
400 | Bad request — missing or invalid parameters |
401 | Unauthorized — invalid or missing API key or relay secret |
403 | Forbidden — relay secret does not match, or claim not yet available |
404 | Not found — relay token does not exist |
429 | Rate limited |
500 / 502 / 503 / 504 | Server error |

