Traders
Port strategies across exchanges and find an edge in the orderbooks.
All exchanges. One event. Separate contracts, separate schemas, separate sides. Aggregated, normalized, and matched by Surface.
| Kalshi series | Unique orderbooks | Settlement consistency |
|---|---|---|
| KXBTC15MBitcoin price up down | 7,493 | 97.5% |
| KXETH15METH 15M price up down | 7,493 | 97.7% |
| KXKBOGAMEKBO Game | 414 | 100.0% |
| KXMLBGAMEProfessional Baseball Game | 1,604 | 100.0% |
| KXMLBHRPro Baseball Home Runs | 22,371 | 100.0% |
| KXMLBKSPro Baseball Strikeouts | 5,237 | 100.0% |
| KXMLBTOTALPro Baseball Total Points | 5,365 | 100.0% |
Built for
Port strategies across exchanges and find an edge in the orderbooks.
Unlock diverse market data and aggregate true probabilities.
Create seamless cross-exchange experiences for your users.
What it does
Pass any Kalshi ticker or Polymarket slug and get the full normalized cluster.
Matches are determined ahead of time from explicit fields and rules.
is_inverse tells you when YES on Kalshi equals NO on Polymarket.
Use one consistent API as Surface connects more prediction-market exchanges.
# resolve any contract cross-exchange
curl "https://surfaceapi.com/api/v1/match/KXMLBGAME-26MAR252005NYYSF-SF?include_rules=true" \
-H "X-API-Key: sk_surface_..."
# → 200 OK
{
"contracts": {
"kalshi": {
"KXMLBGAME-...-SF": { "question": "..." },
"KXMLBGAME-...-NYY": { "question": "..." }
},
"polymarket": {
"mlb-nyy-sf-2026-03-25": { "question": "..." }
}
},
"matches": {
"kalshi": {
"KXMLBGAME-...-SF": {
"polymarket": {
"mlb-nyy-sf-2026-03-25": { "is_inverse": false }
}
}
}
}
}