# Overview

Privacy-preserving identity verification using zero-knowledge proofs.

## Overview

Self Pass enables developers to verify real-world identity attributes without exposing personal data. Users scan their passport, national ID, Aadhaar card, or KYC attestation with the Self app, which generates a zero-knowledge proof on-device. Applications can then verify specific attributes (age, nationality, sanctions status) without ever seeing the underlying document.

## Supported Documents

* **Passports** — NFC-enabled passports from 60+ countries
* **EU National ID Cards** — Chip-enabled European identity cards
* **Aadhaar** — India's national identity system
* **KYC Attestations** — Third-party KYC provider attestations

## Getting Started

Start with the [Quickstart](/self-pass/quickstart.md) guide, or fork the [boilerplate repo](https://github.com/selfxyz/self-integration-boilerplate) for a working example.

## Integration Options

| Path                | Description                                            | Guide                                                     |
| ------------------- | ------------------------------------------------------ | --------------------------------------------------------- |
| **Frontend SDK**    | Display QR codes to request proofs from users          | [QRCode SDK](/self-pass/qrcode-sdk.md)                    |
| **Backend SDK**     | Verify proofs server-side on a Node.js backend         | [Backend Integration](/self-pass/basic-integration.md)    |
| **Smart Contracts** | Verify proofs on-chain in a trustless manner           | [Contract Integration](/self-pass/basic-integration-1.md) |
| **Mobile SDK**      | Embed Self verification directly in a React Native app | [Mobile SDK](/self-pass/getting-started.md)               |

## Examples

* [Airdrop Protection](/self-pass/basic-integration-1/airdrop-example.md) — Gate token distribution to verified humans
* [Happy Birthday](/self-pass/basic-integration-1/happy-birthday-example.md) — Age-gated smart contract example
* [Soul Bound Token](https://github.com/selfxyz/self/blob/main/contracts/contracts/example/SelfPassportERC721.sol) — Mint SBTs for verified users
* [Cross Chain (LayerZero)](https://github.com/selfxyz/self-layerzero-example) — Cross-chain verification
* [Cross Chain (Hyperlane)](https://github.com/selfxyz/self-integration-boilerplate/tree/hyperlane-example) — Cross-chain verification

## Resources

* [Workshop Video (ETHGlobal Buenos Aires)](https://www.loom.com/share/8a6d116a5f66415998a496f06fefdc23)
* [Self Builder Group](https://t.me/+d2TGsbkSDmgzODVi)
* [Celo Testnet Faucet](https://faucet.celo.org/celo-sepolia)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.self.xyz/self-pass/self-pass.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
