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. - See how sure Layer is — every match carries a confidence and the rule differences between the venues (for example, how a postponed game is handled).
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, postponement_differs, rounding_differs, carveout_differs, definition_differs. |
| Tier | Who approved the match: human_verified (a person) or auto_verified (Layer's graders). |
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.