Trading

Order Types on Kairos: Market, Limit, and Time in Force

KairosAugust 21, 20265 min read

Quick answer

Kairos supports market orders (immediate execution at the best available price) and limit orders (rest on the book at your price), with five time-in-force values: GTC, FOK, FAK, IOC, and GTD. Every order names an exact outcome and a price, even market orders, and routes to Kalshi or Polymarket.

Market and limit orders

{ "kind": "limit", "side": "buy", "outcome": "Before Aug 1, 2026", "quantity": 100, "price": 0.45, "exchange_id": "polymarket", "market_id": "0x..." }

A limit order rests on the book until filled or cancelled, and pays maker fees when it rests. A market order executes immediately at the best available price. The price field is required even for market orders: Kairos treats it as the limit you are willing to cross to, not a market-price sentinel, and rejects the order without it. Submit the live same-outcome quote, the ask for buys and the bid for sells, pulled from the Market Data WebSocket or GET /markets/batch-prices.

Specifying the outcome

Each market has multiple outcomes. Identify the one you are trading with either the exact human-readable outcome label from market metadata, or its token_id. Never submit a generic side alias like yes or no as the outcome. To close a position, sell the same outcome label you bought, not the opposite outcome.

Time in force

ValueBehavior
GTC (default)Good till cancelled. Rests until it fills or you cancel it.
FOKFill or kill. Fills completely and immediately, or the whole order cancels.
FAKFill and kill. Fills what it can immediately, cancels the remainder. Polymarket-specific.
IOCImmediate or cancel. Alias for FAK: partial fills allowed, remainder cancelled.
GTDGood till date. Expires after expiration_minutes (1 to 43200, required for this value).
GTC and GTD rest on the book; FOK, FAK, and IOC are immediate taker executions.

No silent downgrades

An unrecognized time_in_force is rejected, not silently converted to GTC, and it must be a value the target venue supports or the order returns 400 EXCHANGE_UNSUPPORTED.

Order statuses

StatusMeaning
pendingReceived, awaiting processing
liveActive on the exchange
partialSome contracts have filled
filledCompletely filled (terminal)
cancelledYou cancelled it (terminal)
expiredA GTD order reached expiration (terminal)
failedCould not be executed (terminal)

Cancelling an order

Cancel from the Orders panel or POST /orders/{order_id}/cancel with the trade:execute scope. One behavior to code against: the endpoint almost always returns 200, even when the cancel does not happen. If the order is already terminal or the venue refuses the cancel, the response carries success: false with an explanatory message rather than a 4xx. Full schemas live in the interactive reference.

Frequently asked questions

The terminal's execution panel supports take-profit and stop-loss alongside market and limit orders with slippage controls. The public Order Execution API accepts market and limit orders with the five time-in-force values listed above.
Kairos requires a price on every order, including market orders. It is treated as the worst price you are willing to accept, which protects you from crossing a moving book unboundedly. Send the live same-outcome ask for buys or bid for sells.
Quantity must be greater than zero and at most 1,000,000 contracts. A server-configured minimum applies to buy orders only, so sell orders of any size can fully close a position after partial fills.

Related reading