Skip to content
Merged
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
4 changes: 2 additions & 2 deletions agents/agent-kit/integrate.mdx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Integrate AgentKit"
description: "AgentKit Beta extends x402 allowing websites to enable agent traffic without falling victim to spam."
description: "AgentKit Beta extends x402, allowing websites to distinguish human-backed agents from bots and scripts."
"og:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/docs-meta.png"
"og:description": "AgentKit Beta extends x402 allowing websites to enable agent traffic without falling victim to spam."
"og:description": "AgentKit Beta extends x402, allowing websites to distinguish human-backed agents from bots and scripts."
"twitter:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/docs-meta.png"
---

Expand Down
4 changes: 4 additions & 0 deletions images/docs/human-badge-blue.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions images/docs/human-badge-gray.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions mini-apps/index.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: "What are Mini Apps?"
description: "Learn what Mini Apps are and how to build native-like apps in World App with MiniKit, distribution, and monetization."
description: "Learn what Mini Apps are and how to build native-like apps in World App with MiniKit, distribution and monetization."
"og:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/mini-apps-meta.png"
"og:description": "What Mini Apps are and how to build them with MiniKit."
"twitter:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/mini-apps-meta.png"
---

Mini apps enable third-party developers to create native-like applications within World App.
Best for small and medium sized developers who want access to a distribution channel of millions of users.
Build with flexible smart contracts and leverage World ID and the World wallet for seamless user experiences.
Build with flexible smart contracts and leverage World ID and the World Wallet for seamless user experiences.

## How it Works

