Overview
- Market data for a token or pool (price, liquidity, volume, price changes)
- Wallet holdings (balances + USD values + allocation)
- Wallet activity (transfers + swaps + vault operations), ideally normalized into a UI-friendly feed
- GET
/api/2/market/detailsMarket Details - GET
/api/1/wallet/portfolioCrypto Holdings - GET
/api/2/wallet/activityWallet Activity
1) Get real-time price, liquidity, volume, and price changes
Endpoint
Market DetailsWhen to use
- Token price panels
- Pair pages (liquidity, volume, trades, latest trade)
- Multi-timeframe change and volume stats (1m, 5m, 1h, 24h, etc.)
- Multi-currency display (USD + EUR/GBP/JPY, etc.)
Required params
blockchain(example:evm:1,solana,ethereum)address(token address or direct pool address)
Optional
currencies=EUR,USD(adds converted fields likepriceEUR,volume24hEUR, etc.)
Single query example
Multiple currency example
What you typically read from the response
-
priceUSD(andprice{CURRENCY}if requested) -
liquidityUSD -
volume{timeframe}USD(ex:volume24hUSD) -
priceChange{timeframe}Percentage(ex:priceChange24hPercentage) -
latestTradeDate -
token metadata in
baseandquote(symbol, name, decimals, market cap fields, etc.) -
exchange(DEX name + logo) when relevant
Batch markets (for dashboards / watchlists)
This endpoint supports POST batch so you can request multiple markets in one call.- watchlists
- “top tokens” panels
- loading many token cards efficiently
2) Get wallet balances and holdings across chains
Endpoint
Crypto HoldingsWhen to use
- Portfolio page: token list, balances, USD values, allocation
- Multi-wallet aggregation (users with multiple addresses)
- Cross-chain wallets (EVM + Solana)
Input rules
-
wallet=addr...(single wallet) -
wallets=addr1,addr2,...(multiple wallet view, accept comma-separated addresses)
Performance tip
For fastest responses, specify only the chains you need:blockchains=ethereum,baseIf you truly need everything:fetchAllChains=true
Single wallet, specific chains
Cached responses (good for UI refresh loops)
Multiple wallets aggregated
What you typically read from the response
Top-level:-
total_wallet_balance(USD) -
assets[](your holdings table)
assets[]:
-
token_balance -
price(USD) -
estimated_balance(USD) -
allocation -
liquidity -
optional
price_change_24hif you useshouldFetchPriceChange=24h
0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
3) Get a clean, UI-ready transaction history feed
Endpoint
Wallet ActivityWhen to use
- “Recent activity” feed
- Basic transaction history for a wallet
- Swap detection (so you can show swaps cleanly)
Why it’s handy
This endpoint combines transfers into swaps when they happen in the same transaction. That means your UI gets a single “swap” action instead of scattered token in/out transfers.Minimal example
Multi-chain + spam filtering
Pagination options
- Offset pagination:
offset+limit - Cursor pagination:
cursorHash+cursorDirection=before|afterUseful for infinite scroll feeds.
Reading swaps correctly (important)
Naming is wallet-centric:swapAssetIn= asset received by the walletswapAssetOut= asset spent by the wallet
- BUY if
swapAssetInmatchesswapBaseAddress - SELL if
swapAssetOutmatchesswapBaseAddress
Putting it together (recommended flow)
If you’re building a typical app UI:- Portfolio page
- Call
/wallet/portfolioto get holdings, USD values, allocations
- Market panels for tokens
- For tokens the user holds (or for watchlists), call
/market/details(batch via POST if you have many)
- Activity feed
- Call
/wallet/activityfor a clean list of swaps + transfers - Use cursor pagination for infinite scroll
Production tips
-
Specify chains whenever possible (
blockchains=ethereum,base) to cut latency. - Use cache + stale for portfolio screens that refresh frequently.
-
Keep spam filtering enabled by default (
filterSpam=true) and add a UI toggle if power users want raw data. -
If you need richer swap metadata, enable
enrichSwaps=true(adds some overhead, but can be useful for showing platform + fee breakdown).