Workspace
A workspace is one integration. It fixes:- The check, called Verification in the console: Identity (KYC), or Age verification with one of two methods: ID document (minimum age 16 to 25) or Facial age estimation (18+). In the API:
flow_typekycorage, and on age workspacesage_modedocument_verificationorestimationwithage_threshold. See the home page. - The mode: test or live, chosen at creation and never changed.
- The keys: a public key that identifies the workspace, and up to five secret keys that sign requests. See Workspaces and keys.
- Settings: the webhook URL, the default redirect URL, whether expired documents are accepted and whether one face may verify under several of your users.
Verification
A verification is one person going through the check once; the widget and the SDKs call it a session. Your backend creates it, gets itsid and a url, and the person completes it at that url. It moves through statuses until it reaches a final one:
The full state diagram is on Verification statuses.
Attempt
Inside one verification, each try at the capture is an attempt. When the person is asked to retake an image (resubmission_requested), a new attempt starts in the same verification, with the same url. When a facial age estimation needs a document, the document is added to the same attempt. The number of attempts is limited. When they run out the verification is declined, and its reason is the last attempt’s reason, not a separate code: treat declined as final whatever the code.
Results you read back name the attempt they come from, as attempt_id or meta.attempt_id. You rarely need it: the verification’s status and reason always describe the attempt that decided it.
Your identifiers
external_id also scopes duplicate detection: the same face under a different external_id is a possible duplicate account.
Test and live
Build against a test workspace, then go live by creating a live workspace and swapping its keys into your configuration.