Skip to main content
GET
/
2
/
wallet
/
pm
/
positions
Get wallet prediction market positions
curl --request GET \
  --url https://demo-api.mobula.io/api/2/wallet/pm/positions
{
  "data": [
    {
      "platform": "<string>",
      "market": {
        "marketId": "<string>",
        "question": "<string>",
        "category": "<string>",
        "status": "<string>",
        "logo": "<string>",
        "endDate": "<string>"
      },
      "outcomeId": "<string>",
      "label": "<string>",
      "balance": 123,
      "costBasisUSD": 123,
      "avgBuyPriceUSD": 123,
      "avgSellPriceUSD": 123,
      "priceUSD": 123,
      "amountUSD": 123,
      "unrealizedPnlUSD": 123,
      "unrealizedPnlPercent": 123,
      "realizedPnlUSD": 123,
      "totalPnlUSD": 123,
      "totalFeesPaidUSD": 123,
      "buys": 123,
      "sells": 123,
      "volumeBuyUSD": 123,
      "volumeSellUSD": 123,
      "firstDate": "<string>",
      "lastDate": "<string>",
      "labels": [
        "<string>"
      ]
    }
  ],
  "wallet": {
    "fundingInfo": {},
    "entity": "<string>",
    "labels": [
      "<string>"
    ]
  },
  "pagination": {
    "page": 123,
    "offset": 123,
    "limit": 123,
    "pageEntries": 123
  },
  "hostname": "<string>",
  "took": 123
}

Query Parameters

wallet
string
required
The wallet address to get positions for.
platforms
string
Comma-separated list of platforms to filter by.
status
string
Position status filter: active, resolved, or all.
sortBy
string
default:"amountUSD"
Sort order: amountUSD, totalPnlUSD, or createdAt.
limit
number
default:"50"
Number of positions to return (1 to 100).
offset
number
default:"0"
Pagination offset.

Response

data
array
Array of wallet positions.
wallet
object | null
Wallet metadata (fundingInfo, entity, labels). Null when unavailable.
pagination
object
Pagination metadata.
hostname
string
Server node identifier.
took
number
Request processing time in milliseconds.

Usage Example

curl -X GET "https://api.mobula.io/api/2/wallet/pm/positions?wallet=0xYourWalletAddress&status=active"

Example Response

{
  "data": [
    {
      "platform": "polymarket",
      "market": {
        "marketId": "0x1234...",
        "question": "Will ETH reach $10,000 by end of 2026?",
        "category": "crypto",
        "status": "active",
        "logo": "https://polymarket.com/images/market.png",
        "endDate": "2026-12-31T23:59:59.000Z"
      },
      "outcomeId": "71321...",
      "label": "Yes",
      "balance": 100,
      "costBasisUSD": 35,
      "avgBuyPriceUSD": 0.35,
      "avgSellPriceUSD": null,
      "priceUSD": 0.42,
      "amountUSD": 42,
      "unrealizedPnlUSD": 7,
      "unrealizedPnlPercent": 20,
      "realizedPnlUSD": 0,
      "totalPnlUSD": 7,
      "totalFeesPaidUSD": 0.12,
      "buys": 2,
      "sells": 0,
      "volumeBuyUSD": 35,
      "volumeSellUSD": 0,
      "firstDate": "2026-02-01T10:00:00.000Z",
      "lastDate": "2026-02-15T14:30:00.000Z",
      "labels": []
    }
  ],
  "wallet": null,
  "pagination": {
    "page": 1,
    "offset": 0,
    "limit": 50,
    "pageEntries": 1
  },
  "hostname": "node-xyz",
  "took": 42
}

Query Parameters

wallet
string
required
platforms
string

Comma-separated list of platforms

status
enum<string>
Available options:
active,
resolved,
all
sortBy
enum<string>
default:amountUSD
Available options:
amountUSD,
totalPnlUSD,
createdAt
limit
number
default:50
Required range: 1 <= x <= 100
offset
number
default:0
Required range: x >= 0

Response

200 - application/json

Wallet positions

data
object[]
wallet
object
pagination
object
hostname
string
took
number