Expand Down
10 changes: 5 additions & 5 deletions snippets/credential-hero.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export const CredentialHero = ({
{/* Metadata table */}
<div>
{issuerName && (
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] md:px-8 dark:border-zinc-800">
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] last:border-b-0 md:px-8 dark:border-zinc-800">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-zinc-200/70 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400">
<Icon icon="building" size={16} />
</span>
Expand Down Expand Up @@ -100,7 +100,7 @@ export const CredentialHero = ({
</div>
)}
{status && (
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] md:px-8 dark:border-zinc-800">
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] last:border-b-0 md:px-8 dark:border-zinc-800">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-zinc-200/70 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400">
<Icon icon="signal" size={16} />
</span>
Expand All @@ -125,7 +125,7 @@ export const CredentialHero = ({
</div>
)}
{id != null && (
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] md:px-8 dark:border-zinc-800">
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] last:border-b-0 md:px-8 dark:border-zinc-800">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-zinc-200/70 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400">
<Icon icon="hashtag" size={16} />
</span>
Expand All @@ -138,7 +138,7 @@ export const CredentialHero = ({
</div>
)}
{sybilResistance != null && (
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] md:px-8 dark:border-zinc-800">
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] last:border-b-0 md:px-8 dark:border-zinc-800">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-zinc-200/70 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400">
<Icon icon="shield-check" size={16} />
</span>
Expand Down Expand Up @@ -179,7 +179,7 @@ export const CredentialHero = ({
</div>
)}
{validityPeriod && (
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] md:px-8 dark:border-zinc-800">
<div className="flex items-center gap-3 border-b border-zinc-200 px-6 py-3.5 text-[14px] last:border-b-0 md:px-8 dark:border-zinc-800">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-zinc-200/70 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400">
<Icon icon="clock" size={16} />
</span>
Expand Down
7 changes: 7 additions & 0 deletions tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@
}

@layer components {
/* Tint the custom Proof of Human badge when its sidebar page is selected. */
#sidebar-content
li[data-active]
img[src$="/images/docs/human-badge-gray.svg"] {
content: url("/images/docs/human-badge-blue.svg");
}

/* Page content text links only (anchors without custom classes) */
.prose a:not([class]),
.prose a:not([class]):hover,
Expand Down
4 changes: 2 additions & 2 deletions world-chain/index.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: "World Chain Overview"
description: "Overview of World Chain: a human-centric L2 with free gas for verified users, Mini Apps distribution, and sybil resistance."
description: "Overview of World Chain: a human-centric L2 with a free gas allowance for verified users, Mini Apps distribution and sybil resistance."
"og:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/worldchain-meta.png"
"og:description": "World Chain overview and unique primitives for developers."
"twitter:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/worldchain-meta.png"
---

World Chain is a blockchain for humans. World chain offers several unique primitives:

- Free gas fees for all verified humans
- A free gas allowance for verified humans
- Native mobile distribution to all World App users through [mini-apps](/mini-apps)
- Simplified crypto transactions [through mini apps](/mini-apps/commands/verify)
- Sybil resistance for developers via [World ID](/world-id)
Expand Down
9 changes: 4 additions & 5 deletions world-id/credentials/1.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
title: "Proof of Human (PoH)"
icon: "eye"
iconType: "duotone"
icon: "/images/docs/human-badge-gray.svg"
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"
Expand All @@ -27,15 +26,15 @@ import { CredentialHero } from "/snippets/credential-hero.jsx";

## Introduction

The Proof of Human (PoH) Credential is the highest-assurance credential issued under World ID. Users obtain it by verifying at an Orb, a device that captures iris biometrics. The credential is an anonymous proof that the user is a unique, live human.
The Proof of Human (PoH) Credential is the highest-assurance credential issued under World ID. Users obtain it by verifying at an Orb, a device that captures iris biometrics by taking images of the iris. The credential is an anonymous proof that the user is a unique, live human.

## 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.
- **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.
- **Proof of personhood**: distinguishing humans from bots, agents and synthetic identities.

## Credential Structure

Expand Down
15 changes: 8 additions & 7 deletions world-id/credentials/11.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Selfie Check (Beta)"
icon: "camera"
iconType: "duotone"
description: "A low-assurance biometric credential using the device camera for liveness and facial similarity."
description: "A medium-assurance biometric credential using the device camera for liveness and facial similarity."
"og:image": "https://docs.world.org/images/docs/docs-meta.png"
"twitter:image": "https://docs.world.org/images/docs/docs-meta.png"
---
Expand All @@ -11,7 +11,7 @@ import { CredentialHero } from "/snippets/credential-hero.jsx";

<CredentialHero
title="Selfie Check (Beta)"
description="A low-assurance biometric credential using the device camera for liveness and facial similarity."
description="A medium-assurance biometric credential using the device camera for liveness and facial similarity."
image="/images/docs/id/issuers/11/thumbnail.png"
bgColor="#1a3a4a"
issuerName="Tools for Humanity"
Expand All @@ -27,7 +27,8 @@ import { CredentialHero } from "/snippets/credential-hero.jsx";
Selfie Check (Beta) uses the user's mobile device camera for liveness and facial
similarity checks. It adds friction against automated and repeated account
creation without requiring a Proof of Human. Unlike high-assurance Orb verification,
Selfie Check does not provide a strict one-person-one-account guarantee.
Selfie Check does not provide a strict one-person-one-account guarantee and is
considered a medium-assurance verification method.
It returns a proof of the completed check, not a numeric Sybil or uniqueness
score.

Expand All @@ -45,20 +46,20 @@ user completes the camera flow again before returning another proof.
so the feature flag can be enabled for your app.
</Warning>

Once enabled, anyone with World App can use Selfie Check. No Orb, passport, or
Once enabled, anyone with World ID App can use Selfie Check. No Orb, passport or
other prerequisite credential is required.

## How it works

Use IDKit to integrate Selfie Check into your application.

* **On mobile (iOS/Android):** Use IDKit to generate a deep link and attach it to a "Verify" CTA. When the user taps it, they are redirected to World App to complete Selfie Check.
* **On desktop:** Use IDKit to generate a QR code and display it to the user. When the user scans it with their mobile device camera, World App launches and guides them through Selfie Check.
* **On mobile (iOS/Android):** Use IDKit to generate a deep link and attach it to a "Verify" CTA. When the user taps it, they are redirected to World ID App to complete Selfie Check.
* **On desktop:** Use IDKit to generate a QR code and display it to the user. When the user scans it with their mobile device camera, World ID App launches and guides them through Selfie Check.

## User Experience Flow

1. **Challenge:** The user initiates the flow on your app (Relying Party).
2. **Hand-off:** The user is redirected to World App. If they don't have World App installed, they are guided to download it and go straight into the Selfie Check experience.
2. **Hand-off:** The user is redirected to World ID App. If they don't have World ID App installed, they are guided to download it and go straight into the Selfie Check experience.
3. **Enrollment/Auth:**
* **New User:** Enrolls with a selfie and liveness check.
* **Returning User:** Completes a short camera check to verify continuity.
Expand Down
4 changes: 2 additions & 2 deletions world-id/idkit/credentials.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ A [Credential](https://docs.rs/world-id-primitives/latest/world_id_primitives/cr
| --- | --- | --- |
| Proof of Human | The user is a unique human, backed by anonymous biometric verification by the Orb. | `proofOfHuman` |
| Passport | The user holds a verified NFC passport credential. | `passport` |
| Selfie Check (Beta) | A low-assurance biometric credential using the device camera for liveness and facial similarity. | `selfieCheckLegacy` |
| Selfie Check (Beta) | A medium-assurance biometric credential using the device camera for liveness and facial similarity. | `selfieCheckLegacy` |
| Identity Check | An attestation that a document-backed property about the user matches your requested attributes. | `identityCheck` with attributes like `minimum_age`, `nationality`, or `document_type`. |

You can also add a liveness check to any preset with `require_user_presence`.
Expand Down Expand Up @@ -113,7 +113,7 @@ const preset = passport({ signal: "user-123" });
Once enabled, use `selfieCheckLegacy()` to request Selfie Check. The preset
currently uses World ID 3.0; World ID 4.0 support is not yet available.

Anyone with World App can complete the flow—no Orb or document credential is
Anyone with World ID App can complete the flow—no Orb or document credential is
required. Forward the complete IDKit result to the
[verification endpoint](/api-reference/developer-portal/verify).

Expand Down
10 changes: 5 additions & 5 deletions world-id/idkit/integrate.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ description: "Integrate World ID into your app"

import IDKitResponse from "/snippets/idkit-response.mdx";

IDKit is the SDK for integrating World ID into your app. It handles proof requests, verification flows, and communication with the World ID app, so your backend receives a cryptographic proof of human, not personal data.
IDKit is the SDK for integrating World ID into your app. It handles proof requests, verification flows and communication with the World ID App, so your backend receives cryptographic proof of human, not personal data.

Use the React widget for drop-in integration, or the JS, Swift, and Kotlin SDKs for custom flows. For the core concepts of World ID, see [this page](/world-id/concepts).
Use the React widget for drop-in integration, or the JS, Swift and Kotlin SDKs for custom flows. For the core concepts of World ID, see [this page](/world-id/concepts).

> Tip: To integrate faster, give your coding agent the [Build with LLMs prompt](/world-id/idkit/build-with-llms) — copy it once, then paste into Claude, Cursor, or any AI coding assistant.
> Tip: To integrate faster, give your coding agent the [Build with LLMs prompt](/world-id/idkit/build-with-llms) — copy it once, then paste into Claude, Cursor or any AI coding assistant.

## How it works

Send a **proof request** through IDKit, challenging the user to prove something about themselves — such as uniqueness, document possession, or liveness — based on their [credentials](/world-id/overview#credentials). The user's World ID app generates a zero-knowledge proof without revealing personal data. Your backend then verifies the proof and stores a **nullifier** (a per-app, per-action identifier) to prevent the same person from verifying twice.
Send a **proof request** through IDKit, challenging the user to prove something about themselves — such as uniqueness, document possession or liveness — based on their [credentials](/world-id/overview#credentials). The user's World ID App generates a zero-knowledge proof without revealing personal data. Your backend then verifies the proof and stores a **nullifier** (a per-app, per-action identifier) to prevent the same person from verifying twice.

<img src="/images/docs/idkit-flow.svg" alt="IDKit integration flow" />

Four components are involved: your **client** (where IDKit runs), your **backend** (which signs requests and verifies proofs), the **World ID app** (on the user's device), and the **Developer Portal** (which validates proofs on-chain). The steps below cover each one.
Four components are involved: your **client** (where IDKit runs), your **backend** (which signs requests and verifies proofs), the **World ID App** (on the user's device) and the **Developer Portal** (which validates proofs on-chain). The steps below cover each one.

# Step 1: Install IDKit

Expand Down
Loading
Loading