Data model
This page defines the objects that appear across the API, the live stream and webhooks. Field names are the same on all three surfaces. Only the ts type differs, as noted below.
#Transfer
A transfer row is one large movement of a curated token or a native asset, stored when its value at index time is at least $100,000. This row was captured from GET /transfers on 2026-11-04 UTC.
{
"id": 1254,
"uid": "solana:CthHnYm1pCm1…espRaCx:native",
"ts": "2026-11-04T19:13:38.000Z",
"chain": "solana",
"block": 465415019,
"tx": "CthHnYm1pCm1…espRaCx",
"kind": "native",
"token": "SOL",
"token_address": null,
"amount": 7132.277101252,
"usd": 679206.748352228,
"from": "5pVN5XZB8cYBjNLFrsBCPWkCQBan5K5Mq2dWGzwPgGJV",
"to": "CTyFguG69kwYrzk24P3UuBvY1rR5atu9kf2S6XEwAU8X",
"sampled": true,
"from_label": null,
"from_type": null,
"to_label": null,
"to_type": null
}| Field | Type | Meaning |
|---|---|---|
id | integer | Row id in this database. Used as the pagination cursor. Follows insert order. |
uid | string | Stable unique id. Use it to remove duplicates. See the formats below. |
ts | string or integer | Block time in UTC. ISO 8601 on REST, integer milliseconds on the stream and webhooks. |
chain | string | One of ethereum, base, bnb, arbitrum, solana. OP Mainnet and Polygon have no rows. |
block | integer | Block number, or the slot on Solana |
tx | string | Transaction hash, or signature on Solana |
kind | string | token for an ERC-20 log or SPL balance change. native for ETH on Ethereum or SOL on Solana. |
token | string | Symbol from the curated list, or ETH or SOL |
token_address | string or null | Contract or mint address. null when kind is native. |
amount | number | Token units after decimals, as a double. It can lose precision at the last digits. |
usd | number | amount times the price held at index time. It is not updated later. See USD valuation. |
from | string | Sender. EVM addresses are lowercase. Solana addresses keep their case. |
to | string | Recipient, in the same format |
sampled | boolean | true on all Solana rows. See sampling. |
from_label, to_label | string or null | Name from the label set |
from_type, to_type | string or null | Label type, such as exchange |
#The uid formats
| Case | Format |
|---|---|
| EVM token log | <chain>:<tx hash>:<log index> |
| Ethereum native | ethereum:<tx hash>:native |
| Solana token | solana:<signature>:<mint> |
| Solana native | solana:<signature>:native |
#Details that change results
- On EVM log rows,
tsis an estimate when the log is older than the head block read in that poll: head time minus block distance times a fixed block time. The real block time can differ by seconds. Useblockfor order on one chain. - On Solana,
fromandtoare the accounts with the largest balance decrease and largest increase in that transaction for that asset. They are not always a direct sender and recipient. amounton Solana is the smaller of those two changes.token=ETHmatches two different things: native ETH on Ethereum and the bridgedETHtoken on BNB Chain. Filter onkindorchaintoo.
#Chain
Returned by List chains and Get a chain.
| Field | Type | Meaning |
|---|---|---|
id | string | Id used in all other paths |
name | string | Display name |
family | string | evm or svm |
chain_id | integer or null | EIP-155 chain id. null on Solana. |
native | string | Native asset symbol |
large_transfer_index | boolean | True when large transfers are stored |
native_transfers | boolean | True when native asset transfers are stored |
sampled | boolean | True when only sampled blocks are read |
poll_seconds | integer | Wait between polls |
tokens[] | array | Curated tokens: symbol, address, decimals |
status | object | Live poller state, below |
#Chain status
| Field | Type | Meaning |
|---|---|---|
status | string | ok, degraded, down or starting. See chain status. |
head | integer | Latest block or slot read |
head_time | string | Block time of head |
head_age_seconds | integer | Age of head at response time |
lag_seconds | number | Age of head at the moment it was read |
tx_count | integer | Transactions in that block |
gas_used_ratio | number or null | EVM only, from 0 to 1 |
base_fee_gwei, gas_price_gwei | number or null | EVM only |
priority_fee_microlamports, tps | number or null | Solana only |
rpc_latency_ms | integer | Time of the last head read |
last_ok | string | Time of the last complete poll |
consecutive_failures | integer | Failed polls since the last good one |
scan_lag_blocks | integer | Blocks between the head and the log cursor, on indexed EVM chains only |
last_error | string or null | upstream failed or poll failed |
indexed_since_start | integer | Rows stored since the last restart |
sampled_slot | integer | Solana only. The slot of the last sampled block. |
#Block
Returned by Recent blocks and sent as block events on the stream. The list holds at most 25 entries and is kept in memory, so a restart empties it.
| Field | Type | Family | Meaning |
|---|---|---|---|
number | integer | Both | Block number or slot |
ts | string or integer | Both | Block time |
txs | integer | Both | Transaction count |
gas_used, gas_limit | integer | EVM | Gas figures |
base_fee_gwei | number or null | EVM | Base fee |
hash | string | Solana | Block hash |
#Token
tokens[] on a chain holds symbol, address and decimals. The token object in a token report is richer.
| Field | Type | Meaning |
|---|---|---|
symbol, name | string or null | From the chain on EVM, from pool data on Solana |
decimals | integer or null | Token decimals |
total_supply | number or null | Total supply after decimals |
holder_count | integer or null | From GoPlus, when present |
owner, creator | string or null | EVM only, from GoPlus |
#Label
{
"name": "Binance 14",
"type": "exchange",
"address": "0x28C6c06298d514Db089934071355E5743bf21d60",
"chains": ["ethereum"]
}| Field | Type | Meaning |
|---|---|---|
name | string | Display name |
type | string | exchange, dex, bridge, lending, staking, token, issuer, launchpad or infrastructure |
address | string | Address in checksummed or base58 form |
chains | array | Chains where the entry was curated |
source_url | string | Explorer page of the address on the first listed chain |
Read labels for how lookups treat chains.
#Response envelope
Each successful /api/v1 response has data and meta. meta.request_id matches the x-request-id header, and meta.as_of is the time of the response. Some endpoints add more to meta, such as next_cursor or source.