Chain data for AI agents, paid per call. No API key, no signup. Every endpoint answers HTTP 402 with an x402 payment request; any x402 client pays in USDC on Base and retries. Prices are $0.001-$0.01 per call. Bad input returns 400 and you are not charged. Chains: Base, Arbitrum One, Ethereum, Optimism.
Base URL: https://plainchain.appin60.com · OpenAPI · /.well-known/x402 · live payment stats (every settlement with its Basescan link)
| Endpoint | Price (USDC) | What it returns |
|---|---|---|
GET /v1/gas | $0.001042 | Current gas price on Base, Arbitrum, Ethereum or Optimism, with the USD cost right now of an ETH transfer, ERC-20 transfer, DEX swap and NFT mint. Use before sending a transaction to pick a chain or decide whether to wait. Example: /v1/gas?chain=base |
GET /v1/block | $0.001042 | Latest block on Base, Arbitrum, Ethereum or Optimism: number, hash, timestamp, age in seconds, base fee, gas used and transaction count. Use to check chain liveness or get a fresh block reference. Example: /v1/block?chain=base |
GET /v1/price | $0.001042 | USD spot price for up to 10 crypto symbols in one call (ETH, BTC, SOL, USDC, ARB, OP and any symbol listed on Coinbase). Use to value balances or convert amounts. Example: /v1/price?symbols=ETH%2CBTC |
GET /v1/balances | $0.001942 | Wallet balances with USD values on Base, Arbitrum, Ethereum or Optimism: native ETH plus USDC, USDT, WETH and the chain's major tokens, plus up to 10 extra token addresses you pass. Returns a USD total. Use before paying, bridging or reporting a portfolio. Example: /v1/balances?chain=base&address=0xB442daCAE60C07bb5dB8f33C8a6c1572d8F24e83 |
GET /v1/token | $0.001942 | ERC-20 token lookup on Base, Arbitrum, Ethereum or Optimism: name, symbol, decimals, total supply, plus DEX market data (USD price, liquidity across pairs, 24h volume, 24h price change, FDV, oldest pair age). Use before buying, accepting or pricing an unfamiliar token. Example: /v1/token?chain=base&address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed |
GET /v1/address | $0.001942 | What is this address? Classifies any address on Base, Arbitrum, Ethereum or Optimism as a plain wallet (EOA), EIP-7702 delegated wallet, Safe multisig (owners and threshold), upgradeable proxy (implementation and admin), ERC-20 token or other contract, with owner(), nonce and ETH balance. Use before sending funds to or trusting an address. Example: /v1/address?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
GET /v1/allowance | $0.001042 | ERC-20 approval check on Base, Arbitrum, Ethereum or Optimism: how much a spender may move from an owner's balance, flagged if unlimited. Use before trading, or when auditing a wallet's open approvals. Example: /v1/allowance?chain=base&owner=0xB442daCAE60C07bb5dB8f33C8a6c1572d8F24e83&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&spender=0x000000000022D473030F116dDEE9F6B43aC78BA3 |
GET /v1/tx | $0.002942 | Transaction status and plain-English details on Base, Arbitrum, Ethereum or Optimism: success or reverted, confirmations, fee in ETH and USD, and every ERC-20 transfer decoded with symbols and amounts. Use to confirm a transfer, swap or payment landed. Example: /v1/tx?chain=base&hash=0x6863ff402c188f6d652c300cf815cdfdf96553a89dfe8457e1099ffc9199582d |
GET /v1/x402/receipt | $0.002942 | Verify an x402 or USDC payment on-chain from its transaction hash: payer, recipient, amount and token, whether it was an EIP-3009 transferWithAuthorization (x402 exact scheme), the settling facilitator, confirmations, and optional match checks against an expected payTo and minimum amount. Use to prove a payment before delivering, or to audit receipts. Example: /v1/x402/receipt?chain=base&hash=0x6863ff402c188f6d652c300cf815cdfdf96553a89dfe8457e1099ffc9199582d&payTo=0x36c37d1b47737ba2b2a2cf1b5bc38509516b222f&amount=0.01 |
POST /v1/x402scan/register | $0.009942 | Register your x402 origin on x402scan in one paid call, without SIWX code or a GitHub issue. POST {"origin": "https://your-api.example"}; returns x402scan's own result (registered, failed, skipped, reasons). Charged only if at least one resource registers; failures return 4xx and are not charged. Example body: {"origin":"https://plainchain.appin60.com"} |
GET /v1/fortune | $0.001042 | A crypto fortune cookie: one short line of on-chain wisdom, picked by the latest Base block hash so anyone can verify the draw. For agent greetings, daily posts, games and demos of x402 payments. Example: /v1/fortune |
GET /v1/fact | $0.001042 | A random crypto history fact (Bitcoin genesis, Pizza Day, The Merge, EIP-1559, x402 and HTTP 402, USDC, Base...), picked by the latest Base block hash. For agent small talk, trivia, daily posts and testing an x402 client cheaply. Example: /v1/fact |
GET /v1/bazaar/search | $0.001942 | Find x402 APIs that agents actually pay for: keyword search over the whole Coinbase x402 Bazaar (31,000+ paid endpoints), ranked by distinct paying wallets in the last 30 days. Filter by max price and network. Returns URL, method, price, 30-day payers and calls, last paid call. Use to pick a proven seller before spending. Example: /v1/bazaar/search?q=gas+price+base&max_price=0.01 |
GET /v1/bazaar/host | $0.001042 | Is my x402 API in the Coinbase Bazaar? Give a hostname; get every Bazaar entry for it with price, 30-day distinct payers and calls, and last paid call, or a hint on why it is missing. For x402 sellers checking discovery without crawling 31,000 listings. Example: /v1/bazaar/host?host=api.onesource.io |
GET /v1/x402/echo | $0.001042 | Debug your x402 client on Base mainnet for $0.001: returns the payment payload your client actually signed and sent, decoded: version, header used, scheme, amount, validity window, and whether it echoed extensions.bazaar (needed for Bazaar cataloging) and resource/accepted. Example: /v1/x402/echo |
GET /v1/random | $0.001042 | Verifiable random coin flip, dice roll and integer from the latest Base block hash (optionally salted), with the formula to recompute it. Use for fair picks, giveaways, tie-breaks and games where anyone must be able to check the result. Example: /v1/random?sides=6&max=100 |
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)));
const pay = wrapFetchWithPayment(fetch, client);
const r = await pay("https://plainchain.appin60.com/v1/address?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
console.log(await r.json());
Agents with an AgentCash or other x402 wallet can call the URLs directly. Payments settle through the Coinbase CDP facilitator to 0xB442daCAE60C07bb5dB8f33C8a6c1572d8F24e83 on Base; every price ends in ...42 atomic units (1042, 1942, 2942 or 9942) so Plainchain receipts are identifiable on-chain.
/v1/random is public and verifiable, not secret. Do not use it where a block producer could profit by manipulating it.