Proof of Human
Proof of Human answers “Is this a unique, real person?”. The user proves they hold a genuine government document, and the proof carries a nullifier that is the same every time the same person verifies with you. One person, one account, enforced cryptographically instead of with CAPTCHAs and phone numbers.
What the user proves
- They hold a genuine, government-signed document (at your chosen security level), so they’re a real person, not a bot or a burner identity.
- Optionally, that they clear the OFAC sanctions list.
What you receive
- A
valid/invalidresult via theverification.completedwebhook. - The
nullifier: the heart of this workspace. It’s derived from the document, stable per person within your organization (the same across all your workspaces and flows), and unlinkable across organizations, so users can’t be tracked between services. Store it with a uniqueness constraint and duplicates reject themselves:
// on `verification.completed` with status 'valid':
await db.query(
'INSERT INTO verified_humans (nullifier, user_id) VALUES ($1, $2) ON CONFLICT (nullifier) DO NOTHING',
[event.nullifier, event.external_uuid],
);
No name, no nationality, no document details. You learn that the person is real and unique, and nothing else. See How verification works.
Rules you can configure
| Rule | Default | Notes |
|---|---|---|
| Security level | Hi-security | Standard also accepts non-chip documents. |
| OFAC | On | Checked against the daily-updated US Treasury list. |
No age or country rules and no reveals: uniqueness is the workspace. If you need more, use Pre-KYC.
Use cases
- Sybil resistance for airdrops and rewards: one claim per human, not per wallet. The on-chain mode is a natural fit: each verified person gets a soulbound token, and its contract enforces one token per person.
- Anti-bot for signups and communities: keep automated accounts out of launches, waitlists, and forums without punishing real users with friction.
- One-person-one-vote: governance, polls, and review systems where duplicate identities break the mechanism.
- Fair usage limits: free tiers, promotions, and referral programs that can’t be farmed with throwaway accounts.
Cost
10 credits per completed verification. See Credits and usage.
Related
- On-chain verification: mint each verified human a soulbound token.
- Webhook best practices: dedup and idempotency patterns.
- Workspaces overview: compare all four workspaces.
Thanks for your feedback!