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

# Semantic Market Search

> Search markets by meaning using AI-powered semantic search. Unlike keyword search, this understands natural language queries like "will interest rates go down" and finds relevant markets even if they use different wording.

Uses hybrid scoring that combines:
- **Semantic similarity** — matches meaning using embeddings across both market titles and rules
- **Keyword boost** — exact keyword matches in titles get a relevance boost

Searches across all supported exchanges: Kalshi, Polymarket, Limitless, Predict.fun, Opinion Labs, Gemini, Manifold, ForecastEx, and PredictIt.

Requires Max, Admin, or Enterprise plan.

## Use cases

- Find markets using natural language descriptions
- Discover markets you wouldn't find with keyword search
- Search by concept rather than exact market titles
- Cross-exchange market discovery by topic

## Example

- Request: `POST /api/v1/search/semantic`
- Header: `X-API-Key: YOUR_API_KEY`
- Body: `{"query": "fed rate cuts by summer", "active_only": true, "limit": 10}`



## OpenAPI

````yaml /openapi.json post /api/v1/search/semantic
openapi: 3.0.3
info:
  title: Delphi Markets API
  description: >-
    Welcome to Delphi Markets API


    The Delphi Markets API provides unified access to prediction market data
    from **Kalshi (KLSI)** and **Polymarket (POLY)** exchanges.


    Quick Start:


    1. **Get a test API key** - Click on `POST /api/v1/test-key` below and hit
    'Try it'

    2. **Copy your key** - Save the `api_key` from the response

    3. **Authorize** - Click 'Authorize' in the sidebar and paste your key

    4. **Start exploring** - Try any endpoint!


    What You Can Build:


    - **Trading Bots**: Access real-time orderbook data and trade history

    - **Market Analytics**: Analyze market movements, spreads, and liquidity

    - **Research Tools**: Search and filter across thousands of prediction
    markets

    - **Price Feeds**: Get live pricing data for any market


    ---


    Authentication:


    All API requests require an API key passed in the `X-API-Key` header:


    Example request: GET `/api/v1/klsi/markets`

    Header: X-API-Key: dphi_live_your_key_here


    Getting an API Key:


    | Type | Duration | Rate Limit | How to Get |

    |------|----------|------------|------------|

    | Test Key | 10 minutes | 60 req/min | `POST /api/v1/test-key` |

    | Production Key | Permanent | 300 req/min | Contact us |


    ---


    Rate Limits:


    Requests are rate-limited per API key:


    - **Test keys**: 60 requests per minute

    - **Production keys**: 300 requests per minute


    When you exceed the limit, you'll receive a `429 Too Many Requests`
    response. Wait and retry.


    ---


    Error Codes:


    | Code | Meaning |

    |------|---------------|

    | 400 | Bad Request - Invalid parameters |

    | 401 | Unauthorized - Missing or invalid API key |

    | 404 | Not Found - Resource doesn't exist |

    | 429 | Too Many Requests - Rate limit exceeded |

    | 500 | Server Error - Something went wrong |


    All errors return JSON with an `error` field:


    {"error": "invalid api key format"}


    ---


    Support:


    For production API keys or support, visit
    [delphimarkets.com](delphimarkets.com).
  version: 1.0.0
  contact:
    name: Delphi Markets
    url: https://delphimarkets.com
  x-logo:
    url: https://delphimarkets.com/logo.png
servers:
  - url: https://api.delphiterminal.co
    description: Delphi Markets API
security:
  - ApiKeyAuth: []
