Guides Getting started

SDKs & Libraries

Official AgeWallet SDKs. If there is one for your platform, use it — it handles the parts of the flow that are easy to get wrong, and you will be done in a fraction of the time.

Which one should I use?

If you areUse
Adding verification to a WordPress siteThe WordPress plugin
Adding a verification gate to an existing page, with no build stepJavaScript (drop-in)
Building a custom flow in a JavaScript or PHP applicationThe JavaScript SDK or PHP SDK
Building a native mobile appThe iOS or Android SDK
Building cross-platform mobileFlutter, React Native, or Ionic
On another stack entirelyAny OIDC library — start at Endpoints

The drop-in and example builds are the fastest path and cover the common case: send the user to verify, get a result back. The SDKs give you control over the flow, error handling, and where the result is stored.

What the SDKs do for you

Each SDK implements the full authorization code flow, so you do not have to:

  • Generate and store a PKCE verifier and challenge, per request
  • Generate, store and validate state and nonce
  • Exchange the authorization code for tokens
  • Validate the ID token signature, issuer, audience and expiry
  • Call /userinfo and read the result

The guides that follow describe each of those steps. If you are using an SDK, read them when you need to understand what it is doing or debug something — not as instructions to carry out by hand.

What you still need to do

An SDK does not remove these:

  • Register a client and keep the client_secret on your server
  • Register your exact callback URL
  • Decide what happens on each outcome — verified, not verified, cancelled, failed. See Handling Responses and Error Cases
  • Store your own decision. AgeWallet is not a session store, and the access token expires in 15 minutes

No SDK for your platform?

Any OIDC-compliant library works. Point it at our discovery document and it will configure itself — see Endpoints. The openid-client example shows what that looks like end to end in Node.

Last updated July 28, 2026

Was this page helpful?