Linked accounts
Send the person to Hosted Verify and read the proof ID back:ownership-org-oauth for work accounts. Its expectedOrgDomain field limits the proof to one company domain.
Store the proof ID from the qHash field and reuse it. Don’t re-run the flow on every visit.
Verified handles
Bind a handle to a wallet withownership-pseudonym, then badge, link, and gate on the proof. It suits creator platforms, media networks, and launchpads that need handle ownership without legal identity.
Flow
- The user claims a handle in your app.
- Your app asks Proofable to bind the handle, a
namespace, and the wallet. - Proofable returns a proof ID in
qHashand a proof URL. - Your app stores the proof ID with the user record.
- Your app shows a verified badge that links to the proof page.
- Before any privileged action, your server checks the proof.
Sign in your app
Useclient.verify() when your app already handles wallet signatures:
pseudonymId must match ^[a-z0-9][a-z0-9._-]{1,30}[a-z0-9]$. Handle proofs expire, so re-verify before expiresAt.
Or verify on Proofable
qHash field in the callback URL or popup message, and store it.
Show the badge
https://proofable.me/proof/{qHash} and shows live status.
Check on your server
Namespaces
Namespaces other than the default require the namespace owner to confirm DNS control withownership-dns-txt, or approval from Proofable. Contact Proofable to reserve a production namespace.
A complete React and Vite app is in the verified-handle-react example.