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

# ID Verification (KYC)

> Verify customer identities with iDenfy using document checks, liveness detection, and AI plus human review in a three-step KYC flow.

## The Flow

```
Your server                    iDenfy                      Your user
    │                            │                            │
    │── POST /api/v2/token ─────>│                            │
    │<── authToken, redirectUrl ─│                            │
    │                            │                            │
    │── redirect user ──────────>│── show verification UI ───>│
    │                            │<── uploads doc + selfie ───│
    │                            │                            │
    │<── POST webhook ──────────│── AI + human review        │
    │   (APPROVED/DENIED)        │                            │
```

## Quick Integration (3 Steps)

<Steps>
  <Step title="Create a session">
    ```bash theme={"system"}
    curl -X POST https://ivs.idenfy.com/api/v2/token \
      -u "API_KEY:API_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"clientId": "user-123", "firstName": "John", "lastName": "Doe"}'
    ```

    Response includes `authToken` and `redirectUrl`. [Full parameter reference →](/kyc/generate-token)
  </Step>

  <Step title="Send user to verification">
    **Simplest** — redirect to `redirectUrl`:

    ```javascript theme={"system"}
    window.location.href = data.redirectUrl;
    ```

    **Embedded** — use iFrame:

    ```html theme={"system"}
    <iframe src="https://ui.idenfy.com/?authToken=TOKEN" allow="camera; fullscreen" allowFullScreen
      style="width:670px; height:800px; border:none;"></iframe>
    ```

    **Mobile** — pass `authToken` to [Android](/sdks/android/quickstart) or [iOS](/sdks/ios/quickstart) SDK.
  </Step>

  <Step title="Handle the webhook">
    ```json theme={"system"}
    {
      "status": { "overall": "APPROVED" },
      "data": { "docFirstName": "JOHN", "docLastName": "DOE" },
      "scanRef": "d2714c8a-...",
      "clientId": "user-123",
      "final": true
    }
    ```

    When `final: true` — this is the definitive result. [Full webhook reference →](/kyc/webhooks)
  </Step>
</Steps>

***

## What Happens During Verification

| Step                 | What iDenfy does                                                 |
| -------------------- | ---------------------------------------------------------------- |
| **Document capture** | User selects country + document type, takes photo (or uploads)   |
| **Liveness check**   | 3D face liveness prevents spoofing (selfie with depth analysis)  |
| **AI analysis**      | OCR extracts data, validates document authenticity, matches face |
| **Human review**     | Expert reviews edge cases — blurry docs, unusual documents       |
| **Result**           | `APPROVED`, `DENIED`, or `SUSPECTED` delivered via webhook       |

## Result Statuses

| Status      | Meaning                           | Your action                                            |
| ----------- | --------------------------------- | ------------------------------------------------------ |
| `APPROVED`  | Document valid, face matched      | Onboard the user                                       |
| `DENIED`    | Document invalid or face mismatch | Reject or ask to retry                                 |
| `SUSPECTED` | Checks passed but flags found     | Review `fraudTags` and `mismatchTags`, decide yourself |

<Tip>
  `SUSPECTED` does **not** mean failure. Check `manualDocument` and `manualFace` — if they show `DOC_VALIDATED` and `FACE_MATCH`, the verification passed but has flags. See [full status vocabulary →](/resources/vocabulary)
</Tip>

***

## Features You Can Enable

All configured via [session parameters](/kyc/generate-token) or [Dashboard settings](https://admin.idenfy.com):

| Feature              | Parameter               | What it does                                |
| -------------------- | ----------------------- | ------------------------------------------- |
| Data comparison      | `firstName`, `lastName` | Cross-checks your data against the document |
| Country restriction  | `country`               | Limit accepted document countries           |
| Document types       | `documents`             | Limit accepted document types               |
| AML screening        | `checkAml`              | Auto-screen against sanctions/PEPs          |
| Proxy detection      | `checkIpProxy`          | Flag VPN/proxy usage                        |
| Duplicate detection  | `checkDuplicateFaces`   | Detect same person verifying twice          |
| Face blacklist       | `checkFaceBlacklist`    | Block known fraudsters                      |
| NFC chip reading     | `nfcRequired`           | Read document NFC chip for high assurance   |
| Age limit            | `ageLimit`              | Minimum age requirement                     |
| Additional documents | `additionalSteps`       | Request utility bills, bank statements      |

***

## Pages in This Section

| Page                                        | When you need it                    |
| ------------------------------------------- | ----------------------------------- |
| [Create Session](/kyc/generate-token)       | Creating a verification session     |
| [Redirect & iFrame](/kyc/iframe-redirect)   | Showing the verification UI on web  |
| [Webhooks](/kyc/webhooks)                   | Receiving verification results      |
| [Data Retrieval](/kyc/data-retrieval)       | Fetching results after verification |
| [Additional Steps](/kyc/additional-steps)   | Requesting extra documents          |
| [Direct Processing](/kyc/direct-processing) | Sending images via API (no UI)      |
| [Dummy Results](/kyc/dummy-results)         | Testing with fake data              |
| [Deletion](/kyc/deletion)                   | GDPR data deletion                  |

## Next Steps

<CardGroup cols={2}>
  <Card title="Create Session" icon="key" href="/kyc/generate-token">
    Create a verification session via API.
  </Card>

  <Card title="Redirect & iFrame" icon="window-maximize" href="/kyc/iframe-redirect">
    Show the verification UI on your website.
  </Card>

  <Card title="Webhooks" icon="bell" href="/kyc/webhooks">
    Receive verification results in real-time.
  </Card>

  <Card title="Mobile SDKs" icon="mobile" href="/sdks/overview">
    Native iOS and Android integration.
  </Card>
</CardGroup>
