Skip to main content
Never trust the client result alone. The token (vyt) is proof, not a verdict; it exchanges for 30 minutes, secret key only. Do it inside the handler that performs the gated action so the proof and the action never exist apart.
The token-free read needs a credential to match on. An anonymous verification binds none, so it answers 404 no_settled_pass every time. On those checks the vyt is your only route to the verdict. See Anonymous checks.
With the token is the stronger check: it proves this run just finished, names exactly one pass, and puts no email in your request logs. Without a token is a recovery path: it answers whether the email or phone has verified, and lets a returning person skip another redirect. What it cannot tell you is whether they just did a check. We report verified: true | false. Pass or fail is your decision, and routing lives in your code, next to the action.
  • Gate on verified. vyc in the URL is a UI hint.
  • Fail closed on 404, 410, or a timeout. Fresh session, try again.
  • Test keys read test runs only. Never point a live action at a test key.
  • Consume each token once. Prefer your own idempotency over lock unless you mean one pass per human, ever.
  • Strip vyt and vyc from the URL after handoff.
Response fields and reasons: GET /v3/confirmations/{token}.