Chain Facts API

On-chain data on Base, served as JSON and paid per call with x402 - the caller pays in USDC on Base, no account, no API key. Every response is fetched live from Base RPC endpoints at request time.

Endpoints

GET /balance $0.01/call

Native ETH balance, or an ERC-20 token balance with decimals and raw amount.

GET /balance?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
GET /balance?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&token=0x4200000000000000000000000000000000000006

GET /token $0.01/call

ERC-721 / ERC-1155 token metadata: name, symbol, URI, on-chain owner where resolvable.

GET /token?address=0x<contract>&id=123

GET /tx $0.01/call

Transaction lookup with receipt: value in ETH, status, gas used, gas price in gwei, log count.

GET /tx?hash=0x<64-hex tx hash>

How payment works

Request any endpoint without payment and you get a 402 response containing an x402 payment challenge. Send it with a signed USDC authorization on Base (any x402 client does this automatically - e.g. the x402 fetch wrapper) and the call goes through. Payment settles to the operator's wallet on Base.

Discovery

Machine-readable descriptions at /.well-known/x402 and /openapi.json. Listed on the x402 bazaar so autonomous agents can find and pay for it.

Why this exists

Agents and scripts that reconcile on-chain payments (checking whether an invoice address was paid, reading an NFT an airdrop references, verifying a transaction hash) need exactly one fact per request. This API sells that one fact for a fraction of a cent, with zero signup.