Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ images/docs/mini-apps/guidelines/do-dont/nav-component-dont.png
mini-apps/guidelines/do-dont.mdx
scripts/check-meta-images.js
scripts/add-meta-images.js
.idea/
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
{
"group": "Credentials",
"pages": [
"world-id/credentials/1",
"world-id/credentials/9303",
"world-id/credentials/11"
]
Expand Down
Binary file added images/docs/id/issuers/1/thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
92 changes: 92 additions & 0 deletions world-id/credentials/1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
title: "Proof of Human (PoH)"
icon: "eye"
iconType: "duotone"
description: "High assurance biometric credential captured by the Orb and used for uniqueness."
"og:image": "https://docs.world.org/images/docs/docs-meta.png"
"twitter:image": "https://docs.world.org/images/docs/docs-meta.png"
---

import { CredentialHero } from "/snippets/credential-hero.jsx";

<CredentialHero
title="Proof of Human"
description="A high-assurance biometric credential using the Orb for uniqueness."
image="/images/docs/id/issuers/1/thumbnail.png"
bgColor="#6b5320"
issuerName="World Foundation"
issuerHref="https://world.org/"
issuerVerified={true}
status="active"
id={1}
sybilResistance={true}
sybilResistanceDescription="Each human can only have one PoH credential."
validityPeriod="3 years"
sourceCodeHref="coming-soon"
/>

## Introduction

The Proof of Human (PoH) Credential is the highest-assurance credential issued under World ID. Enrollment is a two-step process: the user first obtains an Orb credential by completing an Orb capture process, which proves they are a live human. They then exchange that Orb credential at the **PoH Issuer Service** with a PoH credential which confirms uniqueness.

## Use Cases

Use the PoH Credential when you need a strong guarantee that you are interacting with a unique, live human. It is the right choice for:

- **Sybil resistance**: enforcing one account per human for airdrops, voting, rewards, or rate limiting.
- **High-assurance authentication**: gating sensitive actions where you need biometric confidence that you're interacting with the correct, unique human.
- **Proof of personhood**: distinguishing humans from bots, agents, and synthetic identities.

## Credential Structure

This credential implements the following attributes beyond the defaults in the [Credential](https://docs.rs/world-id-primitives/latest/world_id_primitives/credential/struct.Credential.html).

<table>
<thead>
<tr>
<th className="whitespace-nowrap">Attribute</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td className="whitespace-nowrap">
<code>genesis_issued_at</code>
</td>
<td>The Unix timestamp of the user's first PoH credential. Remains constant across credential renewals.</td>
</tr>
<tr>
<td className="whitespace-nowrap">
<code>expires_at</code>
</td>
<td>Unix timestamp when the credential expires. This is currently three years after the most recent issuance.</td>
</tr>
<tr>
<td className="whitespace-nowrap">
<code>associated_data_hash</code>
</td>
<td>
The PoH credential has no associated data, so this field is always{" "}
<code>FieldElement::ZERO</code>.
</td>
</tr>
</tbody>
</table>

In addition, the credential implements the following claim:

### Claim 0 - Orb Credential Commitment

A commitment that binds the PoH credential to the Orb credential the user presented at issuance. This allows the PoH Issuer to attest that the credential was minted from a valid Orb verification without revealing the underlying Orb credential to relying parties.

| Source | Value |
| ----------------------- | ------------------------------------------------------------------------------------------------ |
| Orb credential | `H(hashes.json)` — the hash signed by the Orb during enrollment. |

## Credential Renewal

Users can renew their PoH credential to extend its validity as long as the Orb capture is deemed fresh by the issuer. Each renewal updates the credential with `expires_at = now + 3 years` while `genesis_issued_at` remains constant.

## Technical Reference

For issuer endpoints and implementation-specific details, see the [PoH Issuer reference](/world-id/reference/poh-issuer).
Loading