Docs
Quick start
Create a verification session in one call. Your user finishes it in the widget. Your backend reads the result.
Step 1: Get access
Company verification comes before live access. Write to us to start, or see the welcome credit for your first 12,000 free verifications.
Step 2: Create an API token and set allowed domains
In the dashboard, create a permanent API token and set the allowed domains for your widget. Keep the token on your server. See authentication.
Step 3: Build a scenario
In the no-code scenario editor, choose the steps, documents and countries and note the scenario identifier. Start from a template if you like.
Step 4: Create a session
curl -X POST "<API_BASE_URL>/kyc/session/create" \
-H "Content-Type: application/json" \
-d '{
"token": "<your permanent API token>",
"schemaId": "<your scenario id>"
}'
Replace <API_BASE_URL> with the API address provided with your access. A successful call returns the session:
{
"sessionId": "00000000-0000-0000-0000-000000000000",
"status": "idle",
"schemaId": "<your scenario id>",
"secondsToLive": 3600,
"createdAt": "2026-01-01T10:00:00.000Z",
"errors": [],
"results": [
{ "type": "document", "status": "idle" },
{ "type": "selfie", "status": "idle" },
{ "type": "liveness", "status": "idle" },
{ "type": "faces", "status": "idle" }
]
}
Keep sessionId. Your user's uploads go against it, and /kyc/session/status reads the result back. The status is the session status; idle means the session is ready.
Step 5: Open the widget and read the result
Open the widget for the session. When the user finishes, read the status with /kyc/session/status, or receive the SESSION_COMPLETE webhook.
The six operations
All calls are POST under your API address.
| Operation | Endpoint |
|---|---|
| Create session | /kyc/session/create |
| Session status | /kyc/session/status |
| Sessions filter | /kyc/sessions/filter |
| Change status | /kyc/session/status/change |
| Erase personal data | /kyc/session/erase |
| Erasure log | /kyc/session/erase/log |
Questions, answered plainly
Why does my call return a success code with an error inside?
An error can arrive with a successful HTTP code and an error status in the body. Read the status field of the body. See session statuses.
Where do I get the API address?
It is provided with your access. Replace the placeholder in the samples below with it.