---
title: "Get Market"
method: GET
path: "/markets/{ticker}"
tags: ["Markets"]
---

# Get Market

`GET /markets/{ticker}`

Fetch a single Kalshi market by ticker or a single Polymarket market by condition ID. When `venue` is omitted, the API infers Polymarket for condition IDs that look like `0x...`; otherwise it looks up the market as Kalshi.

## Path parameters

- `ticker` string, required

## Query parameters

- `venue` 'kalshi' | 'polymarket' — Source venue for a market.

## Response `200`

Market details

- object
  - `data` Market
    - `ticker` string — Unique market identifier on its venue. **Kalshi**: market ticker (e.g. `KXBTC-25FEB07-T100000`). **Polymarket**: `condition_id`, the 0x-prefixed hex string from Polymarket's CTF (e.g. `0x4d2…`); not the gamma id, question id, or market slug. Yes/no CLOB token ids are not returned by this API.
    - `event_ticker` string — Event identifier the market belongs to. **Kalshi**: event ticker (e.g. `KXBTC-25FEB07`). **Polymarket**: Gamma `event_slug` (falls back to `market_slug` when no parent event exists).
    - `series_ticker` string — Series identifier the event belongs to. **Kalshi**: series ticker (e.g. `KXBTC`). **Polymarket**: Gamma `market_slug` — Polymarket has no native series concept, so we key whitelisting on the market slug.
    - `title` string
    - `subtitle` string, nullable
    - `yes_sub_title` string, nullable
    - `no_sub_title` string, nullable
    - `bet_group` string, nullable — Polymarket-only: section label for the row (e.g. "Match O/U 21.5"). Always null on Kalshi rows.
    - `category` string
    - `subcategory` string, nullable
    - `frequency` string, nullable — Cadence of the underlying series: daily/weekly/monthly/hourly/other. Null for categories without timeframe pills.
    - `venue` 'kalshi' | 'polymarket' — Source venue for a market.
    - `status` string
    - `yes_bid` number
    - `yes_ask` number
    - `no_bid` number
    - `no_ask` number
    - `last_price` number
    - `price_to_beat` number, nullable — Reference price for Polymarket up/down markets. Null on Kalshi and on non-up/down Polymarket markets.
    - `volume` integer
    - `volume_24h` integer
    - `open_interest` integer
    - `venue_url` string, nullable — Canonical market URL on its source venue.
    - `open_time` string, date-time
    - `close_time` string, date-time
    - `expiration_time` string, date-time
    - `exclusion_keys` string[] — Parlay-correlation keys. Two markets **cannot co-exist in the same parlay if (and only if) their `exclusion_keys` arrays intersect** — i.e. share at least one string. Apply a pure set-intersection; there is no rule table to maintain client-side. The keys encode every correlation rule (cross-series exclusion groups, threshold ladders, same-game sports family/kind/participant correlation, Polymarket sub-events). Keys are opaque and namespaced by reason and scope (e.g. `kp:<gameKey>:moneyline|spread`, `grp:<idx>:<eventKey>`, `fam:<gameKey>:<series>`), and are derived solely from the market itself, so a selected leg can snapshot its keys and compare them later. The plain one-leg-per-event rule (same `event_ticker`) is intentionally not encoded here. Always present; an empty array means the market participates in no correlation rule.

## Other responses

- `400` — Validation error
- `404` — Resource not found

---

[API](https://skmtc.net/totalistrading/apis/totalis-rfq-api.md) · [All operations](https://skmtc.net/totalistrading/apis/totalis-rfq-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/totalistrading/totalis-rfq-api/versions/b0adb9a590b4/schema)