tags:
  - name: Getting Started
    description: >-
      Start here to get a test API key and begin experimenting with the API.
      Test keys are valid for 10 minutes.
  - name: Health
    description: Health check endpoint to verify the API is operational.
  - name: Auth
    description: >-
      User authentication endpoints for creating accounts and managing sessions.
      Note: These are separate from API key authentication.
  - name: Search
    description: >-
      Search across all markets and events. Includes autocomplete suggestions
      for building search interfaces.
  - name: Delphi
    description: >-
      Cross-exchange market matching via Delphi IDs. Look up cluster metadata
      and find equivalent markets across all supported exchanges.
  - name: Clusters
    description: >-
      Cross-exchange market matching. Markets asking the same question across
      Kalshi, Polymarket, Limitless, and PFun are grouped into clusters. Use
      these endpoints to discover equivalent markets for arbitrage, hedging, and
      cross-exchange analytics.
  - name: KLSI
    description: >-
      Access Kalshi (KLSI) prediction market data including market details,
      orderbooks, trade history, and analytics. Kalshi is a US-regulated
      prediction market exchange.
  - name: Polymarket
    description: >-
      Access Polymarket (POLY) prediction market data including market details,
      orderbooks, and trade history. Polymarket is a decentralized prediction
      market platform.
  - name: Limitless
    description: >-
      Access Limitless exchange prediction market data including orderbooks.
      Limitless is a prediction market platform.
  - name: Predict.fun
    description: >-
      Access Predict.fun exchange prediction market data including price
      history.
  - name: Opinion Labs
    description: >-
      Access Opinion Labs prediction market data including market details,
      orderbooks, price history, and trade history.
  - name: Gemini
    description: >-
      Access Gemini prediction market data including market details, orderbooks,
      price history, and trade history.
  - name: Manifold
    description: >-
      Access Manifold prediction market data including market details,
      orderbooks, price history, and trade history.
  - name: ForecastEx
    description: >-
      Access ForecastEx prediction market data including market details and
      trade history.
  - name: PredictIt
    description: >-
      Access PredictIt prediction market data including market details and price
      history.
  - name: Events
    description: >-
      Events group related markets together. Use these endpoints to browse
      events by category or find all markets within an event.
  - name: Candles
    description: >-
      OHLCV (Open, High, Low, Close, Volume) candle data across exchanges.
      Supports multiple time intervals: 1s, 1m, 5m, 10m, 1h, 1d. Currently
      available for Kalshi (KLSI) with more exchanges coming soon.
  - name: Advanced Analytics
    description: >-
      Advanced orderbook analytics and price data. These endpoints provide
      deeper market insights including historical spreads, liquidity metrics,
      and best quote time series.
  - name: Trading
    description: >-
      Place, query, and cancel orders across all supported prediction-market
      exchanges (Polymarket, Kalshi, Opinion Labs, Gemini, Limitless,
      Predict.fun).


      **Important — client-side signing required for on-chain exchanges.**
      Polymarket, Opinion Labs, Limitless, and Predict.fun use EIP-712 signed
      orders. The signature must be produced on your machine using your private
      key — the Delphi server never has access to it. Use the
      `@delphimarkets/sdk` `build*Order()` helpers to construct a valid
      `signed_order` payload. Raw HTTP calls to `POST /orders` will be rejected
      by the exchange unless `signed_order` contains a valid signature.
  - name: Credentials
    description: >-
      Register and inspect your stored exchange credentials. Each user has at
      most one credential set per exchange. Credentials are encrypted at rest
      and used by the server when forwarding orders to centralized exchanges
      (Kalshi, Gemini) or for credential-derivation flows (Polymarket).
  - name: Polymarket Onboarding
    description: >-
      One-time helpers for Polymarket: derive CLOB HMAC credentials from an EOA
      private key, verify stored credentials are still valid, and look up the
      Gnosis Safe (proxy) address for an EOA. Use these once per user before
      placing your first Polymarket order.
paths:
  /api/v1/search/semantic:
    post:
      tags:
        - Search
      summary: Semantic Market Search
      description: >-
        Search markets by meaning using AI-powered semantic search. Unlike
        keyword search, this understands natural language queries like "will
        interest rates go down" and finds relevant markets even if they use
        different wording.


        Uses hybrid scoring that combines:

        - **Semantic similarity** — matches meaning using embeddings across both
        market titles and rules

        - **Keyword boost** — exact keyword matches in titles get a relevance
        boost


        Searches across all supported exchanges: Kalshi, Polymarket, Limitless,
        Predict.fun, Opinion Labs, Gemini, Manifold, ForecastEx, and PredictIt.


        Requires Max, Admin, or Enterprise plan.


        ## Use cases


        - Find markets using natural language descriptions

        - Discover markets you wouldn't find with keyword search

        - Search by concept rather than exact market titles

        - Cross-exchange market discovery by topic


        ## Example


        - Request: `POST /api/v1/search/semantic`

        - Header: `X-API-Key: YOUR_API_KEY`

        - Body: `{"query": "fed rate cuts by summer", "active_only": true,
        "limit": 10}`
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - query
              properties:
                query:
                  type: string
                  description: Natural language search query.
                  example: fed rate cuts by summer
                exchange:
                  type: array
                  items:
                    type: string
                    enum:
                      - kalshi
                      - polymarket
                      - limitless
                      - predictfun
                      - opinion
                      - gemini
                      - manifold
                      - forecastex
                      - predictit
                  description: >-
                    Filter to specific exchanges. If omitted, searches all
                    exchanges.
                active_only:
                  type: boolean
                  default: false
                  description: If true, only returns markets that are not closed.
                category:
                  type: string
                  description: >-
                    Filter to a specific category (e.g., Politics, Crypto,
                    Sports).
                limit:
                  type: integer
                  default: 20
                  maximum: 100
                  description: Maximum number of results to return.
      responses:
        '200':
          description: Ranked search results with similarity scores
          content:
            application/json:
              schema:
                type: object
                properties:
                  query:
                    type: string
                    description: The original search query.
                  count:
                    type: integer
                    description: Number of results returned.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        market_id:
                          type: string
                          description: Exchange-specific market identifier.
                        exchange:
                          type: string
                          description: Exchange name.
                        title:
                          type: string
                          description: Market title.
                        category:
                          type: string
                          description: Market category.
                        closed:
                          type: boolean
                          description: Whether the market is closed.
                        score:
                          type: number
                          description: >-
                            Similarity score (lower is more relevant). Combines
                            semantic similarity and keyword match boost.
                        delphi_id:
                          type: string
                          description: Delphi cross-exchange cluster ID, if available.
        '400':
          description: Invalid request (missing query)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '403':
          description: Plan does not have access (requires Max or above)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your API key (get one from the test-key endpoint above)

````