Polyrankdocs
Markets

GET /v1/market/{conditionId}/holder-records

Who holds a market, and each holder’s record: per side, how many holders have a positive price-adjusted record in the market’s category, what they staked and what they paid; then the holders with stake, entry, P&L here, the category record with its sample, a pre-game or in-play record for a game, and lifetime P&L. The record on every row needs metrics_full; a Free account gets it on the first three rows of each side. Positioning, not a forecast.

GET
/v1/market/{conditionId}/holder-records

Who holds a market, and each holder’s record: per side, how many holders have a positive price-adjusted record in the market’s category, what they staked and what they paid; then the holders with stake, entry, P&L here, the category record with its sample, a pre-game or in-play record for a game, and lifetime P&L. The record on every row needs metrics_full; a Free account gets it on the first three rows of each side. Positioning, not a forecast.

AuthorizationBearer <token>

API key: Authorization: Bearer pk_live_… (mint at polyrank.app/api-keys)

In: header

Path Parameters

conditionId*string

Query Parameters

min_usd?integer

The stake floor. Left out, the list opens on $50 where five wallets clear it, else $10, else everyone.

filter?string
sort?string
limit?integer

Response Body

application/json

curl -X GET "https://example.com/v1/market/string/holder-records"
{  "questions": [    {      "condition_id": "string",      "category": "string",      "label": "string",      "title": "string",      "summaries": [        {          "floor_usd": -9007199254740991,          "holders": -9007199254740991,          "hedged": -9007199254740991,          "with_record": -9007199254740991,          "positive": -9007199254740991,          "yes": {            "wallets": -9007199254740991,            "stake_usd": 0,            "avg_entry": 0,            "price_now": 0,            "holders": -9007199254740991,            "holders_stake_usd": 0          },          "no": {            "wallets": -9007199254740991,            "stake_usd": 0,            "avg_entry": 0,            "price_now": 0,            "holders": -9007199254740991,            "holders_stake_usd": 0          }        }      ]    }  ],  "floor": {    "applied": -9007199254740991,    "preferred": -9007199254740991,    "stepped_down": true,    "chosen": true  },  "filter": "positive",  "sort": "record",  "rows": [    {      "condition_id": "string",      "proxy_wallet": "string",      "display_name": "string",      "side": "YES",      "shares": 0,      "stake_usd": 0,      "entry_price": 0,      "has_mid": true,      "current_value": 0,      "unrealized_pnl": 0,      "record": {        "edge": 0,        "n": -9007199254740991,        "window": "14d"      },      "timing": {        "bucket": "pregame",        "edge": 0,        "n": -9007199254740991      },      "lifetime": {        "realized_pnl": 0,        "n_resolved": -9007199254740991      },      "record_locked": true    }  ],  "matched": [    {      "condition_id": "string",      "yes": -9007199254740991,      "no": -9007199254740991    }  ],  "wallets_positive": -9007199254740991,  "timing_bucket": "pregame",  "skill_as_of": "string",  "positions_as_of": "string",  "capped": true,  "audience": "full",  "free_record_rows": -9007199254740991}