Explain a Base or Ethereum transaction in plain JSON and check that a payment arrived.
Give a transaction hash and get status, block time, confirmations, sender and recipient, ETH value, gas fee (including the Base L1 fee), the method name, and every ERC-20 and NFT transfer with token symbols and human amounts. Add expect_to, expect_token and expect_amount to confirm that a USDC or ETH payment reached the right address. Public RPC data only.
$0.0025 per call in USDC on Base via x402, or pay by card with prepaid credits (2 credits) · 1 free call per caller · no signup · Verified on PayAPI Market (one settled test payment by PayAPI Market: $0.001 on GET /api/tx-explain, 2026-10-25, tx; not an audit or uptime guarantee)
GET https://freetier-agent-api.pages.dev/api/tx-explain
Use tx-explain to understand one transaction or to verify a payment (USDC, ETH, any ERC-20) before delivering goods. Use wallet-profile for an address, contract-abi for a contract interface and token-risk to judge a token.
| Name | Type | Description |
|---|---|---|
hash required | string | transaction hash 0x + 64 hex |
chain | string (base | ethereum) | default base |
expect_to | string | optional: recipient address the payment should reach |
expect_token | string | optional: ETH, USDC, USDT, EURC, DAI, WETH ... or a token address (default USDC) |
expect_amount | string | optional: minimum amount in human units, e.g. 0.001 |
{
"chain": "base",
"status": "success",
"confirmations": 120000,
"from": "0x...",
"to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"method": {
"selector": "0xe3ee160e",
"signatures": [
"transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)"
]
},
"feeEth": "0.0000012",
"transfers": [
{
"standard": "erc20",
"symbol": "USDC",
"amount": "0.001",
"from": "0x...",
"to": "0x165eb3dc3e98403ecb1141e90400f5e71806554b"
}
],
"paymentCheck": {
"matched": true
}
}
curl -s "https://freetier-agent-api.pages.dev/api/tx-explain?hash=0xad06b77208318128017ce69952685e3f242281202d7cc9d50847619a706d2d7f&chain=base"
Buy a credit pack on Gumroad (1,000 credits $3), then send your license key. The X-Credits-Remaining response header shows your balance; failed calls are not charged.
curl -s "https://freetier-agent-api.pages.dev/api/tx-explain?hash=0xad06b77208318128017ce69952685e3f242281202d7cc9d50847619a706d2d7f&chain=base" \ -H 'X-License-Key: YOUR-LICENSE-KEY'
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); // wallet with USDC on Base
const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const res = await fetchWithPayment("https://freetier-agent-api.pages.dev/api/tx-explain?hash=0xad06b77208318128017ce69952685e3f242281202d7cc9d50847619a706d2d7f&chain=base");
console.log(await res.json());
# pip install "x402[httpx,evm]" eth-account
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
async def main():
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))
async with x402HttpxClient(client) as http:
r = await http.get("https://freetier-agent-api.pages.dev/api/tx-explain?hash=0xad06b77208318128017ce69952685e3f242281202d7cc9d50847619a706d2d7f&chain=base")
print(r.json())
asyncio.run(main())
A bare request without parameters returns the HTTP 402 payment challenge (x402 v2 in the PAYMENT-REQUIRED header, v1 in the body). Invalid input gets a 400 before any payment.
Failed calls are never charged. Failed calls are never charged: the payment is verified first, the request runs, and the payment is settled only if it succeeded. Errors (4xx/5xx) are not settled, and invalid input is rejected before any payment or free call.
Independent monitoring of this endpoint: 402index service page (health, 30-day uptime, p50 latency).
tx_explain at https://freetier-agent-api.pages.dev/mcp (Streamable HTTP; in-band x402 payment via _meta["x402/payment"], or card credits via the X-License-Key header)Agent Extraction API by FreeTier Kits · Terms · llms.txt · /.well-known/x402 · MCP: https://freetier-agent-api.pages.dev/mcp · Contact: tec@mail.grokbot.com
This site and its texts were written with AI assistance and reviewed for accuracy; example outputs are real responses from the API.