Human Authorization
Human authorization provides cryptographic proof that a real, unique human approved an agent’s action — not just an API key holder, but a verified person. Powered by World ID.Why Cryptographic Human Authorization?
Traditional “human approval” (API key + checkbox) has a fundamental problem: nothing proves a human was actually involved. Any script with an API key can mark an action as “human approved.” World ID solves this with zero-knowledge proofs of personhood:- Proof of personhood — Cryptographic proof a unique human approved, not a bot or script
- Privacy-preserving — Zero-knowledge proof reveals nothing about the human’s identity
- Sybil-resistant — Each human can only approve once per action (via nullifier hash)
- Verifiable on-chain — The ZK proof can be independently verified by anyone
How It Works
The authorization flow puts the human in the loop at the moment of action — not after the fact.Quick Start
1. Agent Requests Authorization
2. Human Opens URL and Scans World ID
The human sees the agent’s request, the action description, and any context. They approve by scanning with World ID (iris scan for Orb-level, or phone verification for Device-level).3. Agent Polls for Approval
4. Create Attestation with Proof
Verification Levels
| Level | Method | Strength | Best For |
|---|---|---|---|
| Orb | Iris scan via World ID Orb | Strongest proof of personhood | High-value transactions, regulatory compliance |
| Device | Phone verification | Basic uniqueness signal | Low-risk approvals, internal workflows |
Hash-Based Approvals (Basic)
For simpler use cases that don’t require proof-of-personhood, you can still use hash-based approvals:human_approver_hash is a SHA256 hash — the actual approver identity is never stored. However, this approach cannot prove a human was actually involved.
Threshold-Based Authorization
Require World ID authorization based on risk level:Authorization Request Lifecycle
| Status | Description |
|---|---|
pending | Waiting for human to open URL and scan World ID |
approved | Human approved — human_authorization is available |
denied | Human explicitly denied the request |
expired | Request expired before approval (default: 30 minutes) |
API Reference
See the full Authorization API Reference for endpoint details.Best Practices
Use World ID for High Stakes
Reserve World ID authorization for actions above a dollar or risk threshold.
Set Short Expiries
Use 15-30 minute expiry windows. If a human doesn’t respond, the agent should re-request rather than wait indefinitely.
Include Context
Always pass context (amount, vendor, purpose) so the human knows exactly what they’re approving.
Handle Denial Gracefully
If a human denies a request, the agent should stop and report — never retry the same action automatically.