Decode an EVM transaction: method, events, transfers API
Decoded EVM transaction on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche: status, block time, sender, target, value and fee in native coin and USD (current price), method and arguments, decoded events, ERC-20/721 token transfers, net token flows per address and a one-line summary. ABIs from Sourcify verified contracts or the Sourcify 4byte database. Ethereum receipts cover about the last 2 days. Sources: PublicNode and official chain JSON-RPC, Uniswap v3 pools.
$0.005 per call USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.
Endpoint
GET https://api.kit-rx.com/v1/chain/tx-decode
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
chain | string | yes | Chain by name, alias or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). e.g. base |
hash | string | yes | Transaction hash (0x + 64 hex characters). e.g. 0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1 |
Example request
https://api.kit-rx.com/v1/chain/tx-decode?chain=base&hash=0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1
Without payment the server answers 402 Payment Required with the price (5000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.
curl -i "https://api.kit-rx.com/v1/chain/tx-decode?chain=base&hash=0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.kit-rx.com/mcp. Code:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.kit-rx.com/v1/chain/tx-decode?chain=base&hash=0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1");
console.log(await res.json());
Example response
{
"query": {
"chain": "base",
"hash": "0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1"
},
"result": {
"chain": "base",
"chain_id": 8453,
"hash": "0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1",
"status": "success",
"summary": "Swapped 0.1475 WETH for 258 USDC",
"block": 57562921,
"timestamp": "2026-11-15T00:35:59.000Z",
"from": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
"to": "0x678Aa4bF4E210cf2166753e054d5b7c31cc7fa86",
"to_name": "SmartRouter",
"contract_created": null,
"nonce": 242154,
"value": {
"amount": "0",
"symbol": "ETH",
"usd": 0
},
"fee": {
"amount": "0.000001466323151794",
"symbol": "ETH",
"usd": 0.002541,
"gas_used": 137681,
"gas_limit": 1000000,
"effective_gas_price_gwei": 0.010625,
"l1_data_fee": "0.000000003462389113"
},
"native_usd_price": 1732.73,
"method": {
"selector": "0x04e45aaf",
"name": "exactInputSingle",
"signature": "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))",
"decoded_with": "sourcify_verified_abi",
"args": [
{
"name": "params",
"type": "(address,address,uint24,address,uint256,uint256,uint160)",
"value": {
"tokenIn": "0x4200000000000000000000000000000000000006",
"tokenOut": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"fee": 100,
"recipient": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
"amountIn": "147489999000000000",
"amountOutMinimum": "0",
"sqrtPriceLimitX96": "3313737701918105378226176"
}
}
]
},
"token_transfers": [
{
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"symbol": "USDC",
"standard": "erc20",
"from": "0x72AB388E2E2F6FaceF59E3C3FA2C4E29011c2D38",
"to": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
"amount": "257.999859"
}
],
"token_transfers_total": 2,
"net_flows": [
{
"address": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
"role": "sender",
"name": null,
"changes": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"symbol": "USDC",
"amount": "257.999859"
},
{
"asset": "0x4200000000000000000000000000000000000006",
"symbol": "WETH",
"amount": "-0.147489999"
}
]
}
],
"events": [
{
"log_index": 11,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"name": "Transfer",
"signature": "Transfer(address,address,uint256)",
"decoded_with": "standard_abi",
"args": [
{
"name": "from",
"type": "address",
"value": "0x72AB388E2E2F6FaceF59E3C3FA2C4E29011c2D38"
},
{
"name": "to",
"type": "address",
"value": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1"
},
{
"name": "value",
"type": "uint256",
"value": "257999859"
}
]
}
],
"events_total": 3,
"events_truncated": false,
"contracts": [
{
"address": "0x678Aa4bF4E210cf2166753e054d5b7c31cc7fa86",
"name": "SmartRouter",
"proxy_type": null,
"implementation_name": null
}
]
},
"sources": [
{
"name": "Base JSON-RPC via PublicNode",
"url": "https://base-rpc.publicnode.com"
},
{
"name": "Sourcify verified contract repository",
"url": "https://sourcify.dev/"
}
],
"notes": [
"Amounts are decimal strings in token units (raw integers when decimals are unknown). USD values use the current price from the chain's deepest Uniswap v3 wrapped-native/USDC pool, not the price at transaction time."
],
"attribution": [
"Blockchain data read through PublicNode public RPC endpoints (https://www.publicnode.com, operated by Allnodes Inc.); figures are derived by Kit Rx (aggregated, decoded or converted), not a raw RPC feed. Not affiliated with or endorsed by PublicNode or Allnodes.",
"Contract metadata and function/event signatures from Sourcify (https://sourcify.dev), the open-source smart contract verification service. Kit Rx is not affiliated with or endorsed by Sourcify."
],
"generated_at": "2026-11-15T01:14:48.045Z"
}
Kit Rx: Pay-per-call data and safety tools for AI agents, paid in USDC over x402. No signup, no API key. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.