> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proofage.net/llms.txt
> Use this file to discover all available pages before exploring further.

# ProofAge Documentation

> Age and identity verification for the web: one API, a hosted widget, signed webhooks and an MCP server.

ProofAge verifies people for websites: that they are who they say they are, or that they are old enough. The person takes a selfie and, for the document checks, photographs an identity document in a hosted widget. Your backend creates the verification and receives the decision by webhook.

<CardGroup cols={3}>
  <Card title="Quick start" icon="play" href="/getting-started/quick-start">
    Create a verification, open the widget, receive the decision.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/overview">
    Every endpoint, with a playground.
  </Card>

  <Card title="Integration prompt" icon="wand-magic-sparkles" href="/integration/integration-prompt">
    Let an AI coding agent do the integration.
  </Card>
</CardGroup>

## Choose your check

Each workspace runs one check, chosen when you create it. Prices are on the [Pricing](/getting-started/pricing) page.

<CardGroup cols={3}>
  <Card title="Identity (KYC)" icon="id-card" href="/core-technology/id-verification">
    An identity document and a selfie: the document is read and checked, the person is checked to be live, and the selfie is matched to the document's portrait.
  </Card>

  <Card title="Age verification by ID document" icon="calendar-check" href="/core-technology/age-by-document">
    The same capture as KYC. The date of birth on the document is compared with your minimum age, from 16 to 25.
  </Card>

  <Card title="Facial age estimation" icon="face-viewfinder" href="/core-technology/age-estimation">
    Just a selfie, 18+ only. When the selfie can't confirm 18+, the person adds an ID in the same session; nobody is declined on the selfie alone.
  </Card>
</CardGroup>

## How an integration fits together

```mermaid theme={null}
sequenceDiagram
    participant B as Your backend
    participant P as ProofAge
    participant U as The person
    B->>P: POST /v1/verifications (signed)
    P-->>B: id, url
    B->>U: open url (Browser SDK or redirect)
    U->>P: consent, selfie, document
    P-->>B: webhook: approved / declined / …
    B->>P: GET /v1/verifications/{id} (optional)
```

1. Your backend creates a verification with a request signed by your secret key, and gets back its `id` and a `url`.
2. The person opens the `url`: in a window over your page with the [Browser SDK](/integration/web/browser-sdk), or by [redirect](/integration/web/redirect). The widget handles consent, camera access, capture guidance, 28 languages and moving from desktop to phone.
3. ProofAge sends the decision to your [webhook](/integration/webhooks). You can also [read the result](/integration/retrieving-results) at any time.

## Choose your integration

<CardGroup cols={3}>
  <Card title="Redirect" icon="arrow-up-right-from-square" href="/integration/web/redirect">
    Send the person to the verification page and back. No frontend code.
  </Card>

  <Card title="Browser SDK" icon="window-maximize" href="/integration/web/browser-sdk">
    Open the verification over your page in a few lines.
  </Card>

  <Card title="Your own UI" icon="camera" href="/integration/web/custom-ui">
    Build the capture screens yourself and upload the images through the API.
  </Card>

  <Card title="Server SDKs" icon="server" href="/integration/sdks">
    Node.js, Python, PHP and Laravel sign requests and verify webhooks.
  </Card>

  <Card title="Plugins" icon="puzzle-piece" href="/integration/plugins/wordpress">
    WordPress, Shopify and PrestaShop, with no code.
  </Card>

  <Card title="MCP server" icon="plug" href="/integration/mcp/overview">
    Let Claude, Cursor or Codex integrate and operate ProofAge.
  </Card>
</CardGroup>

## Then

<CardGroup cols={3}>
  <Card title="Webhooks" icon="tower-broadcast" href="/integration/webhooks">
    Signed decision events, retries and replay.
  </Card>

  <Card title="Sandbox and test data" icon="flask" href="/integration/sandbox-testing">
    Test workspaces are never billed; set any outcome.
  </Card>

  <Card title="Concepts" icon="sitemap" href="/getting-started/concepts">
    Workspaces, verifications, attempts and test mode.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.