The audit id
Each record has a stable id of the form{session_id}_{stage} — e.g.
sess_abc123_0 for the first step of sess_abc123. You receive it in two places:
- On every
step.completedwebhook, asaudit_id. - On every result in
GET /v1/sessions/{id}.
client_reference_id) and you can pull the proof back on demand.
Two tiers of disclosure
The same record is disclosed at two very different levels, by design.Developer — redacted
What you, the verifying business, can fetch with your API key. The cryptographic
proof, trusted timestamp, and hash-chain position — but the signer’s identity
stays sealed.
age_verify is the boolean, never the birth date.Legal — full
The complete, decrypted record, including the signer’s attested identity.
Disclosed only through a lawful request tied to a proceeding — never over the API.
Fetch the redacted record
CallGET /v1/audits/{id} with your API key. It returns
the proof, timestamp, and chain position, scoped to your business (a record you don’t
own returns 404).
For
identify, the cleartext claims arrived on the step.completed webhook — the
audit keeps a claims_digest (a hash commitment), not a second copy. Keep the
webhook payload alongside the digest and you can prove the two match.Legal requests
When a court order, subpoena, or other lawful proceeding requires the full, decrypted record — the attested identity behind a verification — that disclosure runs through a dedicated, human-reviewed channel, never the API.Submit a request
Counsel files the request at uip.digital/legal with
the audit id(s), the matter reference, and the legal basis for disclosure.
Review
UIP’s legally-authorized staff review the request against the proceeding.
Submitting a request does not by itself compel disclosure.