Wallet Auth reads what a wallet holds across 33 blockchains and returns a signed credential. Boolean result, ECDSA-signed, no balance exposed.
Read on-chain conditions without running blockchain infrastructure or exposing wallet balances.
Supports 30 EVM chains, Solana, and XRPL through a unified condition format.
Free tier: 100 daily reads, 10 verification credits. One key per email, no credit card. Agents: buy a key with USDC via POST /v1/keys/buy — no email needed.
Or via curl:
curl -X POST https://api.insumermodel.com/v1/keys/create \ -H "Content-Type: application/json" \ -d '{ "email": "you@example.com", "appName": "My App", "tier": "free" }'
{
"success": true,
"key": "insr_live_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
"name": "My App",
"tier": "free",
"dailyLimit": 100,
"apiKeyCredits": 10
}
Save the key value. It is shown once and cannot be retrieved later.
Check if a wallet holds at least 1 USDC on Base. POST /v1/attest
Costs 1 credit ($0.04).
curl -X POST https://api.insumermodel.com/v1/attest \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{ "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "conditions": [{ "type": "token_balance", "contractAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "chainId": 8453, "threshold": 1, "decimals": 6, "label": "USDC >= 1" }] }' # wallet: vitalik.eth # contractAddress: USDC on Base (chainId 8453, 6 decimals)
{
"ok": true,
"data": {
"attestation": {
"id": "ATST-E365DB7F2A9C0481",
"pass": true,
"results": [
{
"condition": 0,
"label": "USDC >= 1",
"type": "token_balance",
"chainId": 8453,
"met": true,
"evaluatedCondition": {
"type": "token_balance",
"chainId": 8453,
"contractAddress": "0x8335...2913",
"operator": "gte",
"threshold": 1,
"decimals": 6
},
"conditionHash": "0x448ddd3e...",
"blockNumber": "0x1772dde",
"blockTimestamp": "2026-03-06T12:00:00.000Z"
}
],
"passCount": 1,
"failCount": 0,
"attestedAt": "2026-03-06T12:00:01.000Z",
"expiresAt": "2026-03-06T12:30:01.000Z"
},
"sig": "rHObYHqV...",
"kid": "insumer-attest-v1"
},
"meta": {
"creditsRemaining": 9,
"creditsCharged": 1,
"version": "1.0",
"timestamp": "2026-03-06T12:00:01.000Z"
}
}
pass: true — wallet meets all conditions
pass: false — one or more conditions failed
sig — ECDSA P-256 signature over the canonical JSON representation of data.attestation, verify offline with insumer-verify
kid — identifies the signing key, fetch the public key from /.well-known/jwks.json
Attestations expire after 30 minutes (expiresAt) to prevent replay. The JWKS endpoint is cacheable (24h max-age) — keys rotate rarely.
Copy-paste this into a file, set your API key, and run it. Makes the attestation request and verifies the signature in one script.
// npm install insumer-verify axios import axios from "axios"; import { verifyAttestation } from "insumer-verify"; const res = await axios.post( "https://api.insumermodel.com/v1/attest", { wallet: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", conditions: [{ type: "token_balance", contractAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", chainId: 8453, threshold: 1, decimals: 6 }] }, { headers: { "X-API-Key": process.env.INSUMER_API_KEY } } ); const verified = await verifyAttestation(res.data, { jwksUrl: "https://insumermodel.com/.well-known/jwks.json" }); console.log("Valid:", verified.valid); // true
Minimal example for your README:
const res = await axios.post( "https://api.insumermodel.com/v1/attest", { wallet: "0x...", conditions: [{ type: "token_balance", contractAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", chainId: 8453, threshold: 1, decimals: 6 }] }, { headers: { "X-API-Key": process.env.INSUMER_API_KEY } } ); console.log(res.data.data.attestation.pass);
The insumer-verify npm package checks the ECDSA signature, condition hashes, expiry, and pass/fail consistency in one call.
// npm install insumer-verify import { verifyAttestation } from "insumer-verify"; // Pass the full API response envelope, not response.data const response = await res.json(); const result = await verifyAttestation(response, { jwksUrl: "https://insumermodel.com/.well-known/jwks.json" }); console.log(result.valid); // true