Skip to main content
GET
/
v1
/
markets
/
{id}
/
positions
Market positions & P&L
curl --request GET \
  --url https://api.polynode.dev/v1/markets/{id}/positions \
  --header 'x-api-key: <api-key>'
{
  "condition_id": "0x895e01dbf3e6a33cd9a44ca0f8cdb5df1bd2b0b6ebed5300d28f8da7145145e4",
  "market_title": "Will Donald Trump win the 2028 Republican presidential nomination?",
  "slug": "will-donald-trump-win-the-2028-republican-presidential-nomination",
  "outcome_names": [
    "Yes",
    "No"
  ],
  "outcomes": [
    {
      "token": "3039641309958397001906153616677074061284510636203465131156925998487819889437",
      "positions": [
        {
          "proxyWallet": "0xa5ef39c3d3e10d0b270233af41cac69796b12966",
          "name": "",
          "outcome": "No",
          "outcomeIndex": 1,
          "size": 1735573.72,
          "avgPrice": 0,
          "currPrice": 0.9835,
          "currentValue": 1706936.75,
          "cashPnl": 1706936.75,
          "realizedPnl": 0,
          "totalPnl": 1706936.75
        },
        {
          "proxyWallet": "0xc2e7800b5af46e6093872b177b7a5e7f0563be51",
          "name": "beachboy4",
          "outcome": "Yes",
          "outcomeIndex": 0,
          "size": 248651.26,
          "avgPrice": 0.040276,
          "currPrice": 0.0165,
          "currentValue": 4102.75,
          "cashPnl": -5911.93,
          "realizedPnl": 0,
          "totalPnl": -5911.93,
          "firstTradeAt": 1753016057,
          "lastTradeAt": 1765034355
        }
      ]
    }
  ]
}

Authorizations

x-api-key
string
header
required

Path Parameters

id
string
required

Condition ID (0x-prefixed) or market slug

Query Parameters

limit
integer
default:50

Maximum holders per outcome token (default 50, max 500)

Required range: 1 <= x <= 500
offset
integer
default:0

Pagination offset (default 0)

Required range: x >= 0
sortBy
enum<string>
default:TOTAL_PNL

Sort holders by field

Available options:
TOKENS,
CASH_PNL,
REALIZED_PNL,
TOTAL_PNL
sortDirection
enum<string>
default:DESC

Sort direction

Available options:
ASC,
DESC
status
enum<string>
default:ALL

Filter by position status

Available options:
OPEN,
CLOSED,
ALL
includeTrades
boolean
default:false

Enrich each position with firstTradeAt and lastTradeAt timestamps. Adds one upstream call per holder, so responses will be slower. Default false. Rate limited to 60 requests per minute per key (separate from your standard rate limit).

user
string

Filter to specific wallet address(es). Accepts a single address or multiple comma-separated addresses (max 20). Returns only those wallets' positions in this market.

Response

Market positions grouped by outcome token

Holder positions for a market, grouped by outcome token.

condition_id
string
required

Market condition ID.

outcomes
object[]
required

Array of outcome tokens, each containing a list of holder positions.

market_title
string

Market title (enriched by PolyNode).

slug
string

Market slug (enriched by PolyNode).

outcome_names
string[]

Outcome names (e.g. ["Yes", "No"]).