Reads

List a wallet's positions across venues

Returns open, resolved and closed positions across venues. Requires Authorization: SIWE <token> from a login action (or an API key whose Kairos account owns the wallet).

The body is nested: the rows are at positions.positions, with positions.resolved, positions.closed and positions.asOf beside them. When a venue cannot be read, venueDetail.<venue>.error says why.

get/v3/wallets/{address}/positions

Request

  • Base URL
    https://execution.kairos.trade
  • Auth
    • API key in header X-Kairos-Partner-Id and API key in header Authorization
    • or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret and API key in header Authorization
    • or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
    • or API key in header X-Kairos-Partner-Id and API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
    • or API key in header X-Kairos-Partner-Id and HTTP bearer

Path parameters

addressstring required

The wallet's EVM address (0x + 40 hex; checksum not required).

Query parameters

venue'polymarket' | 'predictfun' | 'hyperliquid'

Venue id. predict.fun is accepted as an input alias of predictfun.

Read one venue only. Case-insensitive; predict.fun is accepted for predictfun. An unknown name is 400 unknown venue "<name>"; a venue not offered on this deployment returns an empty list.

Headers

X-Kairos-Wallet-Api'2' required

Wallet API contract version. Send 2 — the multi-venue contract this reference documents. Without the header (or with any other value) /v3/actions and /v3/wallets/* serve the original Polymarket-only contract, which ignores venue prefixes, expiresAt and setup.venues, omits chainId, venue and fallbackRequests from steps, refuses orders on a wallet that is not set up (409), and returns snake_case order and position rows.

Response

Positions across venues.

venueDetailWalletVenueReadError

Per-venue read failures, keyed by venue. Present only when some venue could not be read.

Example response

{
  "positions": {
    "positions": [
      {
        "venue": "polymarket",
        "market": "polymarket:0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a",
        "marketId": "0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a",
        "outcome": "Yes",
        "tokenId": "71321045679252212594626385532706912750332728571942532289631379312455583992563",
        "size": "4.5",
        "availableToSell": "4.5",
        "avgPrice": "0.52",
        "realizedPnl": "0",
        "holdingWallet": "0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b",
        "lastTradeAt": "2026-10-28T11:58:00Z"
      }
    ],
    "resolved": [],
    "closed": [],
    "asOf": "2026-10-28T12:00:00Z"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.