---
title: "Price a Polymarket combo (parlay) without executing it"
method: POST
path: "/combo/quote"
tags: ["Combo"]
---

# Price a Polymarket combo (parlay) without executing it

`POST /combo/quote`

## Request

- Base URL: `https://execution.kairos.trade`
- URL: `https://execution.kairos.trade/combo/quote`
- 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 real maker-quoted blended price for a multi-leg Polymarket combo. A naive product of the individual leg prices does NOT match what the RFQ gateway quotes, so this is the only correct way to price a parlay before placing it.
Read-only: it opens an RFQ, takes the quote, drops the connection, and commits nothing. Polymarket-only — combos exist on no other venue.
**camelCase.** The whole `/combo/*` family uses camelCase request and response field names, where every Orders endpoint is snake_case — check the schema for the family you are calling rather than assuming one convention across this API. Prices and amounts are six-decimal fixed-point INTEGER strings (`"16393"` = 0.016393), not decimals.
**Requires connected Polymarket credentials.** Every wallet type can quote (quoting never signs), including imported wallet types that cannot yet execute a combo.
**Auth & scope.** Requires `trade:read` for `polymarket`. No mutation gate, so a session JWT alone works. Not rate limited.

## Request body

- OrderComboQuoteRequest: Body for `POST /combo/quote`.
  - `legPositionIds` string[], required
  - `notionalUsd` number, double, required

## Response `200`

The maker's blended quote.

- OrderComboQuoteResponse: Response for `POST /combo/quote`.
  - `yesPositionId` string, required
  - `conditionId` string, nullable
  - `blendedPriceE6` string, required: Six-decimal fixed-point integer string.
  - `totalRequiredE6` string, required: pUSD the taker must hold, six-decimal fixed-point integer string.

## Other responses

- `400`: `VALIDATION_INVALID_ORDER`. Triggers: fewer than 2 or more than 10 legs; `notionalUsd` not finite or not positive, or too small to round to a non-zero six-decimal amount; Polymarket credentials not configured; an imported wallet whose signature type could not be determined. Also the gateway outcomes, which are deliberately mapped to plain-English messages that never leak gateway status codes: - no maker is pricing the parlay right now (can happen while a leg is in play) - no maker will take a parlay this size - the quote expired before it could be filled
- `401`: No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.
- `403`: Missing `trade:read` scope, or API-key access to `polymarket` is disabled.
- `500`: `INTERNAL_ERROR` — credential load failed, the credential set is not Polymarket, RFQ gateway authentication failed, or any other unmapped gateway error.
- `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)
