Skip to main content
GET
/
positions
Get Current Positions
curl --request GET \
  --url https://data-api.kuest.com/positions
{
  "proxyWallet": "<string>",
  "asset": "<string>",
  "conditionId": "<string>",
  "size": 123,
  "avgPrice": 123,
  "initialValue": 123,
  "currentValue": 123,
  "cashPnl": 123,
  "percentPnl": 123,
  "totalBought": 123,
  "realizedPnl": 123,
  "percentRealizedPnl": 123,
  "curPrice": 123,
  "redeemable": true,
  "mergeable": true,
  "title": "<string>",
  "slug": "<string>",
  "icon": "<string>",
  "eventSlug": "<string>",
  "outcome": "<string>",
  "outcomeIndex": 123,
  "oppositeOutcome": "<string>",
  "oppositeAsset": "<string>",
  "timestamp": 123,
  "endDate": "<string>",
  "negativeRisk": true
}
Returns cached positions for a wallet, enriched with metadata and lifecycle hints. Use this endpoint to retrieve all active positions for a user with detailed profit/loss calculations and market information.

Query Parameters

user
string
required
Wallet address whose positions should be returned.Example: 0x56687bf447db6ffa42ffe2204a05edaa20f55839
market
array
Comma-separated list of condition IDs to filter positions by specific markets.Example: 0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917
sizeThreshold
number
default:"1"
Minimum token balance to include in the response.Minimum: 0
redeemable
boolean
default:"false"
Set to true to only return claims that can currently be redeemed.
mergeable
boolean
default:"false"
Set to true to only return positions that can be merged.
limit
integer
default:"100"
Maximum number of rows to return.Range: 0 to 500
offset
integer
default:"0"
Cursor offset for pagination.Range: 0 to 10000
sortBy
string
default:"TOKENS"
Sort column for the response.Options: CURRENT, INITIAL, TOKENS, CASHPNL, PERCENTPNL, TITLE, RESOLVING, PRICE, AVGPRICE
sortDirection
string
default:"DESC"
Sort direction (ascending or descending).Options: ASC, DESC
title
string
Substring search against market title (max 100 chars).

Response

Returns an array of position objects with the following fields:
proxyWallet
string
The wallet address holding the position.
asset
string
The asset identifier in the format conditionId:outcomeIndex.
conditionId
string
The condition ID (market identifier) for this position.
size
number
Current token balance for this position.
avgPrice
number
Average price paid for this position.
initialValue
number
The initial value invested in this position.
currentValue
number
The current market value of this position.
cashPnl
number
Cash profit/loss for this position (currentValue - initialValue).
percentPnl
number
Percentage profit/loss for this position.
totalBought
number
Total tokens bought for this position (before sells).
realizedPnl
number
Realized profit/loss from partial sells.
percentRealizedPnl
number
Percentage realized profit/loss.
curPrice
number
Current market price for this outcome token.
redeemable
boolean
Whether this position can be redeemed (market resolved).
mergeable
boolean
Whether this position can be merged (converted back to collateral).
title
string
The market title/question.
slug
string
URL-friendly market slug.
icon
string
URL to the market icon image.
eventSlug
string
URL-friendly event slug.
outcome
string
The outcome name for this position (e.g., “Yes”, “No”, or candidate name).
outcomeIndex
integer
The numeric index of this outcome.
oppositeOutcome
string
The name of the opposite outcome.
oppositeAsset
string
The asset identifier for the opposite outcome.
timestamp
integer
Unix timestamp when the position was first opened.
endDate
string
ISO 8601 date-time when the market closes.
negativeRisk
boolean
Whether this is a negative-risk market.

Example Request

curl -X GET "https://data-api.kuest.com/positions?user=0x56687bf447db6ffa42ffe2204a05edaa20f55839&limit=10&sortBy=CASHPNL&sortDirection=DESC"

Example Response

[
  {
    "proxyWallet": "0x56687bF447db6fFa42FfE2204a05edAa20f55839",
    "asset": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917:0",
    "conditionId": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
    "size": 1185.42,
    "avgPrice": 0.41,
    "initialValue": 486.02,
    "currentValue": 623.55,
    "cashPnl": 137.53,
    "percentPnl": 28.32,
    "totalBought": 1625,
    "realizedPnl": 212.48,
    "percentRealizedPnl": 13.07,
    "curPrice": 0.53,
    "redeemable": true,
    "mergeable": false,
    "title": "Will the Fed cut rates in September?",
    "slug": "fed-rate-cut-sep-2024",
    "icon": "https://cdn.domain.com/markets/fed.png",
    "eventSlug": "fomc-2024-policy",
    "outcome": "Yes",
    "outcomeIndex": 0,
    "oppositeOutcome": "No",
    "oppositeAsset": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917:1",
    "timestamp": 1719273600,
    "endDate": "2024-09-18T18:00:00Z",
    "negativeRisk": true
  },
  {
    "proxyWallet": "0x56687bF447db6fFa42FfE2204a05edAa20f55839",
    "asset": "0x8eee3789813eead2d47db3bdf6a1c5021f564ef18e2aefc8b80b9dcd5d6f8ac5:1",
    "conditionId": "0x8eee3789813eead2d47db3bdf6a1c5021f564ef18e2aefc8b80b9dcd5d6f8ac5",
    "size": 940.11,
    "avgPrice": 0.47,
    "initialValue": 441.85,
    "currentValue": 389.84,
    "cashPnl": -52.01,
    "percentPnl": -11.77,
    "totalBought": 1300,
    "realizedPnl": 98.67,
    "percentRealizedPnl": 7.59,
    "curPrice": 0.42,
    "redeemable": false,
    "mergeable": true,
    "title": "Will turnout exceed 60% in the French election?",
    "slug": "france-turnout-60",
    "icon": "https://cdn.domain.com/markets/france-election.png",
    "eventSlug": "french-presidential-2024",
    "outcome": "No",
    "outcomeIndex": 1,
    "oppositeOutcome": "Yes",
    "oppositeAsset": "0x8eee3789813eead2d47db3bdf6a1c5021f564ef18e2aefc8b80b9dcd5d6f8ac5:0",
    "timestamp": 1718083200,
    "endDate": "2024-07-07T20:00:00Z",
    "negativeRisk": false
  }
]

Build docs developers (and LLMs) love