B20 payment memos
GET /api/b20-memosPayment memos attached to B20 transfers: pairs each Memo(address,bytes32) log with its Transfer at the previous log index (same tx, same token). Give a tx hash for one transaction, or scan a block window. Returns memoHex always and memoText when printable UTF-8. ?token=0xb200…&tx=0x…|&blocks=50000&address=0x…&limit=50
Input
| Field | Type | Description |
|---|---|---|
token * | string | B20 token address (must carry the 0xb200 prefix) |
tx | string | optional: decode memos in this transaction only |
address | string | optional: only transfers where from or to equals this address |
blocks | number | window-scan lookback (default 50000, max 200000; ignored when tx is given) |
limit | number | max memo rows (default 50, max 200) |
Example output
{
"token": "0xb200…0001",
"mode": "window",
"fromBlock": 1,
"toBlock": 2,
"scannedFromBlock": 1,
"truncated": false,
"count": 0,
"memos": []
}
Try it - see the 402 challenge (free)
curl -i "https://agent402.tools/api/b20-memos?token=0xb200000000000000000000000000000000000001&blocks=1000"
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/b20-memos?token=0xb200000000000000000000000000000000000001&blocks=1000");
Related tools
x402 market pulse
GET /api/x402-market-pulseLive cross-provider x402 market sentiment. topProviders: the top x402 sellers ecosystem-wide, ranked by REAL on-chain ac…
try in playground →x402 quote
GET /api/x402-quoteProbe any URL and decode its HTTP 402 payment requirements (price, asset, network, pay-to) into clean JSON - what an age…
try in playground →USDC balance
GET /api/usdc-balanceRead the USDC balance of any address on Base, Polygon, Arbitrum, Optimism, Ethereum, Monad, Celo, Avalanche, or Sei. Rea…
try in playground →