Get Token Transfer Details#
Query indexed transfers by chain and token contract address, with optional sender, recipient, time, and token amount filters. Each request queries one token on one chain. This endpoint supports EVM-compatible chains only.
Supported chains: see Get Transaction API Supported Chains. Match both apiName=token-transfer-detail and the target chainIndex.
Request URL#
https://web3.okx.com/api/v6/explorer/transaction/token-transfer-detailRequest Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
| chainIndex | String | Yes | Unique chain identifier, such as 1 for Ethereum or 56 for BSC. The chainShortName request parameter is not accepted. |
| tokenContractAddress | String | Yes | Token contract address on the target chain. |
| from | String | No | Exact sender address filter. |
| to | String | No | Exact recipient address filter. |
| begin | String | No | Inclusive start time as a Unix timestamp in milliseconds. Must satisfy begin <= end when both are provided. |
| end | String | No | Inclusive end time as a Unix timestamp in milliseconds. |
| minAmount | String | No | Inclusive minimum token amount in native token units. Must satisfy minAmount <= maxAmount when both are provided. |
| maxAmount | String | No | Inclusive maximum token amount in native token units, not USD. |
| cursor | String | No | Cursor returned by the previous response. Omit it for the first request. Pass it back unchanged; do not parse or construct it. |
| limit | Integer | No | Entries per page. Default is 20; range is 1–50. |
Omitted filters do not restrict the query. All supplied filters apply together. This endpoint uses cursor + limit pagination and has no state or protocol type filter parameter.
Response Parameters#
Successful responses use a code, msg, and data envelope. data is an array containing the pagination result object for the chain and token. The table below describes that object and its transfer fields.
| Parameter | Type | Description |
|---|---|---|
| limit | String | Maximum entries per page. |
| cursor | String | Cursor for the next batch; an empty string means no more records. Pass it back unchanged. |
| transactionList | Array | Transfers in the current batch. Empty when no records match. |
| > txid | String | Transaction hash. The field name is lowercase txid. |
| > blockHash | String | Block hash. |
| > height | String | Block height. |
| > transactionTime | String | Transaction time as a Unix timestamp in milliseconds. |
| > from | String | Sender address. |
| > to | String | Recipient address. |
| > isFromContract | Boolean | Whether the sender is a contract; availability depends on the data source. |
| > isToContract | Boolean | Whether the recipient is a contract; availability depends on the data source. |
| > amount | String | Token amount as a string. |
| > amountUsd | String | Optional USD valuation; may be null or omitted when unavailable. |
| > transactionSymbol | String | Token symbol. |
| > methodId | String | Method identifier; an empty string when unavailable. |
| > tokenContractAddress | String | Token contract address. |
| > protocolType | String | Token protocol type supplied by the data source. |
| > state | String | Transfer state; available states depend on the target chain's data source. |
| > tokenId | String | NFT token ID; an empty string when not applicable. |
Request Example#
curl --location --request GET 'https://web3.okx.com/api/v6/explorer/transaction/token-transfer-detail?chainIndex=1&tokenContractAddress=0xdac17f958d2ee523a2206206994597c13d831ec7&begin=1694908800000&end=1694995200000&minAmount=10&maxAmount=1000&limit=20' \
--header "OK-ACCESS-KEY: $OK_ACCESS_KEY" \
--header "OK-ACCESS-SIGN: $OK_ACCESS_SIGN" \
--header "OK-ACCESS-PASSPHRASE: $OK_ACCESS_PASSPHRASE" \
--header "OK-ACCESS-TIMESTAMP: $OK_ACCESS_TIMESTAMP"
Set authentication environment variables following the Usage Guide. Generate the signature for this request's path, full query string, and timestamp.
Response Example#
This example illustrates the response structure and is not a live query result.
{
"code": "0",
"msg": "",
"data": [
{
"limit": "20",
"cursor": "",
"transactionList": [
{
"txid": "0x{TRANSACTION_HASH}",
"blockHash": "0x{BLOCK_HASH}",
"height": "18126486",
"transactionTime": "1694991899000",
"from": "0x{SENDER_ADDRESS}",
"to": "0x{RECIPIENT_ADDRESS}",
"isFromContract": false,
"isToContract": true,
"amount": "125.5",
"transactionSymbol": "USDT",
"methodId": "",
"tokenContractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"protocolType": "token_20",
"state": "success",
"tokenId": ""
}
]
}
]
}
