Skip to main content
GET
Get Wallet Positions
Batch support available! Use POST /api/2/wallet/positions to fetch positions for up to 10 wallets in a single request. Jump to batch docs.

Query details

Step-by-Step Tutorial and Video Walkthrough

  • Check out the guide: Here

Usage Examples

  • Query Wallet Positions on Solana
  • Query Wallet Positions on Ethereum with pagination
  • Only open positions worth at least $1000 (smart filter for portfolio dashboards)
onlyOpen + minPositionValueUSD combo. For active traders with thousands of historical positions, pair these to expose just the holdings the user actually cares about. onlyOpen runs as a SQL pre-filter on warehouse.balances_new to shrink the candidate set, then the controller re-checks balance > 0 after the live RPC fetch (catches stale rows whose balance was sold but never re-queried). minPositionValueUSD is applied after the live pool price is resolved, so small-caps without an asset_id (which would surface as null in tokens.price_usd) are valued correctly via the realtime pool pricer.

Query Response

New Response Fields

Position-level labels

Each position includes a labels array with token-specific trading labels:
  • bundler - Wallet used bundled transactions
  • sniper - Wallet sniped early trades
  • insider - Wallet had insider access
  • dev - Developer wallet
  • proTrader - Professional trader wallet
  • smartTrader - Smart money wallet
  • freshTrader - New trader wallet

Wallet Metadata

The response includes a wallet object with wallet-level metadata:

Batch Positions (POST)

Fetch all positions for multiple wallets in a single request. Each wallet can have its own pagination, sorting, and chain filtering. Endpoint: POST /api/2/wallet/positions Limit: Up to 10 wallets per batch request.

Request Body

Example Request

Example Response

All wallets are processed in parallel, so batch latency ≈ slowest single wallet, not the sum of all wallets.

SDK Usage

Query Parameters

wallet
string
required

Wallet address

chainIds
string

Comma-separated list of chain IDs (e.g., "evm:1,evm:8453,solana:solana"). If omitted, all chains.

limit
number

Number of positions per page (1-500, default: 100)

Required range: 1 <= x <= 500
offset
number | null

Offset for pagination (default: 0)

Required range: x >= 0
cursor
string

Cursor for cursor-based pagination (takes precedence over offset)

cursorDirection
enum<string>

Cursor direction (default: after)

Available options:
before,
after
sortBy
enum<string>

Sort field (default: lastActivity)

Available options:
lastActivity,
realizedPnl
order
enum<string>

Sort order (default: desc)

Available options:
asc,
desc
includeFees
required

Include fees in PnL calculation (deduct total_fees_paid_usd from PnL)

includeAllBalances
required

Include all tokens the wallet holds, not just tokens with trading history

onlyOpen
required

Return only positions still held on-chain (filters out fully closed positions)

minPositionValueUSD
number | null

Drop positions worth less than this USD value (live RPC balance × live pool price)

Required range: x >= 0

Response

200 - application/json

Wallet positions response

data
object[]
required
wallet
object
pagination
object