1. Get keys and a policy ID
In the Authbound dashboard, copy:- a secret key that starts with
sk_test_ - a publishable key that starts with
pk_test_
See SDKs and frameworks for the complete preset list.
@authbound/server or POST /v1/policies and use its ID instead.
2. Install the server SDK
3. Create the verification
Your server calls Authbound with a secret key, then returns only the fields the browser needs.4. Return the browser contract
Every UI SDK guide returns this shape from your create route.
The SDK server routers normalize this contract for you. Only build this mapping yourself when you are writing a custom backend route instead of mounting the SDK router.
5. Render the wallet flow
Choose the framework guide that matches your app.Next.js
Start here for a full App Router example.
React
React UI with a small backend create route.
Vue
Vue plugin and
VerificationWall.Nuxt
Nuxt module, server route, and route middleware.
Express
Build the create route yourself.
Hono
Add a verification route to a Hono backend.
Browser status headers
The browser uses the returnedclientToken for this one verification. Authbound SDKs send:
expiresAt into subscribeToStatus. See status subscriptions for SSE fallback and polling deadlines.
Direct REST action kinds
If you use the REST API directly,client_action.kind tells you how to handle client_action.data.
Terminal verifications (
verified, failed, canceled, expired) do not include client_action. Wallet handoff fields are only present while the verification can still be handed to a wallet.
Production next steps
- Handle webhooks and signed results.
- Store a verified flag in your own user or session model.
- Protect application routes after the trusted server-side result is stored.