ProofMatch exposes a Widget SDK and a REST API so any app can add ZK balance verification in minutes. All endpoints run on Stellar testnet with Groth16 / Soroban.
Widget SDK
Drop two script tags on any page. The widget opens a modal, runs the full ZK proof pipeline, and fires your callbacks.
Stellar transaction hash of the on-chain verification
asset
string
"XLM" or "USDC"
threshold
string
Threshold in stroops (1 XLM = 10,000,000)
npm SDK
The @stellar-zk/proofmatch package wraps the REST API for Node.js and ESM browser environments. Handles balance parsing, error handling, and progress callbacks.
All endpoints are under /api/, accept JSON bodies, and return JSON. CORS headers are set on all /api/* routes — call from any origin.
ⓘ Rate limited to 5 requests per IP per minute on proof-generation endpoints. Health and stats endpoints are unrestricted.
POST /api/prove-from-account
Fetch a live balance from Stellar testnet, generate a Groth16 ZK proof server-side, and verify it on-chain via Soroban. The private balance is never stored or returned.
Submit a pre-generated Groth16 proof (e.g. from browser-side snarkjs) for on-chain Soroban verification. The server skips witness and proof generation — only verifies.
Request
Parameter
Type
Description
proof
object
required
snarkjs Groth16 proof object (pi_a, pi_b, pi_c)
publicSignals
string[]
required
Public signals array from snarkjs — ["1", threshold]
threshold
string
required
Threshold in stroops (must match publicSignals)
accountId
string
optional
Wallet address for record — stored masked, never full key
asset
string
optional
"XLM" (default) or "USDC"
POST /api/verify-link
Machine-readable verification of any share link. Lets third-party apps confirm a user's proof without embedding the ZK stack.
Full proof history for a wallet. Returns all verified proofs associated with this address — threshold, asset, timestamps, share links. Balances are never stored. Proofs are retained for 1 year.