Skip to main content

Before you start

  • You have a service account.
  • You have an API key for that service account.
  • Set your base URL:

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.
Success response:
Failure response:
Present the 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_status endpoint (see Check connection status below).
  • Listen for a USER_VERIFICATION_COMPLETED webhook. (Recommended)
If you provided a 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

Each object in the data_request array on /register determines what data you receive back about the user.

Check connection status

Poll for a user’s connection status and retrieve verification results.
Success response:
The simple_data_request_response is an array of result objects, one per data request type you specified during registration. Each object contains a type and a result with the corresponding verification data. If the user does not exist, the response returns a DOES_NOT_EXIST failure code.

Set up a webhook

Subscribe to USER_VERIFICATION_COMPLETED to get notified when a user finishes verification.
See Webhooks for event types, payload format, signature verification, admin endpoints, and more.

Handling maintenance downtime

During scheduled maintenance, all API endpoints will return a 503 Service Unavailable HTTP status with the following response:
Consider implementing a “fail open” approach to handle maintenance periods gracefully:
  • Fail open: Allow user registration to proceed without VerifyYou verification when the service is unavailable
  • Fail closed: Block user registration until VerifyYou is available again
  • Graceful fallback: Display a user-friendly message explaining the temporary delay
This approach ensures your application remains operational during VerifyYou maintenance windows.

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.