Before you start
- You have a service account.
- You have an API key for that service account.
Step 1: Register a user and request a humanness check
Register a user, specify the data you want back, and get an invite URL to send them through verification.invite_url to the user. On desktop, it will be faster to render as a QR code, but otherwise it will open a tab to show the QR code. On mobile, link to it directly.
Step 2: Wait for the user to verify
The user completes the humanness check on their mobile device. You can either:- Poll the
/get_statusendpoint (see Check connection status below). - Listen for a
USER_VERIFICATION_COMPLETEDwebhook. (Recommended)
redirect_url during registration, the user will be sent back to your app/website automatically when verification finishes.
Step 3: Retrieve the results
Once the user has verified, call/get_status to get the simple_data_request_response containing the humanness score and other verification data. See Check connection status below.
Enforcing uniqueness with uniqueness_region_id
By default, unique human ID uniqueness is enforced at the service account level — each real person can only verify once across your entire account.
If you don’t have a persistent reference_user_id for the user (e.g. anonymous surveys), you can pass an ephemeral session or token ID as the reference_user_id and use uniqueness_region_id to scope uniqueness to a specific context instead. For example, passing a survey ID as the uniqueness_region_id ensures each person can only complete that particular survey once, without requiring you to track users across surveys.
Data request types
Thedata_request.type field on /register determines what data you receive back about the user.
| Type | Description |
|---|---|
GET_HUMANNESS_SCORE_AND_UNIQUE_HUMAN_ID | Returns a humanness score plus a unique human identifier |
IS_PHONE_NUMBER_VERIFIED | Returns whether the user’s phone number is verified - always true, placeholder request for testing |
Check connection status
Poll for a user’s connection status and retrieve verification results.simple_data_request_response is a plaintext JSON object containing the verification results for the data request type you specified during registration.
If the user does not exist, the response returns a DOES_NOT_EXIST failure code.
Set up a webhook
Subscribe toUSER_VERIFICATION_COMPLETED to get notified when a user finishes verification.
Next steps
- Read the full Webhooks guide to handle all event types and verify signatures.
- Explore the different data request types to request the verification signals you need.