One HTTP call. Your agent sends a SHA-256 hash, pays $1.00 in USDC, and receives a permanent on-chain record plus a PDF Certificate of Existence. No API keys. No account. No human in the loop.
Immuta speaks x402 — the open protocol that lets software pay for HTTP resources with stablecoins. Any x402 client settles the whole flow in one call.
The paywall is the documentation. One curl shows you everything an agent needs.
# Ask for a seal without paying — the 402 response carries the terms curl -i https://api.immuta.app/seal \ -X POST -H "Content-Type: application/json" \ -d '{"sha256": "<64-hex-hash>", "label": "contract-v2"}' # → HTTP/2 402 · PAYMENT-REQUIRED header: $1.00 USDC · eip155:8453 (Base)
# pip install "x402[evm]" eth-account from eth_account import Account from x402.client import x402ClientSync from x402.http.clients import x402_requests from x402.mechanisms.evm.exact import register_exact_evm_client import hashlib, os client = x402ClientSync() register_exact_evm_client(client, Account.from_key(os.environ["WALLET_KEY"])) session = x402_requests(client) # auto-pays any 402 it meets h = hashlib.sha256(open("contract.pdf","rb").read()).hexdigest() r = session.post("https://api.immuta.app/seal", json={"sha256": h, "label": "contract-v2"}) print(r.json()["tx_hash"]) # PulseChain transaction print(r.json()["receipt_pdf_url"]) # PDF Certificate of Existence
Prices are quoted in the 402 response itself and settle in USDC on Base. Listed on the 402 Index and the x402 Bazaar.
Every seal is independently checkable. Immuta could disappear tomorrow and your proof would still stand.
otter.pulsechain.com/tx/<tx_hash>getRecord(sha256, submitter) on the Immuta contract — 0x0C2a0F6289D1Af62fc2C90301f8a0CadcD017e5c — from any RPC or the explorer's Read Contract tab. The returned timestamp is the proof.