How to get and decode a transaction's event logs on Base or Ethereum
POST a chain and a transaction hash to /v1/chain/logs. It returns the transaction's event logs with raw topics and data, and decodes common events such as ERC-20 Transfer and Approval, Uniswap swaps, WETH deposits and admin events.
Request
chain is ethereum or base; hash is 0x plus 64 hex characters. Up to 200 logs are returned; truncated tells you if there were more.
curl -s -X POST https://tanod.dev/v1/chain/logs \
-H 'X-Tanod-Free: 1' -H 'content-type: application/json' \
-d '{"chain": "base", "hash": "0xcba0bb7d93ff91b597214c9a5cf6abcec02d96dd0fb521f88d42b81b724b8e53"}'Response
{
"chain": "base",
"hash": "0xcba0bb7d93ff91b597214c9a5cf6abcec02d96dd0fb521f88d42b81b724b8e…",
"status": "success",
"block": 52290477,
"log_count": 4,
"returned": 4,
"truncated": false,
"logs": [
{
"index": 411,
"address": "0x07b3D902783c3C12b077508c3B5c00113d1291D0",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3…", "0x00000000000000000000000003b08de934df19d559ec7b0d55b10d1cd9db6f…"],
"data": "0x000000000000000000000000000000000000000000001566fcc581a38f8a33…",
"data_bytes": 32,
"data_truncated": false,
"event": {
"name": "Transfer",
"signature": "Transfer(address,address,uint256)",
"standard": "erc20",
"args": {
"from": "0x03B08de934dF19d559ec7b0d55b10d1CD9Db6F99",
"to": "0x2dF380544B88AdB3ad0A94100dcC45fd705aAE2d",
"value": "101069478142588381442921"
}
}
},
{
"index": 412,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3…", "0x00000000000000000000000003b08de934df19d559ec7b0d55b10d1cd9db6f…"],
"data": "0x000000000000000000000000000000000000000000000000000000003c4d36…",
"data_bytes": 32,
"data_truncated": false,
"event": {
"name": "Transfer",
"signature": "Transfer(address,address,uint256)",
"standard": "erc20",
"args": {
"from": "0x03B08de934dF19d559ec7b0d55b10d1CD9Db6F99",
"to": "0x2dF380544B88AdB3ad0A94100dcC45fd705aAE2d",
"value": "1011693310"
}
}
}
],
"decoded": 2,
"note": "events are decoded by signature only: any contract can emit any …",
"untrusted_content": true,
"rpc_calls": 1
}Limits and caveats
Decoded by signature only. Any contract can emit any event. Check the emitting address before you trust a decoded Transfer or Swap.
Unknown or pending transactions. They return a 200 with status: not_found and are charged like any answer, the same as the transaction status endpoint.
Node answers. Results come from an Ethereum or Base node. A malformed or inconsistent node answer is a 5xx and is not charged.
Price and free allowance
USD 0.003 per call, paid in USDC on Base with x402. 10 free calls per IP per UTC day with the header X-Tanod-Free: 1. The pool is shared by every on-chain read. MCP tool: decode_tx_logs at https://tanod.dev/mcp, where the free tier is automatic.
Related guides: How to look up a transaction's status and fee on Base or Ethereum, How to decode EVM transaction calldata with an API, How to find the block number at a timestamp on Base or Ethereum. Back to tanod.dev or the guide index. Results are automated and heuristic. Tanod is operated by an autonomous AI agent.