Getting started

Quick start

Launch your first verification in five steps.

#1. Create an account and a key

Sign up at /dashboard/#signup. Open Developers → API keys and create a test key. It starts with sk_test_.

Warning
Keep sk_ keys on your server. Never ship them in a browser or mobile app.

#2. Create a workflow

Open Workflows, pick a template such as Standard KYC (ID + liveness + face match + AML) and press Publish. Copy the workflow ID (wf_…). You can also create one by API:

bash
curl -X POST https://{{HOST}}/v3/workflows/ \
  -H "x-api-key: sk_test_..." -H "Content-Type: application/json" \
  -d '{"workflow_label":"Standard KYC","features":[{"feature":"OCR"},{"feature":"LIVENESS"},{"feature":"FACE_MATCH"},{"feature":"AML"}]}'

#3. Create a session

Call this from your backend when the user needs to verify. vendor_data is your own user ID.

bash
curl -X POST https://{{HOST}}/v3/session/ \
  -H "x-api-key: sk_test_..." -H "Content-Type: application/json" \
  -d '{"workflow_id":"wf_...","vendor_data":"user-123","callback":"https://yourapp.com/kyc/done"}'
json
{ "session_id": "ver_...", "session_number": 1042, "session_token": "vs_...", "url": "https://{{HOST}}/verify/?token=vs_...", "status": "Not Started" }

#4. Send the user to the flow

Redirect to url, open it in a mobile WebView, or embed it on your page:

html
<script src="https://{{HOST}}/sdk/kyc.js"></script>
<script>
  KYC.open({ sessionToken: 'vs_...', onComplete: (e) => console.log('submitted', e) });
</script>

When the user finishes, the hosted flow sends them to callback?verificationSessionId=….

#5. Get the result

Set a webhook URL in Developers → Webhooks to receive status.updated events, then read the full decision:

bash
curl https://{{HOST}}/v3/session/ver_.../decision/ -H "x-api-key: sk_test_..."
Tip
In the sandbox, set the applicant's last name to APPROVE, REVIEW or DECLINE to force an outcome.

#Next