---
title: "Buy a Polymarket combo (parlay) via the RFQ gateway"
method: POST
path: "/combo/execute"
tags: ["Combo"]
---

# Buy a Polymarket combo (parlay) via the RFQ gateway

`POST /combo/execute`

## Request

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

Runs the whole requester flow server-side in one call: creates the RFQ from your chosen leg position ids, accepts the best quote with a signed order, and returns the on-chain result. It is one call rather than two precisely to beat the quote expiry — there is no separate accept step.
**Set `maxPriceCents`.** Without it you accept whatever blended price the maker returns. With it, a quote worse than your ceiling is refused and nothing trades (a `400`).
**One-time collateral approval.** Combos settle against Polymarket's v3 exchange, which ordinary trading never approves. The first execute transparently sets that approval — directly for an EOA, or through the Polymarket relayer for a Kairos deposit wallet. **Imported smart-account wallets (Safe / imported Poly1271) cannot execute combos yet** and get a `400` explaining so; quoting still works for them.
**Fees.** The Kairos platform fee is resolved from your tier BEFORE the irreversible RFQ is submitted (a tier-lookup outage stops the trade rather than making it free), then accrued against the pUSD spent through the same ledger and sweep as ordinary fills.
**Auth & scope.** Requires `trade:execute` for `polymarket` plus the service-token/CSRF/API-key mutation gate, which the API-key triple satisfies automatically.

## Request body

- OrderComboExecuteRequest: Body for `POST /combo/execute`. NOTE: the whole `/combo/*` family uses **camelCase** field names, where the Orders endpoints are snake_case. Do not assume one convention across this API.
  - `legPositionIds` string[], required: The YES-outcome position id of each leg market. Minimum 2, maximum 10 legs.
  - `notionalUsd` number, double, required: USD notional to spend on the combo (e.g. `10.0` = $10). Must be finite and > 0, and large enough to round to a non-zero six-decimal amount.
  - `maxPriceCents` integer, nullable: Reject the quote if the blended price exceeds this, in cents per share (e.g. `60` = $0.60). Strongly recommended — without it you accept whatever the maker quotes.

## Response `200`

The combo settled on-chain.

- OrderComboExecuteResponse: Response for `POST /combo/execute`.
  - `rfqId` string, required
  - `quoteId` string, required
  - `conditionId` string, nullable
  - `yesPositionId` string, required: The combo's synthetic YES outcome position id.
  - `blendedPriceE6` string, required: Blended maker price as a six-decimal fixed-point integer string (e.g. `"16393"` = 0.016393). NOT a decimal — divide by 1,000,000.
  - `totalRequiredE6` string, required: pUSD spent, six-decimal fixed-point integer string.
  - `status` string, required: The RFQ gateway's settlement status, passed through verbatim.
  - `txHash` string, nullable

## Other responses

- `400`: `VALIDATION_INVALID_ORDER`. All the `POST /combo/quote` triggers, plus: the wallet is an imported smart-account type that cannot execute combos yet; and the slippage refusal — the maker's quote came back above `maxPriceCents`, so nothing traded.
- `401`: No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.
- `403`: Missing `trade:execute` scope, or API-key access to `polymarket` is disabled.
- `500`: `INTERNAL_ERROR` — credential load failed, no regional signing authority on the credentials, the v3 collateral approval failed, the relayer is not configured, the fee-tier lookup failed (fails closed — the trade is refused rather than made free), gateway auth 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)
