The Prediction Markets
Guide

Map a Kalshi or Polymarket link to the other venue

A user pastes a Kalshi link. You want the same market on Polymarket and both prices. One call to /matches, one to /events/{slug}.

Steps

  1. Call /matches with url=<the link>. If you have an id instead, send venue and id (a Kalshi ticker, a Polymarket event slug or a condition id).
  2. matches[] lists the listings on the other venue, with a match_state and match_score. matched_contract is set when the link pointed at one contract.
  3. Call /events/{event_slug} for prices on both venues.
  4. Handle 404 not_found.market (TPM does not track that market yet) and 400 validation.invalid_url (not a Kalshi or Polymarket link).

Code

Link to other venue
curl -sG 'https://api.thepredictionmarkets.com/api/public/v1/matches' \
  --data-urlencode 'url=https://kalshi.com/markets/kxpresnomd' \
  -H 'X-API-Key: tpm_demo_key_authorized_2026'
Example response
{
  "data": {
    "source": {
      "venue": "kalshi",
      "market_id": "KXPRESNOMD-28",
      "url": "https://kalshi.com/markets/kxpresnomd",
      "title": "Democratic Presidential Nominee 2028",
      "status": "active"
    },
    "matched_contract": {
      "title": "Gavin Newsom",
      "platform_outcome_id": "KXPRESNOMD-28-GN"
    },
    "event_slug": "democratic-presidential-nominee-2028",
    "web_url": "https://thepredictionmarkets.com/odds/democratic-presidential-nominee-2028",
    "matches": [
      {
        "venue": "polymarket",
        "market_id": "democratic-presidential-nominee-2028",
        "url": "https://polymarket.com/event/democratic-presidential-nominee-2028",
        "event_slug": "democratic-presidential-nominee-2028",
        "match_state": "AUTO_CANONICAL",
        "match_score": 0.93
      }
    ]
  }
}

Build with TPM

Get your free API key

One key gives you Kalshi and Polymarket events, prices with freshness, price history, cross-venue gaps and the live quotes WebSocket.