> For the complete documentation index, see [llms.txt](https://docs.1kosmos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.1kosmos.com/identity-verification/core-concepts/verification-flow.md).

# Verification flow

<figure><img src="/files/Fs0foN2fzOODnNjN4Zhs" alt="Verification flows created by admins"><figcaption></figcaption></figure>

### Overview

A **verification flow** (also called a **journey**) is the reusable recipe that drives every session. You define one flow per use case, say, "high-risk onboarding for US banking"  and reference it from your sessions by its unique tag.

A flow answers four questions:

1. **What can the user submit?** Allowed countries, regions, and document types.
2. **What checks must pass?** Document authenticity, face match, liveness, database lookups, name comparison.
3. **How strict is each check?** Standard vs. Strict policy, liveness level, face-match score threshold, fuzzy-match tolerance.
4. **What happens to the data?** Retention policy, retry count, session expiry.

### Flow types

1Kosmos ships three pre-built flow types. Pick the one that matches your assurance and friction budget.

{% tabs %}
{% tab title="KYC with Selfie" %}
**Document + biometric.** The user scans an ID and takes a selfie. 1Kosmos runs document authenticity, passive liveness, and face comparison against the photo on the ID.

**Use when:** You need to bind a person to a document, onboarding, account recovery, age verification. This is the default for most consumer use cases.

{% endtab %}

{% tab title="Document Only" %}
**Document, no biometric.** The user scans an ID and 1Kosmos validates it, but no selfie or face match is performed.

**Use when:** You only need to confirm the document is genuine, for example, age gating, document re-enrollment, or B2B contexts where a biometric is overkill.
{% endtab %}

{% tab title="IAL2" %}
**Two documents + biometric + SSN.** A Kantara-certified flow that produces a NIST 800-63-3 IAL2 result in one session. Sessions expire after 30 minutes by default and data is *not* persisted to a wallet unless you explicitly enable it.

**Use when:** You're subject to federal identity proofing requirements, or you need the highest level of assurance for a one-time event.
{% endtab %}
{% endtabs %}

### Flow lifecycle

{% stepper %}
{% step %}
**Create**

An administrator with `idproofing.add-journey` opens **Verification → Verification Flows** in AdminX and walks through the three-step wizard. The flow is saved with a **unique tag** that your API callers use to start sessions.&#x20;
{% endstep %}

{% step %}
**Test**

Generate sessions directly from the flow card in AdminX to QA the experience before going live.&#x20;
{% endstep %}

{% step %}
**Promote**

Promote the same flow tag from your staging to production tenant, your application code doesn't change.&#x20;
{% endstep %}

{% step %}
**Tune**

Edit the flow at any time. Existing in-flight sessions continue with the configuration they started with; new sessions pick up the change immediately.&#x20;
{% endstep %}

{% step %}
**Retire**

Delete the flow when no session generation references it. You'll be prompted to confirm. Past sessions and their results are preserved.&#x20;
{% endstep %}
{% endstepper %}

### Anatomy of a flow

Every flow regardless of type exposes the same configuration surface:

| Group                                  | What you configure                                                                                                                                   |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Use case**                           | Context (remote vs. in-person), Document Verification Policy (Permissive → Very Strict), and Retry Count.                                            |
| **Identification**                     | Journey name (human-readable) and unique tag (machine-readable, immutable).                                                                          |
| **Allowed documents**                  | Allow-list or block-list of document types, scoped by country and region. National vs. state formats are selected separately.                        |
| **Expiration**                         | "From Session Creation" (how long the URL stays valid if untouched) and "From Session Start" (how long after the user opens it before it times out). |
| **Data comparison**                    | Which user-provided fields are compared against extracted document fields. Fuzzy matching, ignore-middle-names, and DOB comparison live here.        |
| **Biometric** *(KYC with Selfie only)* | Liveness Level (Soft / Regular / Hardened) and Face Matching score threshold (0–100%, default 50%).                                                  |
| **Data retention**                     | Discard immediately, discard after result is retrieved, or discard after N days/minutes. Applies per outcome (Success, Failed, Review, Abandoned).   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.1kosmos.com/identity-verification/core-concepts/verification-flow.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
