Filter bots without harvesting data.
Ask a member to verify. Receive a signed Trust Index — and, with their consent, the evidence behind it. Never learn who they are, never store anything a breach could un-mask.
Node 18+, zero dependencies, nothing publicly hosted. First attestation in two minutes.
If you get hacked, your users are still anonymous.
You receive a subject_id minted for your site alone. It carries nothing about the member and matches nothing on any other site. A stolen copy of your database contains verified accounts — and not one identity.
No PII to protect
No emails, phone numbers, IDs, or faces ever cross the API — so none can leak from you.
No PII to regulate
Pairwise IDs are not personal data you hold. Your compliance surface shrinks instead of growing.
No PII to sell
Which is exactly what your members will notice.
Three rules, no exceptions.
Pairwise identity
One subject_id per member per site. Two sites can’t correlate their users; nothing about the member is recoverable from it.
Ranges, not records
Sensitive quantities arrive as buckets — "1k–10k PIV", "active within 30 days", "25+" — never exact amounts, dates, or ranks that could single a member out.
Member-granted, member-revoked
Every data point beyond the Trust Index requires the member’s explicit consent, and any grant can be revoked at any time — your access ends that moment.
Two numbers most sites need. Seven packs if you want more.
Trust Index 0–100
How established and reputation-backed the member is. Rides every grant — no scope needed. Gate your site by tier.
Human confidence 0–100
Is there a person here? From what real people witnessed — on video, by voice, in person — not from a captcha. Ask for the humanity pack.
| Pack | What it carries |
|---|---|
profile | Profile type, the real-person hurdle, account age and activity as ranges, Founding Member, invited |
referrals | Referral counts as ranges, referrers’ average Trust Index and verification rate — never who |
reputation | What referrers said, averaged: real-person confidence, would-recommend, would-trust-with… (ten or more referrers) |
humanity | Witnessed, costly-to-fake, and the combined human confidence |
presence | Coverage score, verified platform count, cryptographic key linkage — not which accounts |
commitment | Trust Capital score, holdings and coin-age buckets, tips, username-market activity |
pay_link | A private payment page for your site — a fresh shielded address, never the member’s wallet |
Opt-ins — masternode owner, location, which platforms, confirmed fields of work — start unchecked. The member turns them on deliberately. The full catalog, with examples and every “never available” guarantee, is on the API page.
Ban the subject_id, not the account.
The ID is stable for a member on your site. A troll who revokes and re-verifies gets the same one back — the ban holds. Getting a fresh one takes a whole new Mask.ID identity, with a Trust Index of zero and no referrers. Your tier gate sets that price.
And a member’s standing elsewhere travels with them: attested_sites tells you how many other places currently vouch for this person.
Send them to consent. Verify the signature. Done.
Your request names the packs. The member approves. You receive a payload signed with the platform’s Ed25519 key — on your webhook, or by redirect with nothing hosted.
{
"v": 1,
"rp_user_id": "u_8347",
"nonce": "d41d8cd98f00b204e9800998",
"webhook": "https://your-site.example/maskid/callback",
"scopes": ["trust_index", "humanity"]
}{
"type": "maskid.attestation",
"subject_id": "msub_k5r2…",
"rp_user_id": "u_8347",
"trust_index": 87,
"human_witnessed": 90, "human_costly": 55, "human_confidence": 90,
"issued_at": "2026-08-29T14:02:09Z"
}Free today. Listed when you ship.
During the pilot the API is free and keyless. When keys ship, pricing meters monthly active verified members — free up to 100, then tiers that scale with volume, never with data. Founding sites get the Growth tier free for a year and a permanent listing on Works with Mask.ID, with the integration they built and the packs they ask for.