> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.withpersona.com/2020-05-18/relay-schemas/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.withpersona.com/_mcp/server. # Schemas > Shared data schemas for the Relay API. ## 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 To obtain the Claim Type ID needed to create a Relay session, navigate to Persona Dashboard → Relay. Additional details, including supported use cases, verification approaches, and implementation guidance for each claim type, are also available in the Dashboard. ### Humanness | Claim type name | Description | | ----------------------- | ------------------------------------------------------------------------------------------ | | Live Human Presence | Evaluates whether a real person is present at the time of verification. | | Verified Human Presence | Evaluates whether a real person is present using a higher-assurance verification approach. | ### Age | Claim type name | Description | | ---------------------- | -------------------------------------------------------------------------------------------------------------------- | | Age 18+ Germany | Evaluates whether a user meets an 18+ age threshold using an approach designed for Germany-related use cases. | | Age 18+ United Kingdom | Evaluates whether a user meets an 18+ age threshold using an approach designed for United Kingdom-related use cases. | | Age 18+ France | Evaluates whether a user meets an 18+ age threshold using an approach designed for France-related use cases. | | Age 18+ Italy | Evaluates whether a user meets an 18+ age threshold using an approach designed for Italy-related use cases. | | Age 18+ Australia | Evaluates whether a user meets an 18+ age threshold using an approach designed for Australia-related use cases. | | Age 16+ Australia | Evaluates whether a user meets a 16+ age threshold using an approach designed for Australia-related use cases. | | Age 18+ Brazil | Evaluates whether a user meets an 18+ age threshold using an approach designed for Brazil-related use cases. | | Age 18+ Verified | Evaluates whether a user meets an 18+ age threshold using a high-assurance age verification approach. | | Age 21+ Verified | Evaluates whether a user meets a 21+ age threshold using a high-assurance age verification approach. | ## Error responses All Relay API endpoints return errors in the following shape: ```json { "errors": [ { "status": "401", "title": "Unauthorized", "detail": "..." } ] } ``` | 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 | > Shared data schemas for the Relay API.