Login with Xident
Login with Xident is an OAuth 2.0 / OpenID Connect provider that lets your users sign in with their Xident ID. Unlike traditional social logins, Xident provides verified age information without exposing any personally identifiable information (PII).
How it works in 30 seconds
- User clicks "Login with Xident" on your site
- They authenticate with their Xident ID (passkey, password, or face)
- They consent to share their verified age bracket with your site
- Your site receives an authorization code
- You exchange the code for tokens — including verified age claims
Why Login with Xident?
The age_verification scope — Xident's unique advantage
Most OAuth providers give you a name and email. Xident gives you something no one else can:
a cryptographically verified age bracket. When a user logs in with the age_verification scope,
you get a claim like "age_bracket": "18+" that was verified through ML-based liveness detection,
document verification, or both — not just self-reported.
{
"sub": "xid_abc123def456",
"age_verified": true,
"age_bracket": "18+",
"verification_level": "ml",
"verified_at": "2026-02-15T10:30:00Z"
} Key benefits
| Benefit | Description |
|---|---|
| Verified age, zero PII | You get a pass/fail age bracket — no name, birthdate, or document images |
| Verify once, access everywhere | Users verify their age once, then reuse it across every site that supports Xident |
| 80% cheaper for returning users | Token lookups cost a fraction of full ML or document verification |
| Higher conversion | Users skip repeated selfies and document uploads — they just click "Allow" |
| Network effects | More sites adopt Xident, more users create accounts, cheaper for everyone |
| Standards-based | OAuth 2.0 + OpenID Connect — works with any language, framework, or library |
How it compares
| Feature | GitHub | Apple | Xident | |
|---|---|---|---|---|
| Yes | Yes | Yes (relay) | Optional | |
| Profile info | Yes | Yes | Name only | Optional |
| Verified age | No | No | No | Yes |
| Liveness-checked | No | No | No | Yes |
| No PII required | No | No | Partial | Yes |
| PKCE mandatory | No | No | Yes | Yes |
| OpenID Connect | Yes | No | Yes | Yes |
The flow at a glance
Your Site Xident User
| | |
| 1. Redirect to /oauth/authorize |
|-----------------------------→ | |
| | 2. Show login + consent |
| | ----------------------------→|
| | 3. User approves |
| | ←----------------------------|
| 4. Redirect with ?code=xxx | |
|←------------------------------ | |
| | |
| 5. POST /oauth/token | |
| (code + code_verifier) | |
|-----------------------------→ | |
| 6. Access token + ID token | |
|←------------------------------ | |
| | |
| 7. GET /oauth/userinfo | |
|-----------------------------→ | |
| 8. Verified age claims | |
|←------------------------------ | |
Minimal example
<a href="https://api.xident.io/oauth/authorize?
client_id=YOUR_CLIENT_ID&
redirect_uri=https://yoursite.com/callback&
response_type=code&
scope=openid age_verification&
code_challenge=CHALLENGE&
code_challenge_method=S256">
Login with Xident
</a> Next steps
- Quick Start — Integrate Login with Xident in 5 minutes
- Authorization Flow — Detailed step-by-step flow with PKCE
- Scopes & Claims — All available scopes and what they return
- Token Management — Access tokens, refresh tokens, and revocation
- Security Best Practices — Keep your integration secure
- API Reference — Full endpoint documentation