1. Get an API key
Create an account at surfaceapi.com/portal. Sign in via magic link and generate your API key in the developer portal.2. Make a request
Pass your key in theX-API-Key header. You can look up any Kalshi ticker or Polymarket contract ID.
3. Read the response
contracts contains every contract in the cross-exchange group — all Kalshi contracts for the same event plus the Polymarket contract they map to. relationships describes the directed mapping from each Kalshi contract to the Polymarket contract, including whether the YES/NO sides are inverted.
Surface validates team, date, and side alignment before accepting a match. If something doesn’t check out, it’s blocked — you won’t receive a partial or uncertain result.
It works in both directions
The response is identical regardless of which contract ID you query. Pass the Polymarket ID to get the same cluster:Understanding contract ID
ThecontractID parameter refers to the exchange’s own identifier for a contract. Each exchange uses a different format:
- Kalshi — use the market
ticker(e.g.,KXMLBGAME-26MAR252005NYYSF-SF). You can find this in Kalshi’sGET /marketsresponse under thetickerfield. Do not use theevent_tickerorseries_ticker. - Polymarket — use the market
slug(e.g.,mlb-nyy-sf-2026-03-25). You can find this in Polymarket’sGET /marketsresponse under theslugfield. Do not use the CLOB token IDs, condition ID, or event slug.
Understanding is_inverse
Sports games on Kalshi have two contracts — one for each team. One maps directly to Polymarket (is_inverse: false) and the other is the inverse side (is_inverse: true). When is_inverse is true, YES on that Kalshi contract is equivalent to NO on the Polymarket contract. In this example, KXMLBGAME-26MAR252005NYYSF-NYY (Yankees YES) is inverse to the Polymarket contract where Yankees YES is also the direct side. Invert prices and sides accordingly.
Check your quota
Every response includes two headers:
Repeat lookups of any contract within the same cluster are always free. See Introduction for full quota rules.