---
title: "List the authenticated user's Polymarket combo positions"
method: GET
path: "/combo/positions"
tags: ["Combo"]
---

# List the authenticated user's Polymarket combo positions

`GET /combo/positions`

## Request

- Base URL: `https://execution.kairos.trade`
- URL: `https://execution.kairos.trade/combo/positions`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

Returns the combos held by the caller's Polymarket maker wallet, newest/most-valuable first, each with its per-leg resolution state. Capped at 50 combos; there is no pagination parameter and no query parameters at all.
**At the combo level, read `redeemable`, not `status`.** A won-but-unredeemed combo keeps `status: "OPEN"`, so inferring redeemability from `status` — or from leg prices — is wrong. `redeemable` is the authoritative flag and is `true` only for a resolved win with a non-zero balance; it covers "not resolved", "lost" and "already redeemed" in one check.
**At the leg level, `legStatus` IS the authoritative field.** Use `legStatus` (`OPEN` / `RESOLVED_WIN` / `RESOLVED_LOSS`) to mark a leg won, lost or pending. Never infer a leg's outcome from `currentPrice` — the price is display data and a heuristic over it will be wrong. The caution above is about the combo-level `status` field specifically, and does not extend to `legStatus`.
A parlay is all-or-nothing: one `RESOLVED_LOSS` leg makes the whole combo worth $0 even while sibling legs are still pending.
**Auth & scope.** Requires `position:read` for `polymarket`. No mutation gate.

## Response `200`

The caller's combo positions.

- OrderComboPositionsResponse: Response for `GET /combo/positions`.
  - `combos` OrderComboPosition[], required: Capped at 50 combos, newest/most-valuable first. There is no pagination parameter.
    - `comboConditionId` string, required: 31-byte hex. Pass this as `comboConditionId` to `POST /combo/redeem`.
    - `comboPositionId` string, required
    - `sharesBalance` string, required: Shares held (decimal string). A winning combo redeems 1:1 at $1, so this is also the maximum payout in USD.
    - `entryCostUsdc` string, required
    - `totalCostUsdc` string, required
    - `realizedPayoutUsdc` string, required
    - `status` string, required: Combo-level status from upstream. NOTE: it stays `OPEN` for a won-but-unredeemed combo — do NOT infer redeemability from it. Use `redeemable`.
    - `redeemable` boolean, required: The single source of truth for "can redeem now" — `true` only for a resolved WIN with a non-zero balance. Covers "not resolved", "lost" and "already redeemed" in one flag.
    - `firstEntryAt` string, required
    - `legsTotal` integer, required
    - `legsResolved` integer, required
    - `legsPending` integer, required
    - `legs` OrderComboLeg[], required
      - `legPositionId` string, required
      - `outcomeLabel` string, required
      - `currentPrice` string, required: Live leg price in `0..1`, as an upstream-provided string.
      - `legStatus` 'OPEN' | 'RESOLVED_WIN' | 'RESOLVED_LOSS', required: Authoritative per-leg resolution. Use this — never a price heuristic — to mark a leg won/lost/pending.
      - `title` string, required
      - `slug` string, required
      - `outcome` string, required
      - `imageUrl` string, required

## Other responses

- `400`: `VALIDATION_INVALID_ORDER` — Polymarket credentials not configured, or an imported wallet whose signature type could not be determined.
- `401`: No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.
- `403`: Missing `position:read` scope, or API-key access to `polymarket` is disabled.
- `500`: `INTERNAL_ERROR` — credential load failed, or the upstream combo-positions read failed or returned an unparseable body.
- `503`: API-key access to `polymarket` could not be checked (fails closed).

---

[API](https://skmtc.dev/kairos/apis/kairos-order-execution-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-order-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-order-execution-api/revisions/9ba7d463d505?raw)
