curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=evm:8453&wallet=0x41f26df3bebc317cc07b43cfd6950e9e1d5bc4d4&limit=1&to=1791057737000' \
-H 'Authorization: YOUR_API_KEY'
curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=solana&wallet=4YFpz3g8AJ11fxxi8w4EUmGDa83scByRaMoM3hqNMPBr&limit=1&to=1791056268000' \
-H 'Authorization: YOUR_API_KEY'
{
"data": [
{
"id": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"at": 1791057737000,
"chain": "evm:8453",
"txHash": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"block": 52134195,
"sent": [
{
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 125.139974
}
],
"received": [
{
"tokenAddress": "0x0000000000000000000000000000000000000000",
"symbol": "ETH",
"name": "Native Token",
"decimals": 18,
"amount": 0.04658273783960646
}
],
"volumeNative": 0.04658273783960646,
"volumeUsd": 125.12006926873696,
"feesNative": null,
"route": [
{
"poolAddress": "0xaf15cd1f9c3874bbcfddfc2b544544612c9de8c8bae28ba21c129c6b286c1e19",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 73.292855
},
"received": {
"tokenAddress": "0x0000000000000000000000000000000000000000",
"amount": 0.027281798642902547
}
},
{
"poolAddress": "0x2f9175276740364e50932fc6932e329f014fce73ee03d2c5780cc491e3ac939d",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 51.847119
},
"received": {
"tokenAddress": "0x4200000000000000000000000000000000000006",
"amount": 0.019300939196703913
}
}
]
}
],
"meta": {
"asOf": 1791064127969,
"hasMore": true,
"nextCursor": "MTc5MTA1NzczN3w1MjEzNDE5NXw0MTB8MHgzODliN2QyNzg4MTNlOGEzNTQ0YWY5Mzg4ZGZjZmFhMWZlY2EwNGQwZGQyNjYzNGNiZWI0NmVjNzIzMzgxZjE0",
"oldestAt": 1791057737000
}
}
{
"data": [
{
"id": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"at": 1791056268000,
"chain": "solana",
"txHash": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"block": 453029751,
"sent": [
{
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"symbol": "USELESS",
"name": "USELESS COIN",
"decimals": 6,
"amount": 14.550249
}
],
"received": [
{
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 3.422499
}
],
"volumeNative": 0.02859042,
"volumeUsd": 3.422363300972725,
"feesNative": 0.000382217,
"route": [
{
"poolAddress": "Q2sPHPdUWFMg7M7wwrQKLrn619cAucfRsmhVJffodSp",
"poolType": "RAYDIUM_CPMM",
"sent": {
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"amount": 14.550249
},
"received": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
},
{
"poolAddress": "2Y7HATmn9aJBcxCskE5V2U2epmjvkZmB51zTJBbhj4cU",
"poolType": "BISONFI",
"sent": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"received": {
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": 3.422499
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"meta": {
"asOf": 1791064128322,
"hasMore": true,
"usdBasis": "trade",
"nextCursor": "MTc5MTA1NjI2OHwzSnUzUk5rZTg5RzFUQUhzMllueGpxcXZQWGRnZFdYMW1ydVZzb1lnZTd2Y2F2UFM4NGljSjFoZFNwUnN2ZENickQ5VndwbzlYNHkzRlJVek5LaHBkamV1",
"oldestAt": 1791056268000
}
}
Wallet Swaps
Swap history of a wallet, newest first - one row per transaction. sent is what the swap took from the wallet and received what it delivered, netted across every leg of the transaction, so a routed swap reads from end to end: a USELESS to USDC sale routed through SOL reads as USELESS sent, USDC received. The assets a route only passes through and the fees taken between its hops do not appear, and the native coin and its wrapped form count as one asset. Every asset carries its symbol, name and decimals. route lists every leg with its pool and venue type, ordered from the sent asset to the received asset. On Solana each swap and each leg carries router, the program that routed it (Jupiter, OKX DEX, DFlow, Titan…), with its name when known and null for a direct swap, so a feed can render “Jupiter via BisonFi”. Built for wallet activity feeds; for a per-token trade tape use GET /v1/wallet/trades. Same opaque cursor pagination on EVM and Solana: it never skips or repeats a transaction. Batch twin: POST /v1/wallet/swaps, up to 20 wallets per call.
curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=evm:8453&wallet=0x41f26df3bebc317cc07b43cfd6950e9e1d5bc4d4&limit=1&to=1791057737000' \
-H 'Authorization: YOUR_API_KEY'
curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=solana&wallet=4YFpz3g8AJ11fxxi8w4EUmGDa83scByRaMoM3hqNMPBr&limit=1&to=1791056268000' \
-H 'Authorization: YOUR_API_KEY'
{
"data": [
{
"id": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"at": 1791057737000,
"chain": "evm:8453",
"txHash": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"block": 52134195,
"sent": [
{
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 125.139974
}
],
"received": [
{
"tokenAddress": "0x0000000000000000000000000000000000000000",
"symbol": "ETH",
"name": "Native Token",
"decimals": 18,
"amount": 0.04658273783960646
}
],
"volumeNative": 0.04658273783960646,
"volumeUsd": 125.12006926873696,
"feesNative": null,
"route": [
{
"poolAddress": "0xaf15cd1f9c3874bbcfddfc2b544544612c9de8c8bae28ba21c129c6b286c1e19",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 73.292855
},
"received": {
"tokenAddress": "0x0000000000000000000000000000000000000000",
"amount": 0.027281798642902547
}
},
{
"poolAddress": "0x2f9175276740364e50932fc6932e329f014fce73ee03d2c5780cc491e3ac939d",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 51.847119
},
"received": {
"tokenAddress": "0x4200000000000000000000000000000000000006",
"amount": 0.019300939196703913
}
}
]
}
],
"meta": {
"asOf": 1791064127969,
"hasMore": true,
"nextCursor": "MTc5MTA1NzczN3w1MjEzNDE5NXw0MTB8MHgzODliN2QyNzg4MTNlOGEzNTQ0YWY5Mzg4ZGZjZmFhMWZlY2EwNGQwZGQyNjYzNGNiZWI0NmVjNzIzMzgxZjE0",
"oldestAt": 1791057737000
}
}
{
"data": [
{
"id": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"at": 1791056268000,
"chain": "solana",
"txHash": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"block": 453029751,
"sent": [
{
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"symbol": "USELESS",
"name": "USELESS COIN",
"decimals": 6,
"amount": 14.550249
}
],
"received": [
{
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 3.422499
}
],
"volumeNative": 0.02859042,
"volumeUsd": 3.422363300972725,
"feesNative": 0.000382217,
"route": [
{
"poolAddress": "Q2sPHPdUWFMg7M7wwrQKLrn619cAucfRsmhVJffodSp",
"poolType": "RAYDIUM_CPMM",
"sent": {
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"amount": 14.550249
},
"received": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
},
{
"poolAddress": "2Y7HATmn9aJBcxCskE5V2U2epmjvkZmB51zTJBbhj4cU",
"poolType": "BISONFI",
"sent": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"received": {
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": 3.422499
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"meta": {
"asOf": 1791064128322,
"hasMore": true,
"usdBasis": "trade",
"nextCursor": "MTc5MTA1NjI2OHwzSnUzUk5rZTg5RzFUQUhzMllueGpxcXZQWGRnZFdYMW1ydVZzb1lnZTd2Y2F2UFM4NGljSjFoZFNwUnN2ZENickQ5VndwbzlYNHkzRlJVek5LaHBkamV1",
"oldestAt": 1791056268000
}
}
GET /v1/wallet/swaps · 1 credit
Swap history of a wallet, newest first - one row per transaction. sent is what the swap took from the wallet and received what it delivered, netted across every leg of the transaction, so a routed swap reads from end to end: a USELESS to USDC sale routed through SOL reads as USELESS sent, USDC received. The assets a route only passes through and the fees taken between its hops do not appear, and the native coin and its wrapped form count as one asset. Every asset carries its symbol, name and decimals. route lists every leg with its pool and venue type, ordered from the sent asset to the received asset. On Solana each swap and each leg carries router, the program that routed it (Jupiter, OKX DEX, DFlow, Titan…), with its name when known and null for a direct swap, so a feed can render “Jupiter via BisonFi”. Built for wallet activity feeds; for a per-token trade tape use GET /v1/wallet/trades. Same opaque cursor pagination on EVM and Solana: it never skips or repeats a transaction. Batch twin: POST /v1/wallet/swaps, up to 20 wallets per call.
sent and received are the net flows of the swap across every leg of the transaction, largest first. Each asset carries tokenAddress, symbol, name, decimals (null when the token is not known) and amount. A routed swap reads from end to end: the assets the route only passes through do not appear, nor do the fees taken between its hops. The native coin and its wrapped form are one asset (on EVM, Uniswap v4 pays native ETH where other venues pay WETH): it is served under the form the route used, and each leg of route keeps the exact asset it exchanged. A transaction that holds two independent swaps lists both on each side. route lists each leg with its poolAddress, its venue poolType, and what that leg sent and received. volumeNative and volumeUsd are the value of the swap; volumeUsd is at the current native price on EVM, and valued at the SOL price at the time of the swap on Solana, where meta.usdBasis reports trade. feesNative is the total fee paid for the transaction in the chain’s native unit (null when it is not available for that row). On Solana, router is the program that routed the swap: programId always, name when the program is a known router (Jupiter, OKX DEX, DFlow, Titan…), and router: null for a direct swap. The swap-level router is the one of its largest routed leg; each leg of route carries its own. The field is present on swaps from 2026-09-21 onward.limit and by a scan window over the wallet’s history: a page can hold fewer than limit rows while meta.hasMore is true. Keep passing meta.nextCursor until hasMore is false; cursors never skip or repeat a transaction, and hasMore: false means the wallet’s history is fully served.from and to bound the history in unix milliseconds, both inclusive, and combine with cursor. fromAt (the same lower bound) and beforeAt (strictly older) remain supported; pass one name per bound.POST /v1/wallet/swaps takes up to 20 wallets per call, EVM and Solana mixed, each with its own cursor, billed per wallet.curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=evm:8453&wallet=0x41f26df3bebc317cc07b43cfd6950e9e1d5bc4d4&limit=1&to=1791057737000' \
-H 'Authorization: YOUR_API_KEY'
curl 'https://api.serialized.xyz/v1/wallet/swaps?chain=solana&wallet=4YFpz3g8AJ11fxxi8w4EUmGDa83scByRaMoM3hqNMPBr&limit=1&to=1791056268000' \
-H 'Authorization: YOUR_API_KEY'
{
"data": [
{
"id": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"at": 1791057737000,
"chain": "evm:8453",
"txHash": "0x389b7d278813e8a3544af9388dfcfaa1feca04d0dd26634cbeb46ec723381f14",
"block": 52134195,
"sent": [
{
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 125.139974
}
],
"received": [
{
"tokenAddress": "0x0000000000000000000000000000000000000000",
"symbol": "ETH",
"name": "Native Token",
"decimals": 18,
"amount": 0.04658273783960646
}
],
"volumeNative": 0.04658273783960646,
"volumeUsd": 125.12006926873696,
"feesNative": null,
"route": [
{
"poolAddress": "0xaf15cd1f9c3874bbcfddfc2b544544612c9de8c8bae28ba21c129c6b286c1e19",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 73.292855
},
"received": {
"tokenAddress": "0x0000000000000000000000000000000000000000",
"amount": 0.027281798642902547
}
},
{
"poolAddress": "0x2f9175276740364e50932fc6932e329f014fce73ee03d2c5780cc491e3ac939d",
"poolType": "UNISWAP_V4",
"sent": {
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": 51.847119
},
"received": {
"tokenAddress": "0x4200000000000000000000000000000000000006",
"amount": 0.019300939196703913
}
}
]
}
],
"meta": {
"asOf": 1791064127969,
"hasMore": true,
"nextCursor": "MTc5MTA1NzczN3w1MjEzNDE5NXw0MTB8MHgzODliN2QyNzg4MTNlOGEzNTQ0YWY5Mzg4ZGZjZmFhMWZlY2EwNGQwZGQyNjYzNGNiZWI0NmVjNzIzMzgxZjE0",
"oldestAt": 1791057737000
}
}
{
"data": [
{
"id": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"at": 1791056268000,
"chain": "solana",
"txHash": "3Ju3RNke89G1TAHs2YnxjqqvPXdgdWX1mruVsoYge7vcavPS84icJ1hdSpRsvdCbrD9Vwpo9X4y3FRUzNKhpdjeu",
"block": 453029751,
"sent": [
{
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"symbol": "USELESS",
"name": "USELESS COIN",
"decimals": 6,
"amount": 14.550249
}
],
"received": [
{
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"amount": 3.422499
}
],
"volumeNative": 0.02859042,
"volumeUsd": 3.422363300972725,
"feesNative": 0.000382217,
"route": [
{
"poolAddress": "Q2sPHPdUWFMg7M7wwrQKLrn619cAucfRsmhVJffodSp",
"poolType": "RAYDIUM_CPMM",
"sent": {
"tokenAddress": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"amount": 14.550249
},
"received": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
},
{
"poolAddress": "2Y7HATmn9aJBcxCskE5V2U2epmjvkZmB51zTJBbhj4cU",
"poolType": "BISONFI",
"sent": {
"tokenAddress": "So11111111111111111111111111111111111111112",
"amount": 0.02859042
},
"received": {
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": 3.422499
},
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"router": {
"programId": "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH",
"name": "DFlow"
}
}
],
"meta": {
"asOf": 1791064128322,
"hasMore": true,
"usdBasis": "trade",
"nextCursor": "MTc5MTA1NjI2OHwzSnUzUk5rZTg5RzFUQUhzMllueGpxcXZQWGRnZFdYMW1ydVZzb1lnZTd2Y2F2UFM4NGljSjFoZFNwUnN2ZENickQ5VndwbzlYNHkzRlJVek5LaHBkamV1",
"oldestAt": 1791056268000
}
}
Authorizations
Your raw API key (not needed on the demo server).
Query Parameters
Public chain id - evm:<id> or solana.
Wallet address (EVM hex, case-insensitive; Solana base58).
Opaque resume token from meta.nextCursor - exact keyset pagination on both EVM and Solana, no skip or duplicate.
1-100. Default 50.
1 <= x <= 100Inclusive lower time bound, unix MILLISECONDS. A value in seconds is rejected (400).
x >= 0Inclusive upper time bound, unix MILLISECONDS. A value in seconds is rejected (400).
x >= 0Upper bound, unix MILLISECONDS: swaps strictly older. A value in seconds is rejected (400). Prefer cursor for exact pagination.
x >= 0Inclusive lower time bound (ms).
x >= 0Response
Standard { data, meta } envelope.