> ## Documentation Index
> Fetch the complete documentation index at: https://docs.predexon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Find Matching Markets

> Find equivalent markets across Polymarket, Kalshi, Limitless, Predict, and Opinion

## Overview

Find matching markets across prediction market platforms. Given a Polymarket identifier (condition ID, market slug, or market ID), a Kalshi market ticker, a Limitless slug, a Predict identifier, or an Opinion identifier, discover equivalent or related markets on the other platforms.

Predict and Opinion can be queried by `market_id`, `condition_id`, or `token_id`. They can also be returned when a Polymarket, Kalshi, or Limitless query has verified canonical equivalents.

<Warning>
  Provide **exactly one** identifier parameter, not multiple.
</Warning>

<Warning>
  **LLM-Based Matching**: Market matching is powered by large language models (LLMs). There is a small percentage of markets where hallucinations may occur, resulting in invalid or incorrect matches. Always verify matches before making trading decisions.
</Warning>

## Match Types

<CardGroup cols={2}>
  <Card title="Exact Matches" icon="bullseye">
    Same underlying event with equivalent or near-equivalent resolution criteria. Similarity score >= 95.
  </Card>

  <Card title="Related Matches" icon="link">
    Similar or correlated events (same entity different outcome, or same event different candidate). Similarity score between 80 and 95. Currently available for Polymarket, Kalshi, and Limitless anchors.
  </Card>
</CardGroup>

## Status Values

| Status   | Description                |
| -------- | -------------------------- |
| `active` | Market is open for trading |
| `closed` | Market is closed/resolved  |

<Info>
  The `similarity` field may be `null` for matches created before January 4th, 2025.
</Info>

## Predict and Opinion Matches

When canonical equivalents exist, the response can include `matches.PREDICT.exact` and `matches.OPINION.exact`. Predict and Opinion can also be used as the query anchor.

These blocks intentionally expose only execution identifiers and a title:

| Field          | Description                               |
| -------------- | ----------------------------------------- |
| `market_id`    | Venue-native market ID                    |
| `condition_id` | Venue-native condition ID, when available |
| `token_id`     | Venue-native YES token ID, when available |
| `title`        | Venue-native market title                 |

Predict and Opinion matches do not include `side`, `status`, `similarity`, or `explanation` in this endpoint. Legacy Polymarket, Kalshi, and Limitless matches retain their existing fields.


## OpenAPI

````yaml GET /v2/matching-markets
openapi: 3.1.0
info:
  title: Predexon API
  description: Prediction market data aggregation and matching API
  version: 2.0.0
servers:
  - url: https://api.predexon.com
security:
  - apiKey: []
paths:
  /v2/matching-markets:
    get:
      tags:
        - matching
      summary: Get Matching Markets
      description: |-
        Find matching markets across prediction market venues.

        Provide exactly ONE of:
        - polymarket_condition_id
        - polymarket_market_slug
        - polymarket_market_id
        - kalshi_market_ticker
        - limitless_slug
        - predict_market_id / predict_condition_id / predict_token_id
        - opinion_market_id / opinion_condition_id / opinion_token_id

        Returns:
        - Exact matches: Markets representing the same event
        - Related matches: Markets for correlated events
        - Predict/Opinion exact matches when canonical equivalents exist
      operationId: get_matching_markets_v2_matching_markets_get
      parameters:
        - name: polymarket_condition_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Polymarket condition ID (hex hash)
            title: Polymarket Condition Id
          description: Polymarket condition ID (hex hash)
          example: '0x6f14e52f6a1502a35406feea3f0e8d42502bbf1199e42c73a743fe1745ccc12c'
        - name: polymarket_market_slug
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Polymarket market slug
            title: Polymarket Market Slug
          description: Polymarket market slug
          example: will-chappell-roan-perform-at-the-2026-grammy-awards
        - name: polymarket_market_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Polymarket market ID (numeric)
            title: Polymarket Market Id
          description: Polymarket market ID (numeric)
          example: '1137275'
        - name: kalshi_market_ticker
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Kalshi market ticker
            title: Kalshi Market Ticker
          description: Kalshi market ticker
          example: KXPERFORMGRAMMYS-26-CHA
        - name: limitless_slug
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Limitless market slug
            title: Limitless Slug
          description: Limitless market slug
        - name: predict_market_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Predict market ID
            title: Predict Market Id
          description: Predict market ID
        - name: predict_condition_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Predict condition ID
            title: Predict Condition Id
          description: Predict condition ID
        - name: predict_token_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Predict YES token ID
            title: Predict Token Id
          description: Predict YES token ID
        - name: opinion_market_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Opinion market ID
            title: Opinion Market Id
          description: Opinion market ID
        - name: opinion_condition_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Opinion condition ID
            title: Opinion Condition Id
          description: Opinion condition ID
        - name: opinion_token_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Opinion YES token ID
            title: Opinion Token Id
          description: Opinion YES token ID
        - name: match_type
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/MatchType'
              - type: 'null'
            description: 'Filter by match type: ''exact'', ''related'', or ''all'' (default: all)'
            title: Match Type
          description: 'Filter by match type: ''exact'', ''related'', or ''all'' (default: all)'
          example: exact
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not Found
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal Server Error
components:
  schemas:
    MatchType:
      type: string
      enum:
        - exact
        - related
        - all
      title: MatchType
      description: Match type filter for cross-platform market matching.
    ErrorResponse:
      properties:
        error:
          type: string
          title: Error
        message:
          type: string
          title: Message
      type: object
      required:
        - error
        - message
      title: ErrorResponse
      description: Standard error response.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````