> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.withverifa.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.withverifa.com/_mcp/server.

# Introduction

> Get started with the Verifa identity verification API.

Verifa is a KYC identity verification platform that lets you verify your users'
identities through document capture, biometric matching, and watchlist screening.

## How it works

1. **Create a session** — Your server calls `POST /api/v1/sessions` to create a
   verification session.
2. **Redirect the user** — Send the user to the `capture_url` returned in the
   response. Verifa handles the camera capture UI, document scanning, and selfie
   collection.
3. **Get the result** — Once the user completes the flow, Verifa processes the
   documents and delivers results via webhook or API polling.

## Environments

Verifa uses a single API URL — `https://api.withverifa.com`. Your API key determines the environment:

* **Production** — `vk_live_*` keys
* **Sandbox** — `vk_sandbox_*` keys

Sandbox sessions return simulated results without processing real documents.
Use sandbox to build and test your integration before going live.

## Quick start

### 1. Create a session

```bash
curl -X POST https://api.withverifa.com/api/v1/sessions \
  -H "X-API-Key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "external_ref": "user_abc123",
    "country": "US"
  }'
```

Response:

```json
{
  "id": "session_abc123",
  "status": "pending",
  "capture_url": "https://api.withverifa.com/capture/session_abc123?token=...",
  "is_sandbox": false,
  "created_at": "2026-02-01T12:00:00Z",
  "expires_at": "2026-02-01T12:20:00Z"
}
```

### 2. Redirect the user

Send the user to `capture_url`. They will photograph their ID and take a selfie.
The session token expires after 20 minutes.

### 3. Retrieve the result

After receiving a `session.approved` or `session.declined` webhook (or after
polling the session status), fetch the full result:

```bash
curl https://api.withverifa.com/api/v1/sessions/session_abc123/result \
  -H "X-API-Key: vk_live_your_key_here"
```

Response:

```json
{
  "session_id": "session_abc123",
  "status": "approved",
  "is_sandbox": false,
  "face_match_passed": true,
  "face_match_score": 0.94,
  "age_check_passed": true,
  "extracted_age": 28,
  "extracted_data": {
    "first_name": "Jane",
    "last_name": "Doe",
    "date_of_birth": "1997-06-15",
    "document_type": "drivers_license",
    "document_issuing_state": "CA"
  },
  "processing_mode": "auto",
  "country_used": "US",
  "created_at": "2026-02-01T12:05:00Z"
}
```

## Next steps

* [Quickstart](/getting-started/quickstart) — Create your first session in 5 minutes
* [How Verifa Works](/getting-started/how-verifa-works) — Architecture and verification flow
* [Choosing an Integration Method](/getting-started/choosing-an-integration-method) — Pick the right
  approach for your use case

## Related

* [Authentication](/api-details/authentication) — API key setup and scopes
* [Webhooks](/api-details/webhooks) — Real-time event notifications
* [Errors](/api-details/errors) — Error handling reference