One API for age, login, bot-check and identity.
Deterministic. Zero-knowledge. EU-hosted.
The user taps once — your backend gets pass or fail.
The gaming site never sees a name, an email, or a hashID.
It shows a QR. The user scans it with the hID app, approves with FaceID, and the callback
fires pass or fail. That's the only bit the site ever learns.
This is the anonymous flow — the privacy gold standard.
When your backend already knows the user's hashID (e.g. they're logged in), skip the QR.
Just send a verification request. The user's phone pops a sheet.
One tap — FaceID / Touch-ID — your callback fires pass or fail.
No redirects, no iframes, no JS SDK. Just HTTP.
The same flow — but through the EU Digital Identity Wallet. Scan the QR with any OID4VP-compatible wallet (Paradym, Animo, Hovi, France Identité). We auto-detect the draft version and respond. v1.0, Draft 24, 20, 18 — all supported.
tools.playground.france-identite.gouv.fr/hashid/hidcap-verifier
and works with real EUDIW wallets (France Identité, Paradym, Hovi, Animo). This demo shows
the shape of the wallet URI and response — end-to-end testing requires a wallet app installed
with matching test credentials.
Same infrastructure, different credential query. The verifier that proves your age can also prove your EHIC — insurance institution, country, expiry — without exposing your full medical record. Issuer: A-SIT Plus ehic library (SD-JWT-VC).
Scannable QR for EHIC is available on request.
Email api@hidcap.eu — we'll send you the sandbox URL.
Two phones, one QR code. No internet needed between them. The doorman phone generates a verify request — the user's phone scans, approves with biometrics, and sends back a signed boolean: 18+ yes/no. Doorman sees a green badge. Festival queue keeps moving.
No servers. No BLE. No IDs handed over. No photos taken.
Just a green light — and the queue keeps moving.
Use hIDcap to verify a signer's identity before issuing a PAdES-LTV signature on their document. Same tap. Same callback. Plus a cryptographic signature attached to a PDF, legally equivalent to a handwritten one under eIDAS — if paired with a QES provider.
Parallel track: FNMT / Cl@ve integration
+ SGAD Service Provider registration.
Everything each demo does — in plain English. No need to open every tab to understand the offering.
pass or fail. The hashID never crosses the wire between app and site.
Zero-knowledge, perfect for gambling portals, age-gates, first-time visitors.
POST /v1/cap/verify with their hashID and a type. Their phone pops a sheet.
Same result, but optimized for re-auth / high-risk action confirmations.
request_type: 'login_identity' for the very first login.
The user approves once with FaceID, and you receive in one shot:
{ service_hid, first_name, family_name, date_of_birth }
your_user_id ↔ service_hid. From the second login onwards, use
plain request_type: 'login' — you get only the service_hid back, look it up
in your DB, you know it's "Andi user_id 4711", session opens.
service_hid is a per-service pseudonymous identifier, derived
client-side on the user's device via HMAC-SHA256(master_secret, "svc:" + your_slug).
Same user + same service = always the same sHID. Same user + different service = completely
different, unlinkable sHID.
deletion_requested webhook, then a
deletion_confirmed after you confirm.login_identity request, their name and date of birth are
encrypted on their device using AES-256-GCM, with a key derived via HKDF from
your api_key + a per-service service_salt.
identity field. Decrypt them
using the same HKDF derivation on your backend (your api_secret never leaves your
servers). We never see the plaintext — we just relay the bytes.
tools.playground.france-identite.gouv.fr/hashid/hidcap-verifier.
Auto-detects protocol drafts (v1.0, 24, 20, 18) so older wallets still work.
family_name, given_name).
Our servers are in the EU. We do not store PII from verified credentials — ephemeral session data only.
Whatever is not needed is discarded before the response returns.
Request a sandbox API key. We reply within 24h with exact pricing and access credentials.