For developers
Authorization code flow with PKCE. Standard redirect, standard exchange, standard rotation. No SDK to install, no proprietary session format, no vendor object in your user table.
The flow
Send the visitor to /login with your client_id, redirect_uri and state.
On your domain, in your colors. Password, Google, LinkedIn, magic link, 2FA.
We call your redirect_uri with a code. You POST it to /api/auth/token.
Verify the access token on each request; refresh it before it expires.
Your callback handler
This is the only handler you have to write. It is a standard OAuth 2.0 code exchange — snake_case keys, form-encoded or JSON body, credentials in the body or as HTTP Basic. Any OAuth client library can do it for you instead.
Any state you embed in the redirect URI comes back untouched — we set query params properly rather than concatenating them. Compare it before you trust the code.
Endpoints
Full request and response shapes, error codes and rate limits are in the documentation.
Use the verify endpoint as a cheap per-request guard, and the OIDC UserInfo endpoint when you actually need names and avatars. Verify also tells you when the token is close to expiring.
User created, email verified, password changed, session revoked — delivered as signed POSTs so your database doesn't drift and you never have to poll.
Migrating in
Import your existing users, wire the new flow behind an environment flag, and test it against real accounts while your current provider keeps serving traffic. Flip the flag when you're satisfied — flip it back if you're not.
Create an account, register a redirect URI, and start redirecting.