Overview
Kalshi and Polymarket often list the same real-world bet — the same game, the same Fed meeting — but word it differently and give it different ids. Layer tells you which Kalshi market and which Polymarket market are the same bet, so your code can treat them as one.
What you can do today
- List every live match —
GET /v0/matchesreturns pairs of markets, one from each venue, that pay out the same way. - Look up one market —
GET /v0/matchtakes a Kalshi or a Polymarket market id and returns its twin on the other venue.POST /v0/matchdoes the same for up to 50 markets in one call. - Check a trade's profit after fees —
POST /v0/profittakes the prices you'd pay on each venue and returns both venues' fees, the spread and your net profit. - See how sure Layer is — every match carries a confidence and the rule differences between the venues (for example, different data sources).
What Layer does not do yet
- Prices. Layer returns ids; fetch prices from each venue's public API (Kalshi, Polymarket).
- Trading. Orders go to each venue directly.
- Every market. Only markets that exist on both venues and have passed Layer's checks are matched. Coverage grows automatically every 6 hours.
Key ideas
| Term | Meaning |
|---|---|
| Market | One yes/no contract on one venue, e.g. Kalshi's "Cut 25bps" or one side of a Polymarket game. |
| Event | A group of markets about one thing, e.g. "Fed decision in October". |
| Match | A Kalshi market and a Polymarket market that pay out in the same situations. |
| Basis | identical, or equivalent_with_caveats when the rules differ on an edge case. |
| Caveats | Which rule differs: source_differs, timing_differs, rounding_differs, carveout_differs, definition_differs. |
| Tier | Who approved the match: human_verified (a person) or auto_verified (Layer's graders). |
Settlement policies
A match means both markets pay out the same way on the result. When the event doesn't happen normally, each venue follows its own policy, and payouts can differ:
- Cancelled, postponed or abandoned events. Kalshi usually settles at a fair price if a game doesn't start within its window; Polymarket may wait for the makeup game, resolve 50-50, or resolve No.
- Players who don't play. Player props pay differently when the player is inactive or never takes the field. Polymarket usually resolves the market Under (so its "over" line pays nothing), while Kalshi usually settles it at a fair price from before the game. If you hold a player's line on both venues and the player sits out, the two positions don't cancel out.
These policies apply to nearly every match, so Layer doesn't list them on each one. If you hold positions on both venues, a cancelled or postponed event can leave them paying differently. Read each venue's rules before trading.
Next
- Quickstart — get a key and make your first request.
- API reference — every endpoint and field.
- How matching works — how Layer decides two markets are the same bet.