validate_proof
Validate a proof token online by checking its signature, expiry, and revocation status against the server, and optionally confirm the proof is about the identifier you expect.
Instructions
Validate a proof token online. Checks the token signature, expiry, and revocation status against the server, and optionally that the proof is about the identifier you expect. Public endpoint — no API key required.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | No | Optional: the identifier this proof should be about (phone, email, domain, ...). When supplied, a proof about anything else answers valid:false with reason "identifier_mismatch"; a proof of an encrypted decision answers "identifier_unverifiable". | |
| proof_token | Yes | The JWT proof token to validate |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| valid | Yes | ||
| reason | No | Failure reason: expired, revoked, suspended (a reversible pause — the owner can lift it), invalid (for a token signed by a current registry key this includes a token the issuer has no record of issuing), superseded (the proof was verified again and this token was replaced by a newer one for the same proof — use the newer token; offline verification does not see this), key_revoked (the token names a signing key the issuer has revoked; decided from its `kid` before the signature is checked, so it does not vouch for the token — a genuine holder fetches a re-signed one), identifier_mismatch (the supplied identifier is not what this proof is about), or identifier_unverifiable (the proof's hash is derived from ciphertext, so no identifier can be bound to it) | |
| message | No | Human-readable message | |
| proof_id | No | Public proof id (ph_ctl_*), present when the proof is registered | |
| delegation | No | Delegation claim set, present when a valid delegation token was submitted. The attestation is domain authorization of the artifact — NOT that the artifact is safe, audited or endorsed. | |
| revoked_at | No | When the proof was revoked (only present when reason is "revoked") | |
| token_type | No | Present ONLY when the submitted token is a delegation (m-delegation-verifier-ref). Its absence means the answer is about a verification/decision proof and the `verification` block applies. | |
| suspended_at | No | When the suspension began — present only with reason `suspended` | |
| verification | No | ||
| revoked_reason | No | Reason for revocation (only present when reason is "revoked") |