Skip to main content
The simplest integration needs no JavaScript: send the person to the verification’s url, and they come back to your site when they are done.

Send the person

Your backend creates the verification with a signed POST /v1/verifications and gets back its url, of the form https://idv.proofage.net/v/{token}. Redirect the person’s browser to it, or put it behind a link or a button.
Laravel
The hosted page does everything: consent, camera, capture, retakes, the move to a phone by QR code, and 28 languages.

Bring them back

About three seconds after the final screen, the page sends the browser to the verification’s redirect URL:
  1. the callback_url you passed when creating the verification, or
  2. the workspace’s Redirect URL, set in the console.
A new workspace’s Redirect URL is a ProofAge page, so set one of the two. The URL is used as is: nothing is added to it. Put what you need to recognise the person in it yourself, for example https://yourapp.example/verified?order=1234. When the person moved to their phone by QR code, the phone does not redirect: it tells them to return to the browser where they started, where the original page continues.

The return is not the result

The final screen, and the redirect after it, are the same whether the person was approved or declined. Do not treat the return as a pass. On the page they come back to:
  • read the outcome from your own records, updated by the webhook, or
  • fetch it with GET /v1/verifications/{id} from your backend.
If the decision is not in yet, for example because the verification went to review, show a “we’re checking” state and update when the webhook arrives. A verification link that nobody starts expires after seven days; one that was started and then left idle is abandoned after seven days. Create a new verification if the person comes back later. See Verification statuses.