/v1/roots
Block state/transactions/receipts roots to verify proofs against
Try it live
10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.
It works. Grab an API key and use it in your project.
Get an API keyCode snippets
curl "https://api.oanor.com/stateproof-api/v1/roots" \ -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/stateproof-api/v1/roots", {
headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/stateproof-api/v1/roots");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
"https://api.oanor.com/stateproof-api/v1/roots",
headers={"x-oanor-key": "oanor_test_..."}
)
Example response
A real response from this endpoint, captured by the latest health check.
{
"data": {
"note": "The block header roots an account/storage proof verifies against. Use state_root with /v1/account and /v1/storage proofs at the same block.",
"chain": "ethereum",
"source": "public JSON-RPC (publicnode) eth_getBlockByNumber",
"timestamp": 1781424239,
"block_hash": "0xc8790539536808256dcdb2ba6c58d04cc52c87d517ef59063fd9a2981208447e",
"state_root": "0xd5f5ef019b8538afc4aca209c227fafc9e33981aa8b1c6a597c590cdbb10d8c8",
"block_number": 25314414,
"receipts_root": "0xdc56000aa56513d1816d4af7bdb23bfdb4fc57ca7f1d74628aead27bb13b88c1",
"transactions_root": "0x598bb71ff4981a753176a004e485141cb8ce22959b14910c491bc8e78349ecf5"
},
"meta": {
"timestamp": "2026-06-14T08:04:10.332Z",
"request_id": "7c167449-253e-43c4-9153-2c38e9c1b84d"
},
"status": "ok",
"message": "Block roots retrieved successfully",
"success": true
}