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

# Overview

> KYC on the InkLink platform

KYC inquiries verify a subject's identity through a hosted flow with document capture and selfie checks.

<Info>
  For most integrations, the flow is simple: create an inquiry on your backend, send the user to `https://idv.inklink.com?inquiry_id=<id>`, then read **`status`** and **`inquiry_id`** on your **`return_url`**.
</Info>

<Warning>
  Create inquiries with your server-side **`api-key`** only. Do not expose the key in the browser or create inquiries from a public client.
</Warning>

## Integration flow

<Steps>
  <Step title="Create an inquiry">
    Call `POST https://platform.inklink.com/api/v1/kyc/inquiry` from your backend with your org **`api-key`**. Send a minimal payload with **`subject_id`** (your stable user key), **`return_url`**, and **`level`** (1-3). See [Quickstart](/kyc/quickstart) and the [API reference](/api-reference/endpoint/kyc-inquiry-create) for the full payload.
  </Step>

  <Step title="Hosted verification">
    Open the user's browser to:

    `https://idv.inklink.com?inquiry_id=<id>`

    Use the **`id`** from the create response as **`inquiry_id`**. The IDV app runs the document scan and selfie check.
  </Step>

  <Step title="Read the outcome on your return URL">
    When the hosted flow finishes, IDV redirects the user to your **`return_url`** with **`status`** and **`inquiry_id`** as query parameters.

    <Note>
      For most integrations, those query parameters are enough. Call the result endpoint only if you need extra metadata such as timestamps.
    </Note>
  </Step>
</Steps>

## Return URL and Result API

<CodeGroup>
  ```text Return URL theme={"dark"}
  https://your-app.com/kyc/complete?status=approved&inquiry_id=kyc_iq_xxx
  ```

  ```bash Result API theme={"dark"}
  curl "https://platform.inklink.com/api/v1/kyc/inquiry/kyc_iq_xxx/result" \
    --header "api-key: $INKLINK_API_KEY"
  ```
</CodeGroup>

## Verification levels

| Level | What it enables                                                    |
| ----- | ------------------------------------------------------------------ |
| **1** | Document scan + selfie                                             |
| **2** | Level 1 + address check                                            |
| **3** | Level 2 + PEP, AML, and adverse media screening (enabled together) |

<AccordionGroup>
  <Accordion title="Status meanings">
    | Status              | Meaning                                                      |
    | ------------------- | ------------------------------------------------------------ |
    | **`pending`**       | Verification was created or is still in progress             |
    | **`manual_review`** | Automatic checks finished and the inquiry needs human review |
    | **`approved`**      | Verification passed                                          |
    | **`rejected`**      | Verification did not pass                                    |
  </Accordion>

  <Accordion title="What the result endpoint adds">
    `GET https://platform.inklink.com/api/v1/kyc/inquiry/<inquiry_id>/result` returns fuller JSON with timestamps and other metadata. It does **not** include raw document images or evidence payloads; use the InkLink dashboard for detailed review.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={3}>
  <Card title="Quickstart" href="/kyc/quickstart">
    Create an inquiry, redirect to IDV, and handle the return URL.
  </Card>

  <Card title="API reference" href="/api-reference/endpoint/kyc-inquiry-create">
    Review the create inquiry request and response schema.
  </Card>

  <Card title="Error handling" href="/error-handling">
    Check common API and integration errors before going live.
  </Card>
</CardGroup>
