1. Primitives — the verbs
A primitive is one verified action. You don’t call an “Identity API” or a “Sign API”; you compose primitives.identify
Disclose specific government-attested fields (“blocks”) — e.g.
first_name,
dob, country, document_number.age_verify
Prove the holder meets an age threshold. UIP computes it from the credential’s
birth date and returns only the boolean — the date never reaches you.
sign
The holder’s device signs a hash of one or more documents you provide
(what-you-see-is-what-you-sign), bound to a verified identity.
light_sign
The same device signature over short inline terms text — no file upload.
For consent and acceptance flows.
See Primitives for the full parameter and result
shapes.
2. Wallets — where the credential lives
Today the credential is a US mobile driver’s license (an ISO/IEC 18013-5 mdoc), presented from Apple Wallet (Safari) or Google Wallet (Chrome) over the W3C Digital Credentials API in the browser. Both wallets return the same mdoc shape, so UIP verifies them identically against the issuing authority’s (AAMVA) trust anchors. Each wallet supports a subset of primitives, exposed live atGET /v1/wallets. See
Wallets & coverage for the current map.
3. Sessions — one flow for the user
A session bundles the steps you need into a single user experience. You create it server-to-server, then hand the user its hosted URL (as a link or QR). On that page the user’s wallet completes each step on-device; UIP verifies each one and sends you a signed webhook as it happens.Hand off
Send the user to
url — same-device link or cross-device QR. UIP’s page drives
the wallet; you host nothing.Verify & deliver
The wallet responds, UIP verifies it cryptographically, and you receive a
step.completed webhook with the claims or signature — in order, one per step.What UIP is not
Not a document-scanning / OCR / liveness vendor
Not a document-scanning / OCR / liveness vendor
UIP never sees a photo of an ID. Claims come from the issuer’s digitally
signed credential in the wallet, verified by signature — not by reading a
picture. There is no selfie, no liveness check, no document upload to UIP.
Not a data broker
Not a data broker
UIP discloses only the fields your step requests, only to you, only for that
session.
age_verify returns a boolean and never reveals the birth date.Not an identity you store
Not an identity you store
There is no UIP “account” the user logs into. The credential stays in their
wallet; each session is a fresh, consented disclosure.
Next: Quickstart
Create a session and receive your first verified result.