Skip to main content
GET
Returns the spot positions of the requested wallets, with one row per chain, wallet and token. wallets takes 1 to 100 comma-separated addresses, and chains limits results to specific chains.

Filters

  • lifecycle selects open positions (the default) or closed positions.
  • hideLowLiquidity excludes open positions in tokens with under $1,000 of liquidity. The default is true; send false to include every position.
  • hideDust excludes open positions worth under $1. The default is false.
  • hideTransfers excludes positions not opened by a buy, such as airdrops. The default is false.
  • chain and token together limit results to one token’s positions and must be sent together.
  • q matches tokens whose symbol or name contains the value, case-insensitively.

Sort

sort is field:asc or field:desc, where field is value, pnl, pnlPct, openedAt or closedAt. The default is value:desc for open positions and closedAt:desc for closed positions.

Response

A page contains positions, nextCursor, hasMore, asOf and counts. counts.spot is the number of open and closed positions. It ignores lifecycle, the hide… parameters, q, chain and token, so it stays the same across all pages of one request. Holdings are valued at the token’s latest price. value, unrealizedPnl, totalPnl and pnlPct are null for a token with no market record, and pnlPct is also null for a position with no invested cost. version orders the changes to a position, and the highest version is the current one. The spot.positions stream follows the same rule.

Pagination

Send nextCursor back exactly as received. A cursor encodes the filters and sort of the request that produced it, so a cursor sent with different filters returns 400 VALIDATION_ERROR.

Errors

Authorizations

Authorization
string
header
required

Send an API key, or a session token a key minted, as Authorization: Bearer <credential>. A browser opening /v1/stream offers its session token in Sec-WebSocket-Protocol instead.

Query Parameters

wallets
string
required

Wallet addresses, CSV; one to 100.

chains
string

Chains to scope to, CSV of the chain slugs. Absent means every spot chain.

lifecycle
enum<string>

Lifecycle to list; open when absent. A position's current-cycle lifecycle.

Available options:
open,
closed
hideLowLiquidity
boolean
default:true

Drop open positions whose token liquidity is below the low-liquidity floor.

hideDust
boolean

Drop open positions whose remaining value is below the dust floor.

hideTransfers
boolean

Drop positions never acquired through a buy.

chain
string

Exact-token drill-down chain; requires token.

token
string

Exact-token drill-down address; requires chain.

q
string

Case-insensitive substring of the token symbol or name.

sort
string

Sort field and direction, field:asc|desc. value:desc when absent, closedAt:desc for closed.

limit
integer<int32>

Rows per page, clamped to 1-100; 50 when absent.

Required range: 1 <= x <= 100
cursor
string

Opaque cursor from the previous page.

Response

One page of the named wallets' positions. The price-derived fields are null for a token without a price.

One page of the named wallets' positions.

asOf
integer<int64>
required

Serve-time snapshot timestamp.

counts
object
required

Per-product counts, taken before the lifecycle, display, search and drill-down filters.

hasMore
boolean
required

Whether a next page exists.

positions
object[]
required

Positions on this page.

nextCursor
string | null

Cursor for the next page; null on the last page.