← Back to all APIs

Wallet Verify SIWE

$0.001

Verify a Sign-In-With-Ethereum (EIP-4361) signature. Stateless paid oracle: checks the signature against the message and returns the wallet address + chainId. Never mints sessions or consumes nonces. Get a checksummed address first via wallet_checksum.

POST https://x402.freeq.one/tools/wallet_verify_siwe
Request body
JSON
{
  "items": [
    {
      "proof": {
        "merkleTreeDepth": 20,
        "merkleTreeRoot": "0x...",
        "nullifier": "0x...",
        "message": "0x...",
        "scope": "0x...",
        "points": ["0x...", "0x...", "0x...", "0x...", "0x...", "0x...", "0x...", "0x..."]
      }
    }
  ]
}
Try it (x402 payment flow)
curl -X POST https://x402.freeq.one/tools/wallet_verify_siwe \ -H "Content-Type: application/json" \ -d '{"items":[{"proof":{"merkleTreeDepth":20,"merkleTreeRoot":"0x1","nullifier":"0x1","message":"0x1","scope":"0x1","points":["0x1","0x1","0x1","0x1","0x1","0x1","0x1","0x1"]}}]}'

Without payment, the server returns 402 Payment Required with x402 challenge details. A paying agent signs a USDC transaction on Base and retries with the payment header.

Response example
JSON
{
  "results": [
    { "valid": true, "method": "semaphore-official-vkey" },
    { "valid": true, "method": "semaphore-official-vkey" },
    { "valid": true, "method": "semaphore-official-vkey" }
  ],
  "count": 3,
  "duration_ms": 67,
  "avg_ms": 22.33
}