Realr · Developers
Add Sign in with Realr.
One button and you get a real, verified user — no auth to build, no KYC to run. Realr is a full OpenID Connect provider, so your users sign in once and carry their verification everywhere.
Sign in with Realr
Standard OIDC. Your user consents, you get a proven identity + their verification status.
Read trust status
One GET returns a person's public verification claims + trust level as JSON.
Embed a badge
Drop one <script> tag to render a live 'Verified via Realr' badge on any page.
What you can't do
The limits are the product. Worth reading before your security review asks.
Sign in with Realr
OpenID Connect, out of the box
We're a standard OIDC provider — point any OpenID Connect library at our discovery URL and you're done. The user signs in to Realr, consents to exactly what you asked for, and you get an id_token + access token.
https://www.realr.me/.well-known/openid-configurationGET https://www.realr.me/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://yourapp.com/auth/realr/callback
&response_type=code
&scope=openid profile email trust
&state=...&nonce=...- Default scopes:
openid profile email trust— a stable account id, name/handle/photo, email, and verification status. That’s a proven, verified user on day one. - One human, one account — dedupe on
sub. Thesubclaim is a stable, unique id for the Realr account — the same person returns the samesubon every sign-in. Store it with a unique constraint and, on sign-in, look the user up bysuband log into the existing account instead of creating a new one. (Like “Sign in with Google”, we guarantee a stable id; enforcing one-account-per-id is the app’s job.) This is what keeps “Verified via Realr” meaning one real person. - The user is always in control. The consent screen lists exactly what you’ll see; anything sensitive is opt-in and off by default.
- Endpoints:
/oauth/authorize·/api/oauth/token·/api/oauth/userinfo·/oauth/jwks(RS256).
Trust Status API
Read a profile's verified status
Public data — the same claims a stranger sees on realr.me/{handle}, in machine-readable form. No API key. CORS-open, so you can call it from a browser or your backend.
GET https://www.realr.me/api/v1/trust/vintagevault{
"handle": "vintagevault",
"displayName": "Vintage Vault",
"accountType": "business",
"profileUrl": "https://www.realr.me/vintagevault",
"verified": true,
"trust": { "level": "established", "label": "Established reputation" },
"verifications": [
{ "type": "email", "label": "Email verified", "since": "2024-09-10T00:00:00Z" },
{ "type": "government_id", "label": "Government ID verified", "since": "2024-09-12T00:00:00Z" }
],
"badges": ["identity_verified", "verified_human"],
"legalNameVerified": true,
"memberSince": "2024-09-10",
"version": "1"
}- Claims only. Verification badges + a sentence-form trust level — never a numeric score, never raw ID numbers, dates of birth, or the legal-name value.
- Privacy carries through. Anything a user keeps private on their profile is absent here too.
- 404when the handle doesn’t exist or the profile is private. Cached ~60s.
Embed
Drop a live trust badge on any page
One script tag renders a self-contained badge in a sandboxed iframe. No build step, no analytics, no callbacks.
<script
src="https://www.realr.me/widget.js"
data-handle="vintagevault"
data-variant="reputation"
data-theme="light"
async
></script>Variants: minimal (the verified pill), reputation (adds a trust line), dynamic (profile card with level). Themes: light / dark.
Verify via Realr
Send unverified users to get verified
For a user who isn't on Realr yet, link them into onboarding. They verify once and come back with a profile you can read via the API above.
https://www.realr.me/signup?ref=cuepopAdd ?ref=your-platform for attribution. Once they finish, poll the Trust Status API (or, soon, subscribe to a webhook) to reflect their new status.
Boundaries
What Realr won’t let you do
These are limits on YOUR integration, and that is the point — they are the same limits on everyone else’s, which is what makes a Realr badge worth something to the person carrying it.
You can’t match your users against another app’s
Every app gets its own opaque subject ID for the same person. Two services that both use Realr, comparing their full user tables, cannot find a single row in common. Realr is not a correlation key.
You can’t quietly widen what you receive
The consent screen splits what your flow genuinely needs from what is optional, and a person can decline the optional half and still connect. Scopes are checked against what Realr approved for your client — a tampered form cannot grant more than that.
You can’t read a document, a legal name, or a date of birth
Realr returns claims, never the underlying values. “Over 18” is a claim; a date of birth is not on offer at any tier.
You can’t use it without leaving a record
Every consent, token and read is logged by scope name — and never by value, because an audit trail holding the email it released would be a second copy of the data it exists to police.
Existing integrations predating pairwise subjects keep the subject they were issued; moving one is a coordinated change, never a silent re-key.
Verification claims
What each claim means — and who pays
The trust scope returns realr_verifications (the checks a user has passed) and realr_trust_level. Here's what each asserts, so you can require the level your use case needs.
- email / phone — a reachable contact (OTP). Anti-spam, not identity.
- selfie (“real person”) — a live human, liveness-checked. Kills bots and AI fakes.
- government_id — identity + age (18+) + location, reviewer-matched to the live face. The strongest anchor; the document itself is never exposed.
- verified_photos — photos matched to the live face. Anti-catfish.
- gst / company_registration — a registered business.
- couple_verified — a mutually verified pair.
Requiring a level: read realr_trust_level / realr_verifications and gate on your side — e.g. only let ID-verified users transact. (A built-in “require this verification” step-up is on the roadmap.)
Who pays: identity verification is a one-time paid step for the user, and it’s portable — they verify once and carry it to every platform, so you get a verified user without running (or paying for) KYC per check. If you’d rather remove that friction, you can sponsoryour users’ verification (you cover the fee) — talk to us to enable it.
Get started
Ready to integrate?
We onboard partners directly — tell us your app and redirect URLs and we’ll issue your client credentials. The trust-status API and the embed widget need nothing but a handle and work today.
Talk to us about integrating