Partner Admin
Get user positions
GET
appApiKeyheader
x-app-api-key<token>App-scoped API key. It is the only credential on partner-admin reads, paper-trading admin, and webhook rotate or replay. POST /bot-protection/verify requires it together with x-app-id.
appId*stringuserId*stringcursor?stringlimit?integerRange
1 <= value <= 100venueEventId?stringvenueMarketId?stringstatus?stringactive: shares still held. closed: fully sold or settled.
Value in
"active""closed"categoryIds?array<>|Only positions on events in any of these categories (Category.ids, as /venue-events?categoryIds= takes; a league is a category). At most 20.
sort?"realizedPnl"realizedPnl: highest realized P&L first (e.g. biggest wins with status=closed). Default: stable group order. Live positions only.
Value in
"realizedPnl"200
application/json- response
data*array<>This page of results.
nextCursor*stringPass as cursor to fetch the next page; null on the last page.
hasMore*booleantrue when another page exists.
curl -X GET 'https://api.t.sufwankhalid.com/apps/string/users/string/positions'Example Response
{ "data": [ { "targetMarketId": "string", "eventId": "string", "redeemStatus": "eligible", "status": "active", "resolutionDate": "string", "venueMarket": { "venueEventId": "string", "question": "string", "image": "string", "status": "open", "venueMarketOutcomes": [ { "label": "string", "title": "string", "venueBreakdown": [ { "executionBackend": "clearinghouse", "venue": "kalshi", "venueMarketId": "string", "venueMarketOutcomeId": "string", "size": 0, "custodyKind": "EOA", "venueAccountId": "string", "externalAccountId": "string", "signerAddress": "string" } ], "totalSize": 0, "avgEntryPrice": 0, "costBasisUnknown": true, "currentPrice": 0, "realizedPnl": 0, "totalValue": 0, "unrealizedPnl": 0, "unrealizedPnlPercent": 0, "winner": true, "priceSource": "orderbook", "bookQuality": "healthy" } ] } } ], "nextCursor": "string", "hasMore": true}