Skip to main content

What you’ll get

For a chosen purchase, estimates at your size and a separate assessment of whether the contracts pay the same way. For discovery, the examples below rank graph-equivalent pairs by price gap, liquidity and spread. A graph relationship under ordinary resolution does not by itself establish identical cancellation, void or refund treatment. The historical scan on 2026-09-17 found a widest tradeable gap of 1¢, with nothing surviving the spreads.

Prerequisites

  • An API key in ROUTEUR_API_KEY
  • Python 3 with requests, or Node 18+

Compare a chosen purchase

Use GET /v1/markets/{venue}/{id}/comparison (purchaseComparison) before choosing a venue. Supply side=yes or side=no, unit=shares for a fixed share quantity or unit=usd for a trading budget, and a decimal amount. Set MARKET_ID to the current Kalshi market you want to compare:
The venue path can also be polymarket. An optional counterpart query selects a venue:market_id from the returned candidates; otherwise the strongest available graph relation is selected. The API does not create an account or place an order. Read the response’s data as follows: Compare the same share quantity by trading cost, or the same budget by the number of shares available after fees. Preserve the explicit outcome mapping: one venue’s Yes can correspond to another venue’s No. Unknown settlement agreement is not an equivalent-payout claim. Quotes are estimates, not reserved liquidity. Refresh before order review and check the account’s funds, eligibility and execution limits separately. A configured assessment worker is required to turn pending settlement evidence into a current automated assessment; a successful API response alone does not prove that coverage is available.

Scan graph-equivalent pairs

1

List the proven-equivalent pairs

GET /v1/cross-venue returns relations between a Kalshi and a Polymarket market, stated from the Kalshi side. relation=equivalent keeps graph-equivalent outcomes; inspect the settlement evidence before treating the contracts as interchangeable.
Each pair carries both markets with their latest asks and liquidity fields. One pair, trimmed, as observed 2026-09-17 12:44 UTC:
2

Rank the pairs by gap, skipping thin markets

Read both Yes asks, drop any pair where either side is graded thin, and rank by the gap. Subtracting both markets’ spread_usd (the Yes ask plus the No ask less $1) shows what is left after crossing each book once.
Output observed 2026-09-17 12:44 UTC, trimmed to the first four rows:
3

Or let the API rank them

GET /v1/insights returns spreads: the equivalent pairs priced furthest apart, already sorted, with net_usd, what a contract of the gap is worth once both spreads and the estimated taker fees are paid. By default only pairs with a positive net_usd above the liquidity floors are listed, so the list is often empty.
On 2026-09-17 12:45 UTC spreads was []. Adding include_thin=true drops the floors and shows the closest pairs anyway, so you can see why they were left out:
A 0.3¢ gap that costs 1.26¢ to capture is not a trade.

Read the result

Pitfalls

  • A gap is not a trade. The two asks were observed minutes apart, and the top of book can be one contract deep. Size it against the books with Slippage at size, or read GET /v1/opportunities?cross_venue=true, which prices the pair with fees and sizes it against live books (depth.executable).
  • Booleans go as lowercase text. cross_venue=True, as Python’s requests encodes a bool, is rejected with 400 invalid_parameter. Send "true".
  • Pagination is by offset, up to 100,000. cross_venue had 1,301 equivalent pairs on 2026-09-17, so five pages of 200 do not cover everything; raise pages if you need the tail.
  • Settlement can differ. Every cross-venue pair’s evidence ends with how postponement and cancellation settle differently. Equivalent under normal settlement is not equivalent in every world.
  • Proof trail: read why a pair is equivalent, and decide whether the lead on it is executable.
  • Liquid opportunities: gaps, leads and strategy matches in one ranked scan.
  • Cross-venue and Relations: what the relations mean and how they are proven.
  • GET /v1/relations/{left_venue}/{left_id}/{right_venue}/{right_id} for the proof behind any pair.