Integration
One surface, built once, that stays still.
Three pieces: a REST call to open a check, an SDK to collect what the player has to hand over, and a signed webhook carrying the verdict. Everything else is configuration.
- 3moving parts
- 1API version in production
- 90 daysminimum deprecation notice
The shape of it
What a working integration looks like
01
Open a check
Your backend posts the declared details and the market. You get a check id and, where documents are needed, short-lived tokens for the client.
02
Hand the tokens to the client
The SDK takes over the capture: camera, quality gate, liveness, encrypted upload. Your client never handles the images and never holds a long-lived credential.
03
Receive the verdict
The decision arrives signed, with reasons and an evidence bundle id. If your endpoint is down it retries, and after the last retry it waits in the journal for you to fetch.
04
Keep receiving
Monitoring events use the same endpoint and the same signature, so there is no second integration for the part that runs for years.
Opening a check
Request and response
Request
POST /v1/checks
Authorization: Bearer sk_live_…
Idempotency-Key: reg-91f4c7
{
"market": "GB",
"product": "casino",
"require": ["identity", "age", "exclusion", "sanctions"],
"person": {
"given_name": "Alex",
"family_name": "Harrington",
"date_of_birth": "1991-07-14",
"address": {
"line1": "12 Brock Street",
"postcode": "PR1 3XH",
"country": "GB"
}
},
"policy_version": "2026-09-01",
"reference": "signup-55218"
} Response
201 Created
{
"check_id": "chk_3Qv8ks2mPb",
"status": "collecting",
"market": "GB",
"required_steps": [
{ "step": "document", "sdk_token": "tok_9Hs…", "expires_in": 900 },
{ "step": "liveness", "sdk_token": "tok_9Hs…", "expires_in": 900 }
],
"policy_version": "2026-09-01",
"created_at": "2026-10-20T09:14:22Z"
} Idempotency-Key is honoured for 24 hours: a retried registration returns the original check rather than opening a second one against the same player.