Skip to content
TraceFast Docs

Internal transfers of an address

Open WETH on its entity page →

The ETH an address sent or received inside transactions, newest first. A contract moves ETH by making a call that carries value; each such call frame is one row, with its position in the call tree, its depth, the kind of call, the value it moved and its own outcome.

GET https://tracefast.xyz/api/v1/chains/1/entities/{address}/internal-transfers
ParameterInTypeNotes
addresspathstring0x-prefixed, 40 hex characters, any case
limitqueryinteger, optional1..100, default 25
cursorquerystring, optionalnextCursor of the previous page, unchanged
directionquerystring, optionalsent or received
fromBlockqueryinteger, optionalinclusive lower block bound
toBlockqueryinteger, optionalinclusive upper block bound

Access — an API key on the Investigation 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_entity_internal_transfers 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. An unknown parameter is refused rather than ignored.

What it covers, and what it does not

  • The transaction's own top-level call is never a row here. That call is the transaction itself, with its value, and it is in transactions of an address. This feed starts at depth 2.
  • Only frames that carry value. A call with zero value moves nothing and is not listed. For every frame of one transaction, value or not, use the execution trace.
  • Each frame has its own outcome. A frame can revert while the transaction succeeds, and a reverted frame moved nothing. Check status on the row, not only the transaction's receipt.
  • Filters on a very active address need a block window. Paging without filters always works. The direction filter searches the address's history, so on an address with a very large history it is answered only inside a fromBlock/toBlock window. The refusal names the widest window it accepts.

Response

200 application/json, here with ?limit=2:

{
  "data": {
    "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
    "transfers": [
      {
        "blockNumber": 25925232,
        "txIndex": 267,
        "timestamp": 1788781127,
        "txHash": "0x1bca0d23b265970dca726b50771f9f8fc797318bd874686b97b398b1bd8c2edc",
        "callPath": "0000000100010000",
        "callDepth": 4,
        "callType": "call",
        "from": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
        "to": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
        "valueWei": "55816973655364",
        "status": "success",
        "role": "sender",
        "counterparty": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
      },
      {
        "blockNumber": 25925232,
        "txIndex": 266,
        "timestamp": 1788781127,
        "txHash": "0x853149beeb924d2c56fcb9e879ec2ac08d3d681831da0c5740f87b383a6ec5b6",
        "callPath": "0000000100010000",
        "callDepth": 4,
        "callType": "call",
        "from": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
        "to": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
        "valueWei": "205294798941043",
        "status": "success",
        "role": "sender",
        "counterparty": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
      }
    ],
    "nextCursor": "AVsyNTkyNTIzMiwyNjYsIjAwMDAwMDAxMDAwMTAwMDAiXefv_7JX5tZ-p3sfzz3Lr-s"
  },
  "meta": {
    "chain": "ethereum",
    "timestamp": 1789047648468,
    "cached": false,
    "docs": "https://docs.tracefast.xyz/api/entity-internal-transfers"
  }
}

Here the WETH contract pays out ETH on a withdrawal, four calls deep inside each transaction.

data

FieldMeaning
addressthe address the feed is about, lowercase
transfers[]at most limit rows, newest first
nextCursorpass it back as cursor for the next page. Absent on the last page

A transfer

FieldMeaning
blockNumberthe block of the transaction
txIndexthe transaction's position in the block
timestampblock time, Unix seconds
txHashthe transaction the frame ran in
callPaththe frame's position in the call tree, as the trace encodes it. Use it to find the frame in the execution trace
callDepthdepth in the call tree. 1 is the top-level call, which never appears here
callTypethe kind of frame, for example call, delegatecall, create, create2, selfdestruct
fromthe account the value left
tothe account the value reached. Absent where the trace records none
valueWeivalue moved by this frame, in wei, a decimal string
statusthe frame's own outcome, for example success or reverted
rolesender, receiver or self — this address's part in the frame
counterpartythe other party of the frame, when there is one

Pagination

The feed pages by keyset. Pass nextCursor back as cursor, with the same filters, until nextCursor is absent. A cursor is valid only for this method, this address and these filters; any other use answers 400 invalid_cursor, and the recovery is to restart from the first page. A page can hold fewer than limit rows while nextCursor is still present. See pagination.

Errors

Every error is JSON: { "error": { "code": "...", "message": "...", "details": { … } } }

StatuscodeWhendetails
400bad_requestdirection on an address this active, without a narrow enough block windowreason: filter_needs_block_window, filters, rowCount, maxUnboundedRowCount, spanBlocks, maxSpanBlocks
400bad_requestdirection outside sent / receivedreason: direction_invalid, direction
400bad_requestfromBlock above toBlockreason: block_window_inverted, fromBlock, toBlock
400bad_requestlimit outside 1..100reason: limit_out_of_range, maxLimit: 100
400invalid_cursorthe cursor is not valid for this request — restart from the first page—

When a filter is refused, pass a fromBlock/toBlock window no wider than details.maxSpanBlocks, or drop the filter. The refusal has the same shape as on transfers of a token.

Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.


Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown