List the largest transfers of a token in a recent window
/v1/chains/{chain}/tokens/{token}/transfersCall this for the large transfers table of a token page. data.items are the largest Transfer events inside window, largest first, then newest. A mint has the zero address as from and a burn as to. window gives the first and last block with their times, and is null on Monad until the index has read a block.
- Ethereum: the window is the last 7,200 blocks, about a day (
source: hypersync). For a busy token it is shorter, with coveragetoken_transfer_window_cut. When the data source's quota is spent the answer is 503upstream_unavailableandretry_after_ssays when to retry. - Monad and Arc: the window covers the last 7 days at most, and the list holds the largest transfers of each UTC day from Sona's own index (
source: sona_index). The first request for a token starts building its index, as for holders, andindex.stateshows the progress.
Sona keeps the answer for 1 minute, but one whose coverage holds token_source_unavailable for 15 seconds. The token is a 0x address of 40 hex digits in any case, which Sona lowercases. limit is a whole number, from 1 to 100 (default 25) as the data source decides, and an out-of-range value answers 400 invalid_query.
Path parameters
| Name | Type | Description |
|---|---|---|
chainRequired | string | The chain, as a CAIP-2 chain ID. Ethereum, |
tokenRequired | string | The token contract: |
Query parameters
| Name | Type | Description |
|---|---|---|
limit | integerDefault 25 | How many items to return, from 1 to 100. Default: 25. Sona passes the value on and the data source judges the range, so a number out of range answers 400 |
Response
The answer, wrapped in the {data, meta, links} envelope. meta.finality is none, because the record is not about one block.
| Field | Type | Description |
|---|---|---|
| chain | string | A chain ID in the CAIP-2 format |
| coverage | array of strings | The codes of the limits that apply to this answer, in a fixed order. It is empty when none applies. |
| index | object | null | The Monad index of the token, null on Ethereum. |
| items | array of objects | |
| kind | string | token_transfers |
| source | string | hypersyncsona_index |
| token | string | |
| window | object | null | The blocks and times the items come from, null on Monad before the index has read a block. |
Cost
1 credit. The time limit is 5 seconds.
Errors
| Status | Code |
|---|---|
| 400 | invalid_idinvalid_query |
| 404 | unsupported_chainnot_found |
| 429 | rate_limitedcredits_exhausted |
| 500 | internal |
| 503 | upstream_unavailable |
| 504 | deadline_exceeded |
400 invalid_id for a chain that is no CAIP-2 id or a token that is not 0x and 40 hex digits (native included), 400 invalid_query for a limit out of range or another query key, 404 unsupported_chain for a chain other than Ethereum, Monad and Arc, 404 not_found when the address is not an ERC-20 token (it answers decimals() and totalSupply() or it is none), 429 rate_limited or credits_exhausted, 503 upstream_unavailable with retry_after_s when a data source the route needs does not answer, and 504 deadline_exceeded when the budget runs out.