Transactions
getTransactionsForAddress
Full history of an address with sort order, filters and a pagination token.
Details
- Endpoint
- POST getTransactionsForAddress (JSON-RPC)
- Credits
- varies
- Pricing
- Depends on the input and the size of the result. The description says how.
- Rate class
- Heavy. Counts against your heavy requests per second.
Returns an address's transactions as digest rows (default, up to 1,000 per call) or full parsed transactions (up to 100). Sort oldest first or newest first, filter by checkpoint (alias slot), checkpoint time, status, type, source, coin type, direction and role, and continue with paginationToken ("checkpoint:txIndex"). Pass params as [address, config] or as one object. Result: { data, paginationToken, asOf }. Digest rows are { digest, checkpoint, txIndex, timestamp, status } plus type and source when a type or source filter is set. Type and source filters classify transactions while paging: one call reads at most 10 index pages. If it finds fewer than limit matches it returns what it found with a continuation (a digest in the x-tide-next header for the REST path, paginationToken for the others) and capped true in the RPC result. Time filters are exact at checkpoint granularity. History below the loaded index returns not_indexed with the lowest checkpoint. 10 credits per 100 full transactions, 10 per page of digest rows.
Parameters
| Name | Type | Description |
|---|---|---|
| addressrequired | string | 0x address or .sui name. |
| transactionDetails | string | signatures (digest rows, default) or full.One of "signatures", "full". |
| sortOrder | string | asc is oldest first, desc newest first (default).One of "asc", "desc". |
| limit | integer | Up to 1000 for digest rows (signatures), 100 for full. Default 100.From 1 to 1000. |
| paginationToken | string | Token "checkpoint:txIndex" from the previous page. |
| filters | object | Filters. |
| filters.checkpoint | object | Range on checkpoint (number, gte gt lte lt eq). Combine bounds freely. |
| filters.checkpoint.gte | integer | checkpoint at or after this |
| filters.checkpoint.gt | integer | checkpoint after this |
| filters.checkpoint.lte | integer | checkpoint at or before this |
| filters.checkpoint.lt | integer | checkpoint before this |
| filters.slot | object | Range on checkpoint (alias of checkpoint) (number). Combine bounds freely. |
| filters.slot.gte | integer | checkpoint (alias of checkpoint) at or after this |
| filters.slot.gt | integer | checkpoint (alias of checkpoint) after this |
| filters.slot.lte | integer | checkpoint (alias of checkpoint) at or before this |
| filters.slot.lt | integer | checkpoint (alias of checkpoint) before this |
| filters.blockTime | object | Range on checkpoint time (unix seconds). Combine bounds freely. |
| filters.blockTime.gte | integer | checkpoint time at or after this |
| filters.blockTime.gt | integer | checkpoint time after this |
| filters.blockTime.lte | integer | checkpoint time at or before this |
| filters.blockTime.lt | integer | checkpoint time before this |
| filters.blockTime.eq | integer | checkpoint time equal to this |
| filters.status | string | succeeded, failed or any (default).One of "succeeded", "failed", "any". |
| filters.type | string | One of TRANSFER, SWAP, ARBITRAGE, FLASH_LOAN, LIQUIDATION, DEPOSIT, WITHDRAW, BORROW, REPAY, STAKE, UNSTAKE, MINT, BURN, NFT_SALE, NFT_LISTING, NFT_TRANSFER, PUBLISH, UPGRADE, ORACLE_UPDATE, CONTRACT_CALL, SYSTEM, UNKNOWN. The type comes from tide's transaction classifier: a DEX trade is SWAP, a loop that ends in the coin it started with is ARBITRAGE, an NFT purchase is NFT_SALE.One of "TRANSFER", "SWAP", "ARBITRAGE", "FLASH_LOAN", "LIQUIDATION", "DEPOSIT", "WITHDRAW", "BORROW", "REPAY", "STAKE", "UNSTAKE", "MINT", "BURN", "NFT_SALE", "NFT_LISTING", "NFT_TRANSFER", "PUBLISH", "UPGRADE", "ORACLE_UPDATE", "CONTRACT_CALL", "SYSTEM", "UNKNOWN". |
| filters.source | string | Protocol slug, for example CETUS. |
| filters.coinType | string | Only transactions that changed this coin's balance for the address. Alias mint. |
| filters.direction | string | in or out, for the address, gas excluded.One of "in", "out". |
| filters.role | string | sender, sponsor, balance, owner, call or event. Comma separated for several. |
Request
Send your key in the x-api-key header, or leave it out to use the keyless tier.
curl -X POST "https://api.tide.ad/" \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getTransactionsForAddress",
"params": {
"address": "0xffd4f043057226453aeba59732d41c6093516f54823ebc3a16d17f8a77d2f0ad",
"transactionDetails": "signatures",
"limit": 5,
"filters": {
"status": "succeeded"
}
}
}'const res = await fetch("https://api.tide.ad/", {
method: "POST",
headers: {
"x-api-key": process.env.TIDE_API_KEY!,
"content-type": "application/json",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "getTransactionsForAddress",
"params": {
"address": "0xffd4f043057226453aeba59732d41c6093516f54823ebc3a16d17f8a77d2f0ad",
"transactionDetails": "signatures",
"limit": 5,
"filters": {
"status": "succeeded"
}
}
}),
});
const data = await res.json();Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"data": [
{
"digest": "9PXrQrDS6N17BqAuQ14f3YtmHD1nTfJzcjreSW1MGjaB",
"checkpoint": 341486202,
"txIndex": 11,
"timestamp": 1793777959,
"status": "success"
},
{
"digest": "9c74VTSo7K9Td54AVCeFg7iTYDNfZbR8RHPACKsbQ6ai",
"checkpoint": 341486200,
"txIndex": 18,
"timestamp": 1793777959,
"status": "success"
},
{
"digest": "7A7JroB6Lh7NmbKmCxTeZrAGhfG5W3cX1xtUK1CKNWqd",
"checkpoint": 341486198,
"txIndex": 17,
"timestamp": 1793777958,
"status": "success"
}
],
"paginationToken": "341486194:9",
"asOf": {
"checkpoint": 341486170,
"timestamp": "2026-11-04T07:39:20.246Z",
"lagMs": 2929
}
}
}Long lists are cut to a few items here.