Event logs of a transaction
Open this transaction in TraceFast →
The event logs a transaction emitted, in emission order: the emitting contract, topics and data, and — when the event signature is known — the decoded event name and arguments, with a stated confidence. Decoding covers the common token, DeFi and protocol events; an unknown signature comes back raw. New to events? See events and logs on ethereum.org.
GET https://tracefast.xyz/api/v1/chains/1/transactions/{hash}/events
| Parameter | In | Type | Notes |
|---|---|---|---|
hash | path | string | 0x-prefixed, 64 hex characters, any case |
limit | query | integer, optional | 1..100, default 25 |
cursor | query | string, optional | nextCursor of the previous page, unchanged |
Access — an API key on the Enriched Data plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_transaction_events on the MCP server. Stable — see stability.
chains/1 is a literal: the method serves Ethereum mainnet data. Other chain
ids answer 404 chain_not_supported. There are no other parameters — an
unknown one is refused rather than ignored.
What it covers, and what it does not
- Every log is returned raw:
topicsanddataare always there, decoded or not. Decoding is an addition, never a replacement. - A decoding is a claim with a confidence, stated in
decodeStatus. Several events can share one signature hash;ambiguousmeans the best candidate was chosen out ofcandidateCount. The ERC-20 and ERC-721Transferevents are the classic case: same hash, different meaning of the third topic. - The emitter is only an address. Any contract can emit an event called
Transfer; the name says nothing about who emitted it. - Pages are bounded by size as well as count. A page holds at most
limitlogs and may hold fewer when theirdatais large; a log is never cut.
Response
200 application/json, here with ?limit=2. This transaction emitted two
logs, so there is no nextCursor:
{
"data": {
"hash": "0x6bb3103eec4ca8f4a324bbab71dc84f533af7e6be11ab8b13d0d10333bb9abc5",
"events": [
{
"address": "0x4cd00e387622c35bddb9b4c962c136462338bc31",
"blockNumber": 25920000,
"txIndex": 168,
"logIndex": 497,
"logIndexInTx": 0,
"txHash": "0x6bb3103eec4ca8f4a324bbab71dc84f533af7e6be11ab8b13d0d10333bb9abc5",
"timestamp": 1788718079,
"topics": [
"0x8032066556caf3967d8fec4ad22a2d9e1e9576556b2903a0fcd5b1fd201e3477"
],
"data": "0x00000000000000000000000007d65f37f0b4e10070eb683e51ebce416eb5aa3a0000000000000000000000000000000000000000000000000000b5e620f48000f15bf2357626ca31ec762cf7294fbcaaa9822fc8181ab782af7e0bee88cc442a",
"decoded": {
"name": "RelayNativeDeposit",
"args": [
{ "name": "from", "type": "address", "value": "0x07d65f37f0b4e10070eb683e51ebce416eb5aa3a", "indexed": false },
{ "name": "amount", "type": "uint256", "value": "200000000000000", "indexed": false },
{ "name": "id", "type": "bytes32", "value": "0xf15bf2357626ca31ec762cf7294fbcaaa9822fc8181ab782af7e0bee88cc442a", "indexed": false }
],
"candidateCount": 1
},
"decodeStatus": "verified"
},
{
"address": "0x69460570c93f9de5e2edbc3052bf10125f0ca22d",
"blockNumber": 25920000,
"txIndex": 168,
"logIndex": 498,
"logIndexInTx": 1,
"txHash": "0x6bb3103eec4ca8f4a324bbab71dc84f533af7e6be11ab8b13d0d10333bb9abc5",
"timestamp": 1788718079,
"topics": [
"0x012c155f3836c4edb9222305b909a109f9efa46288efffe40a0e66da3a9a9800",
"0x0000000000000000000000000000000053fc9230e9444c29b879a4521d59140a",
"0x0000000000000000000000000000000000000000000000000000000000000038",
"0x000000000000000000000000000000000000000000000000000000000000032b"
],
"data": "0x…",
"decoded": {
"name": "RangoBridgeInitiated",
"args": [
{ "name": "requestId", "type": "address", "value": "0x0000000053fc9230e9444c29b879a4521d59140a", "indexed": true },
{ "name": "bridgeToken", "type": "address", "value": "0x0000000000000000000000000000000000000000", "indexed": false },
{ "name": "bridgeAmount", "type": "uint256", "value": "200000000000000", "indexed": false },
{ "name": "receiver", "type": "address", "value": "0x07d65f37f0b4e10070eb683e51ebce416eb5aa3a", "indexed": false },
{ "name": "destinationChainId", "type": "uint256", "value": "4663", "indexed": false },
{ "name": "hasInterchainMessage", "type": "bool", "value": false, "indexed": false },
{ "name": "hasDestinationSwap", "type": "bool", "value": false, "indexed": false },
{ "name": "bridgeId", "type": "uint8", "value": "56", "indexed": true },
{ "name": "dAppTag", "type": "uint16", "value": "811", "indexed": true },
{ "name": "dAppName", "type": "string", "value": "BinanceWeb3Wallet", "indexed": false }
],
"candidateCount": 1
},
"decodeStatus": "verified"
}
]
},
"meta": {
"chain": "ethereum",
"timestamp": 1789047732417,
"cached": false,
"asOfBlock": 25920000,
"docs": "https://docs.tracefast.xyz/api/transaction-events"
}
}The second log's data (416 bytes) is shortened to 0x… here; the API returns
it whole.
data
| Field | Meaning |
|---|---|
hash | the transaction, lowercase |
events[] | this page, in emission order |
nextCursor | cursor for the next page. Absent on the last page |
An event log
| Field | Meaning |
|---|---|
address | the contract that emitted the log |
blockNumber, txIndex | the block and the transaction's index within it |
logIndex | the log's index within the block |
logIndexInTx | the log's index within the transaction — emission order, from 0 |
txHash | the transaction that emitted the log |
timestamp | Unix time of the block, seconds |
topics[] | the log's topics in order; topics[0] is the event signature hash (absent for an anonymous event) |
data | the log's non-indexed data, 0x-hex |
decodeStatus | how confident the decoding is — see below |
decoded | the decoded event, when there is one: name, args[], candidateCount |
decoded
| Field | Meaning |
|---|---|
name | event name, for example Transfer |
candidateCount | how many known signatures share this event's hash. 1 is unambiguous |
args[].name, args[].type | argument name and Solidity type |
args[].indexed | true when the argument came from a topic |
args[].value | addresses as 0x strings, integers as decimal strings, bytes as 0x hex, booleans as booleans. An indexed dynamic argument (string, bytes, array) is only its hash on chain and comes back as { "hash": "0x…", "dynamic": true } |
decodeStatus
| Value | Meaning |
|---|---|
verified | one known signature, decoded |
ambiguous | several signatures share the hash; decoded is the best candidate |
partial | decoded in part |
inferred | the decoding is inferred, not matched to a known signature |
abi_missing | the signature is unknown; the log is raw only |
failed | the signature is known but the data did not decode |
Pagination
Keyset pagination: pass nextCursor back as cursor, with the same hash,
until the response carries no nextCursor. A page may hold fewer than limit
logs while nextCursor is still present — keep going. A cursor is valid only
for this method and this transaction; anything else answers
400 invalid_cursor. See pagination.
Errors
| Status | code | When | details |
|---|---|---|---|
| 400 | bad_request | the hash is not 0x plus 64 hex characters | reason: tx_hash_invalid |
| 400 | bad_request | limit outside 1..100 | reason: limit_out_of_range, limit, maxLimit |
| 400 | invalid_cursor | the cursor was not issued for this request | — |
| 404 | not_found | no transaction with this hash is known | — |
| 422 | block_not_available | the hash is unknown while recent blocks are in a coverage gap; ask again later | reason: coverage_gap, coverageGapFromBlock, coverageGapToBlock, maxAvailableBlock |
Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.
Related pages
- One transaction — the transaction itself, with
logCount - Events emitted by a contract — the other direction: every log of one contract
- Execution trace of a transaction — the calls that emitted them
- Transactions — the transaction page in the app
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown