clientId from your site’s origin (origin:https://yourapp.com), generates PKCE parameters automatically, and handles everything from the initial redirect through to the token exchange and session monitoring. You don’t register an app in the developer portal.
Quick Ave is designed for rapid prototyping and internal tooling. When you are ready to go to production — or need features like refresh tokens, app branding on the consent screen, E2EE, or the Connector flow — upgrade to the standard OIDC flow by replacing the Quick Ave calls with
startPkceLogin / exchangeCode from the full SDK. No server changes required.How it works
Recommended UX
If you want Quick Ave to feel native to your app instead of a redirect-first flow, open it with the embed package:Initiate sign-in
Your page calls
startQuickSignIn(). The SDK saves a PKCE verifier and a state nonce in sessionStorage, then redirects the user to aveid.net/signin with client_id=origin:https://yourapp.com.User authenticates
The user logs in (or confirms their existing Ave session). Ave issues a short-lived authorization code.
Exchange the code
Your callback page calls
handleQuickCallback(). The SDK verifies the state, exchanges the code for a 1-hour access token, stores the identity in localStorage, and redirects the user back to where they were.redirect_uri origin matches the clientId origin at both authorize time and token-exchange time, so a malicious site cannot impersonate your clientId. An HTTP Origin header mismatch during token exchange is also rejected. Tokens include a quick: true JWT claim so Standard-only API middleware can detect and reject them. Tokens are scoped to openid profile email and expire after one hour. Refresh tokens are not issued.
Install
Drop-in usage
Add a callback page at /ave/callback
Create a page at exactly that path (the default). Its only job is to finish the sign-in:In a SPA (React, Svelte, Vue …) add a route for
/ave/callback that calls handleQuickCallback() on mount:Reading the identity
getQuickIdentity() returns null when the user is not signed in or the local token has expired. It never makes a network request.
Calling your own API
UseidToken when your own API needs to know who signed in. It is the OIDC identity token and its audience is your Quick Ave client ID (origin:https://yourapp.com).
iss:https://aveid.netaud:origin:https://yourapp.comsub: the user’s Ave identity UUID- JWKS endpoint:
https://aveid.net/.well-known/jwks.json
user.token is the Ave API access JWT (access_token_jwt) with aud: "https://aveid.net". Do not accept it as a generic login token for your API. Use user.idToken, or create your own app session after verifying it.Using with Convex
TheidToken field on QuickIdentity is the OIDC id_token — pass it to ConvexProviderWithAuth for authenticated Convex queries. Your auth.config.ts applicationID should be "origin:https://yourapp.com".
Full Convex integration guide
Exact config, wiring, token details, and Convex function examples for both Quick Ave and registered apps.
Session monitoring
Start a background check so your app reacts immediately when a token is revoked or the session ends:Custom callback path
If you can’t use/ave/callback, pass the same redirectUri to both startQuickSignIn and handleQuickCallback:
Ready to go beyond Quick Ave?
Upgrading to the standard OIDC flow
Step-by-step guide to swapping Quick Ave for a registered app. Get refresh tokens, app branding, E2EE, and Connector access. The token format doesn’t change — only the function calls.
