> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/verify/kyc-mobile-sdk/sdk-user-journey.md).

# SDK User Journey

### Calling Document Verification and Liveness via KYC SDK

From the client’s perspective, **there is only one entry point**: the KYC SDK.\
Once the app starts the KYC flow, the SDK internally calls the Document Capture, Liveness, and Face Match components in the right order and returns a single result.

You don’t have to integrate separate “document SDK” and “liveness SDK” flows yourself.

### **1. Choose the flow in the KYC configuration**

When building the KYC configuration (`VidaKycRequest` on Android, `VIDAKYCConfig` on iOS), you choose which checks the SDK will run:

* **ID Verification (`ID_VERIFICATION` / `.idVerification`)**\
  Runs **document capture + OCR + document verification only**.
* **Full KYC (`KYC` / `.kyc`)**\
  Runs **document capture + OCR + document verification + selfie + liveness + face match**.\
  For these flows you also attach a `livenessConfig` / `VIDALivenessConfig`.

Once this flow type is set, **the same `startFlow()` call will automatically run all the required components**.

### **2. How the SDK orchestrates the components**

When your app calls `startFlow()` on the KYC SDK:

1. **KYC SDK → Document Capture**
   * Opens the SDK camera UI.
   * Guides the user to capture the document and runs auto-capture with quality checks\
     (blur, glare, cropping, etc.).
   * Sends the frames to the backend for OCR and document verification.
2. **Document Capture → Liveness (for KYC flows)**
   * After the document step is complete, the SDK transitions to selfie capture.
   * It collects the frames needed by the liveness engine and runs liveness checks.
3. **Liveness → Face Match**
   * The selfie is compared to the portrait extracted from the document.
   * The result of this face verification is combined with document and liveness results.

All of these hops (DOCUMENT CAPTURE → LIVENESS → FACE MATCH) happen **inside** the KYC SDK according to your chosen flow; the app just sees a single, continuous user journey.

{% hint style="info" %}
**Note:** If a client plans to use Liveness as a standalone feature, please refer to this [here](https://docs.vida.id/vida-identity-platform/~/revisions/vubvN9GBHHQDfXoGB0zR/integration-methods/sdk/liveness-sdk) for integration instructions.
{% endhint %}

### **3. Getting the combined result back in your app**

When all internal steps are finished, the KYC SDK returns **one response object** in the success callback:

* **Android:** `onSuccess(VidaKycResponse)`
  * `getVidaCardVerificationDetails()` → document & OCR results
  * `getVidaFaceMatchDetails()` → liveness/face-match details
* **iOS:** `onSuccess(response: VIDAKYCResponse)`
  * `ocrIdVerificationResponse` → document & OCR results
  * `livenessResponse` → liveness results
  * `faceVerificationResponse` → face-match results

Your app doesn’t need to call document verification or liveness separately.\
You **configure** what you want in the KYC request/config, call `startFlow()`, and the SDK orchestrates:

> **Host App → KYC SDK → Document Capture → Liveness → Face Match → KYC SDK → Host App**

with a single unified response at the end.
