init(). It is not a router: put vycheck() on the action only humans should do, and send the token with that action.
- Redirect
- Drawer
- Inline
Zero UI to build. We host the whole flow and send them back to
redirect_url with ?vyt=<token>&vyc=<0|1>. vycheck navigates away, so it never resolves; on the way back, vyget() reads the result off the URL.1. where they leave
2. where they come back
Register your embedding origin
Send us every origin you embed from and we add it to the allowlist. Drawer and inline mode need this. Redirect mode does not, because it navigates instead of framing. The page that frames a check can position it, resize it, and draw over it, so that page is part of the security boundary. We decide which pages are allowed to be it. The permitted origins go in aframe-ancestors
policy on our side and the browser enforces it. Anything not on the list is refused. Nothing you pass from
the browser can widen it, which is what makes it worth having.
Registering is one step per origin, not one per session. Send us the following through
support:
- Every origin you frame from, across every environment. Production, staging, preview and QA hosts all count separately.
- An origin is scheme, host and port with no path and no trailing slash.
https://app.example.comis an origin.https://app.example.com/is not. - Any host on a port other than 443, because
https://app.example.comcovers 443 only. - Which origins are temporary, so we can take them off again.
window.location.origin in your browser console. That string is the value, character for character.
Take it from the running page rather than from what a host is called. A host named api can still be
the one serving the page that frames the check, and the browser reports the page it loaded, never the
server your own code talks to.
You can ask for a wildcard on your own domain, like https://*.example.com, instead of listing hosts. It
covers subdomains only, so add https://example.com separately if you frame from the bare domain.
Send us your origins ahead of the launch that needs them. Registration is a change on our side rather
than something that takes effect the moment you ask.
A registered origin is a different thing from your
redirect_url. Registering one does not register the
other.Camera and microphone
The check needs both, and in an iframe your page controls whether it gets them. The SDK setsallow="camera; microphone" on the iframe it creates. A
Permissions-Policy header
on your own page still wins over that, so if you send one, delegate both features to
https://app.verifyyou.com.
Get this wrong and the flow loads, looks right, then fails at the moment it tries to capture.
Options and modes: vycheck(). What a rejection looks like: Errors.