Overview
Personhood credential integration lets your app ask a user to prove that they are a human or count as one unique person for a defined purpose. Your app does not need to operate the credential issuer.
The user's Credential Wallet stores credentials. Your app creates a presentation request. The user reviews that request in the wallet, chooses whether to share the required credential, and submits a verifiable presentation back to your app. Your backend verifies the presentation before creating an account, allowing an action, or granting access.
What Are Human and Uniqueness Credentials?
| Credential | What it proves | Common app use |
|---|---|---|
| Human Credential | The wallet holder has passed a human verification process. | Reduce bot activity, gate human-only features, improve trust in user actions. |
| Uniqueness Credential | The wallet holder can be treated as one unique person for a defined use case. | Enforce one account, one vote, one claim, or one privileged action per person. |
The exact credential type names used by the platform are:
HumanVerifiableCredentialUniquenessVerifiableCredential
Why Use Personhood Credentials?
Apps often need to answer questions that normal login does not answer:
- Is this account controlled by a human?
- Has this person already performed this one-time action?
- Can this participant be counted once without collecting unnecessary identity data?
- Can we protect a workflow from bots, duplicate accounts, or repeated claims?
Personhood credentials help your application answer these questions while requesting only the information it needs.
User Flow at a Glance
Your integration has three visible parts:
- Your app: frontend, backend, app-owned database, and authorization logic.
- Personhood Credential Wallet: the user-facing app that stores credentials and asks for consent.
- Presentation Exchange Platform: the developer registration and trust layer for your app metadata, domains, request credential types, and policies.
Your app still owns its own users, sessions, product rules, storage, and final authorization decisions.
Journal makes reading public and protects comment publication. Its flow is:
sequenceDiagram participant User as Reader participant Web as Journal frontend participant Backend as Journal backend participant Wallet as Credential Wallet User->>Web: Select Comment Web->>Backend: Create verification request Backend-->>Web: PD fetch URL and expiry Web-->>User: Show QR code User->>Wallet: Scan and approve Wallet->>Backend: Fetch request and submit presentation Backend->>Backend: Verify and persist result Web->>Backend: Poll status and complete browser session Web-->>User: Ask for public name if missing User->>Web: Submit comment Web->>Backend: Publish comment Backend->>Backend: Check session, saved name, and credential state Backend-->>Web: Published comment or error
The ten-minute verification request and seven-day browser session have different lifetimes. A verified wallet submission alone does not authorize a browser to comment; the browser must complete its own session, and the server checks authorization again when publishing.
Download Personhood Credential Wallet from the App Store.
Next Step
Start with Before You Start, then read the Glossary.