Developers
Build with WAONA.
Give your users one secure account they already trust. Add “Sign in with WAONA” using open standards and a few lines of code.
// app/api/auth/waona/route.ts — send the user to WAONA
import { redirect } from "next/navigation";
export async function GET() {
const params = new URLSearchParams({
client_id: process.env.WAONA_CLIENT_ID,
redirect_uri: "https://yourapp.com/api/auth/callback",
response_type: "code",
scope: "openid profile email",
});
redirect(`https://id.waona.ke/authorize?${params}`);
}Built on open standardsOAuth 2.0 and OpenID Connect — the same standards behind every major sign-in. Any library that speaks them works.
Secure by defaultPKCE, short-lived tokens, HTTPS everywhere and scopes that share only what users approve.
Works with your stackNext.js, FastAPI, Django, Laravel, mobile apps — anything that can make an HTTPS request.
Quick start
Four steps to sign-in.
The standard authorization-code flow. If you’ve added Google or Microsoft sign-in before, this will feel familiar.
- 01Register your appRequest access and we’ll issue a client ID and secret for your app.
- 02Send users to WAONARedirect to the authorize endpoint. Users sign in or create their account once.
- 03Exchange the codeYour server swaps the one-time code for tokens over a secure back channel.
- 04Read the profileCall userinfo for the name and email the user agreed to share.
Reference
Endpoints & scopes.
Base URL https://id.waona.ke
GET
/authorizeStart sign-in and ask the user for consentPOST
/tokenExchange a code for access and ID tokensGET
/userinfoRead the signed-in user’s profileGET
/.well-known/openid-configurationDiscovery document for any OIDC libraryopenidA stable, unique ID for the userprofileName and profile pictureemailVerified email addressRequest API accessTell us where to send your client ID and secret. We reply within two working days.