---
title: "Price a size across the legs of an approved cross-venue market link"
method: GET
path: "/orders/route-quote"
tags: ["Routing"]
---

# Price a size across the legs of an approved cross-venue market link

`GET /orders/route-quote`

## Request

- Base URL: `https://execution.kairos.trade`
- URL: `https://execution.kairos.trade/orders/route-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`

Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. `POST /orders/route-buy` executes the same plan.
Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in `cheaper_elsewhere` with `reason: not_connected`; it is never planned.
**A plan that cannot be built is still a `200`** with `routed: false` — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are `400`.
**Auth & scope.** Requires `trade:read` for `provider`.

## Query parameters

- `provider` string, required
- `market_id` string, required
- `side` 'yes' | 'no', required
- `quantity` string, required
- `slippage_cents` integer

## Response `200`

The routing plan (check `routed`).

- OrderRouteQuoteResponse: Response for `GET /orders/route-quote`. A quote that cannot be routed is still a `200` with `routed` set false — check the flag, not the status code.
  - `routed` boolean, required
  - `link_id` string, uuid, nullable
  - `link_title` string, nullable
  - `notes` string[], required
  - `legs` OrderRouteQuoteLeg[], required
    - `provider` string, required
    - `market_id` string, required
    - `token_id` string, required
    - `quantity` string, required
    - `limit_price` string, required
    - `effective_limit` string, required
    - `est_notional` string, required
    - `est_fee` string, required
    - `below_min_notional` boolean, required
  - `requested` string, required
  - `planned` string, required
  - `unfilled` string, required
  - `blended_effective` string, nullable
  - `stop` 'filled' | 'exhausted' | 'effective_cap' | 'below_minimum', nullable: Why planning stopped. `below_minimum` means every venue leg fell under its venue's minimum order (Polymarket $1.00, Predict.fun 0.90 USD, Hyperliquid its configured USDC minimum), so nothing was planned; each exclusion is a `notes` entry ending `minimum order — leg excluded`.
  - `cheaper_elsewhere` OrderRouteCheaperElsewhere
    - `provider` string, required
    - `blended_effective` string, required: Decimal string; the venue's fee-inclusive price per share for the requested quantity.
    - `delta_per_share` string, required: Decimal string; the plan's `blended_effective` minus this venue's. Always positive.
    - `reason` 'not_connected', required

## Other responses

- `400`: `slippage_cents` outside `[1, 99]`, invalid `side`, non-positive `quantity`, or a malformed authenticated user id. Empty body (status code only).
- `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 `provider` is disabled. Empty body (status code only).
- `503`: API-key access to `provider` could not be checked (fails closed). Empty body (status code only).

---

[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)
