| title | Proofs |
|---|---|
| description | Create, reuse, and share verifiable proof instead of checking twice. |
| icon | shield-check |
A proof is the saved result of a completed check, permission, or action. Keep the receipt, then read its current status whenever a decision depends on it.
What was checked, who or what it describes, the outcome, who issued it, its current status and expiry, its visibility, and any scope needed to evaluate it.
Outcome and status are separate. A proof that passed earlier never overrides expiry or revocation.
A receipt is the same kind of record for a completed action, payment, or job run.
The API field for the proof ID is qHash. Store it with the user or record it belongs to.
contentHash identifies the checked content or file. It is not the proof ID.
| From | How |
|---|---|
| A browser | https://proofable.me/proof/{qHash} |
| The SDK | client.getProof(qHash), or client.getPrivateProof(qHash, wallet) for a private proof |
| The API | GET https://api.proofable.me/api/v1/proofs/{qHash} |
| MCP | proofable_proofs_get |
| Mode | privacyLevel |
publicDisplay |
Who can read it |
|---|---|---|---|
| Private | private |
false |
The owner, and anyone they grant access. The default. |
| Unlisted | public |
false |
Anyone with the proof ID. Not listed. |
| Listed | public |
true |
Anyone. Discoverable. |
Unlisted proofs are public to anyone who has the proof ID. To share a private proof without making it public, create a signed access grant with POST /api/v1/verification/access/grant.
client.verify() and VerifyGate create private proofs unless you choose otherwise.
Proofs are stored offchain by default. A blockchain record is optional: request it with options.publishToHub: true or targetChains. IPFS pinning is optional with enableIpfs: true. Neither changes who can read the proof, and neither replaces a status check.
Before a protected action, check the current proof instead of repeating the original check. Reuse verification
await client.revokeOwnProof(qHash, wallet);Or call POST /api/v1/proofs/revoke-self/{qHash}. A revoked proof stops satisfying any gate.
Wallet-signed requests return a portable envelope another system can check without calling Proofable:
import { verifyPortableProofEnvelope } from '@proofable/sdk';
const result = await verifyPortableProofEnvelope(envelope);
if (!result.valid) throw new Error(result.errors.join('; '));The envelope proves who signed the request. Current status still comes from Proofable. Portable Proof
Status, freshness, and revocation. Typed links and version chains.