Realr for developers
Add Sign in with Realr.
One button gives you a real, verified user. No sign-in to build and no ID checks to run. Realr is a full OpenID Connect provider.
yourapp.com wants to see
Sign in with Realr
On this page
What you can build.
Sign in with Realr
Standard OpenID Connect. Your user agrees, and you get a verified person and the checks they have passed.
Read what someone has verified
One GET returns a person's public checks as JSON.
Show a verified badge
One <script> tag renders a live “Verified via Realr” badge on any page.
What your app can't do
The limits, written for your security review.
Sign in with Realr
Add the sign-in button
Point any OpenID Connect library at our discovery URL. The user signs in to Realr, consents to exactly what you asked for, and you get an id_token and an 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. Read the returned verification claims before deciding which features the account can use. - One person, 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 what someone has verified
Public data: the same checks a stranger sees on realr.me/{handle}, as JSON. 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 and 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.
- 404 when the handle doesn’t exist or the profile is private. Cached ~60s.
Website badge
Show a verified badge on your site
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 users to get verified
For a user who isn’t on Realr yet, send them to sign up. They verify once and come back with a profile you can read with the API above.
https://www.realr.me/signup?ref=cuepop- Add
?ref=your-platform for attribution. Once they finish, poll the Trust Status API (or, soon, subscribe to a webhook) to reflect their new status.
Checks
What each check means, and who pays
The trust scope returns realr_verifications (the checks a user has passed) and realr_trust_level. Here is what each asserts, so you can require the level your use case needs.
- email / phone: a working email or number, confirmed as theirs. It stops spam. It does not prove identity.
- selfie (“Real person”): a real person was there for the check. Read it as one check, never as a guarantee.
- government_id: identity, over 18 and country from one reviewed document. The strongest check. The document itself is never shown.
- verified_photos: photos Realr has checked are really the account holder.
- gst / company_registration: a registered business.
- couple_verified: two verified people who confirmed each other.
- Requiring a level: read
realr_trust_level/realr_verificationsand 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: basic identity verification is free for the user. Read the returned claims to determine which checks they have completed. Contact us about integration requirements; signing in does not imply every check is complete.
Limits
What your app can’t do.
The same limits apply to every app that uses Realr.
You can’t match your users with 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 get more than the user agreed to
The consent screen splits what your flow 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.
You can’t read an ID, 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.
Every use is logged
Every consent, token and read is logged by scope name, and never by value: 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.
Get started
Tell us about your app.
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.