Uses the web workflow with the same simple buttons.
A browser-testable API surface for teams integrating Blind Verification into lending, compliance, grants, or internal approval systems.
Try the verification API from the browser.
This console calls the same Blind Policy endpoints used by the product page. Private inputs are accepted only by the proof endpoint; the public verification endpoint checks the proof package.
Run the proof engine inside your infrastructure.
The web application is the product surface. The local Private Engine receives private inputs, creates the witness, runs Circom-compatible WASM and snarkjs groth16.fullProve, then verifies the proof locally. The PrivateDAO control plane is only for signed organization licenses and receives metadata, never raw inputs.
Calls the local API or SDK inside the network.
Witness, Groth16, commitments, and receipts stay on-premise.
docker compose -f docker-compose.onprem.yml up --build # Local proof API POST http://private-engine:8787/v1/prove POST http://private-engine:8787/v1/verify GET http://private-engine:8787/v1/privacy GET http://private-engine:8787/v1/license/status
Provider status, circuit name, proof rules, and live endpoint map.
Safe sample payload and public proof package for integration testing.
Runs a private policy over submitted inputs and issues a proof only when the policy is satisfied.
Verifies Groth16, recomputes the public proof package hash, checks expiry, and returns match or mismatch.
Verifies the proof package, stores receipt hashes through the Solana receipt path, and returns Explorer links.
What `/prove` returns and what `/verify` checks.
`private_dao_blind_policy_overlay.circom` with public signals: policyId, policyCommitment, inputCommitment, satisfiedClaim.
Membership must be true; three records must be positive; capacity, liability, and risk gates must pass; Poseidon binds policy and input commitments.
The server writes temporary private witness input, runs the compiled WASM witness generator, then calls `snarkjs groth16 prove`.
`private_dao_blind_policy_overlay_final.zkey` stays server-side and is not returned in API responses.
The current Groth16 verification key is fixed for groth16-v1. verificationKeyHash: 05aeb7e27479d7f1551b0c2e18134c58f760de43f2ff085a8ea2e82f212209eb.
`proofId`, `nonce`, `issuedAt`, `expiresAt`, `circuitVersion`, `policyVersion`, `policyCommitment`, and `inputCommitment` are included in the hashed public package.
Changing policyVersion creates a new policy salt and a different policyCommitment. Old receipts do not silently upgrade.
Supported now: circuitId `private_dao_blind_policy_overlay`, circuitVersion `groth16-v1`.
After `/verify` passes, `/onchain-receipt` attempts an Anchor PDA receipt. If the Anchor program is unavailable, the same hashes are written into a Solana Memo receipt transaction. The response labels the storage mode.
Full Groth16 pairing verification on Solana, PLONK, STARK, and recursive proofs are not claimed by this endpoint.
const response = await fetch("/api/v1/proof-workflows/blind-policy/prove", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
workflowId: "customer-credit-case-001",
privateInputs: {
organizationId: "northstar-credit",
subjectId: "customer-redacted-4381",
membershipVerified: true,
records: [{ amountUsd: 8800 }, { amountUsd: 9400 }, { amountUsd: 9200 }],
riskScore: 84,
liabilitiesUsd: 2400
}
})
});const onchain = await fetch("/api/v1/proof-workflows/blind-policy/onchain-receipt", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ publicProofPackage })
});
// Returns:
// onchainReceipt.signature
// onchainReceipt.transactionExplorerUrl
// onchainReceipt.receiptAccountExplorerUrl