Skip to main content
GET
/
v2
/
positions
/
{wallet}
curl "https://api.pmx.trade/v2/positions/7xKXabc123..."
{
  "success": true,
  "data": [
    {
      "marketId": 5,
      "marketTitle": "BTC above $95000 by Mar 1 12:00 UTC",
      "marketStatus": "resolved",
      "yesBalance": 15000000,
      "noBalance": 0,
      "yesBalanceHuman": 15.0,
      "noBalanceHuman": 0,
      "winningSide": "YES",
      "isResolved": true,
      "isBroken": false,
      "hasWinningTokens": true,
      "redeemableValueUsdc": 15.0,
      "needsRedemption": true
    },
    {
      "marketId": 8,
      "marketTitle": "ETH above $3500 by Mar 2 06:00 UTC",
      "marketStatus": "active",
      "yesBalance": 5000000,
      "noBalance": 0,
      "yesBalanceHuman": 5.0,
      "noBalanceHuman": 0,
      "winningSide": null,
      "isResolved": false,
      "isBroken": false,
      "hasWinningTokens": false,
      "redeemableValueUsdc": 0,
      "needsRedemption": false
    }
  ]
}
Returns position data for every market where the wallet currently holds YES or NO tokens. The endpoint scans the wallet’s token accounts directly for fast response times — no on-chain PDA lookups per market.

Path parameters

wallet
string
required
Solana wallet address.

Response

success
boolean
data
array
Array of position objects — only markets where the wallet holds tokens.
curl "https://api.pmx.trade/v2/positions/7xKXabc123..."
{
  "success": true,
  "data": [
    {
      "marketId": 5,
      "marketTitle": "BTC above $95000 by Mar 1 12:00 UTC",
      "marketStatus": "resolved",
      "yesBalance": 15000000,
      "noBalance": 0,
      "yesBalanceHuman": 15.0,
      "noBalanceHuman": 0,
      "winningSide": "YES",
      "isResolved": true,
      "isBroken": false,
      "hasWinningTokens": true,
      "redeemableValueUsdc": 15.0,
      "needsRedemption": true
    },
    {
      "marketId": 8,
      "marketTitle": "ETH above $3500 by Mar 2 06:00 UTC",
      "marketStatus": "active",
      "yesBalance": 5000000,
      "noBalance": 0,
      "yesBalanceHuman": 5.0,
      "noBalanceHuman": 0,
      "winningSide": null,
      "isResolved": false,
      "isBroken": false,
      "hasWinningTokens": false,
      "redeemableValueUsdc": 0,
      "needsRedemption": false
    }
  ]
}
Use the needsRedemption field to quickly identify positions that need to be redeemed. This saves you from having to cross-reference market status and winning side manually.
This endpoint only returns markets where the wallet currently holds tokens. Markets where tokens have already been redeemed (balance = 0) will not appear. If you get an empty array, it means the wallet has no outstanding positions.

Single Market Position

You can also get position data for a specific market:
GET /v2/positions/{wallet}/{marketId}
Returns the same fields as above, but for a single market. Returns 404 if the wallet has no tokens and the market doesn’t exist.