The Prediction Markets
API reference

Matches: find the same market on the other venue

Give a venue link (url) or a venue id (venue + id). Get back the TPM event and the matching listings on the other venue.

When to use it

  • A user pastes a Kalshi link and you want the Polymarket price, or the reverse.
  • You hold venue tickers or condition ids and need TPM event slugs.

Same question, maybe different rules

A match means the listings are about the same question. Settlement rules can still differ, so check event detail before treating the prices as one bet.

GET/api/public/v1/matchesAPI key required

Find matches

Send either url, or both venue and id.

Parameters

NameInTypeRequiredDefaultDescription
urlquerystringNo—A Kalshi or Polymarket market or event link. URL-encode it.
venuequery"kalshi" | "polymarket"No—With id: the venue the id belongs to.
idquerystringNo—With venue: a market id or contract id (Kalshi ticker, Polymarket event slug or condition id).

Request

Request
curl -s 'https://api.thepredictionmarkets.com/api/public/v1/matches?venue=kalshi&id=KXPRESNOMD-28-GN' \
  -H 'X-API-Key: tpm_demo_key_authorized_2026'

Response

Example 200 response. Values are illustrative and change over time.

200 OK
{
  "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
      }
    ]
  }
}

Response fields

FieldTypeDescription
sourceobject{venue, market_id, url, title, status} of the market your link or id points at.
matched_contractobject | null{title, platform_outcome_id} when your link or id pointed at one contract, not the whole market. platform_outcome_id is its contract_id.
event_slugstringThe TPM event. Use it with /events/{slug}.
web_urlstringThe event page on thepredictionmarkets.com.
matches[].venue, market_id, urlstringThe matching listing on the other venue.
matches[].event_slugstring | nullIts TPM event.
matches[].match_statestring | nullHow the link was made, e.g. AUTO_CANONICAL or MANUAL_CANONICAL; SAME_EVENT when both are grouped under one TPM event; COMPARABLE when only the titles match, so check the settlement rules.
matches[].match_scorenumber | nullMatch confidence from 0 to 1, when scored.

Errors

HTTPCodeWhen
400validation.missing_parameterNeither url nor venue + id was sent.
400validation.invalid_urlurl is not a Kalshi or Polymarket link.
404not_found.marketTPM does not track that market yet.
401auth.missing_keyNo X-API-Key header was sent.
401auth.invalid_keyThe key is wrong or was revoked.
429rate_limit.per_secondToo many requests this second. Wait for Retry-After.
400 validation.missing_parameter
{
  "error": {
    "code": "validation.missing_parameter",
    "message": "Pass `url`, or `venue` and `id`.",
    "request_id": "0f8969a6-0968-4d7c-9cbb-de379e8c19c4"
  }
}

All codes are listed on the errors page.

Try it

Runs a live request from your browser. Pre-filled with the shared demo key (5 requests per second for everyone); paste your own key for steadier results.

HTTP: —Time: —Rows: —Remaining this second: —Request: —
Press Send to run this request.

Match by link

URL-encode the link. curl --data-urlencode, Python requests and URLSearchParams all do it for you.

Request
curl -sG 'https://api.thepredictionmarkets.com/api/public/v1/matches' \
  --data-urlencode 'url=https://polymarket.com/event/democratic-presidential-nominee-2028' \
  -H 'X-API-Key: tpm_demo_key_authorized_2026'

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.