---
title: "Get a prediction market by ID"
method: GET
path: "/v4/data/prediction/markets/{id}"
tags: ["Prediction API"]
---

# Get a prediction market by ID

`GET /v4/data/prediction/markets/{id}`

/v4/data/prediction/markets/{id}

**100 credits per API call**

Retrieve a single prediction market by its platform-native identifier.

Accepted `id` formats:

*   Polymarket — condition id (`0x` + 64 hex characters).
*   Kalshi — market ticker (e.g. `KXELONMARS-99`). Tickers are uppercase alphanumeric with optional `-` and `_` separators.

**Other notes**

*   Returns `404` when the market does not exist on either platform.
*   Returns `400` when the `id` does not match either accepted format.
*   `volumeUnit`, `liquidity` and `chain` follow the same per-platform rules as the listing endpoint.

## Path parameters

- `id` string, required

## Response `200`

OK

- PredictionMarketResponse — Single prediction market.
  - `data` PredictionMarket, required — Market row as nested inside an event. Same shape as the top-level `PredictionMarket` minus the `chain` block (which is only surfaced on the dedicated markets endpoints).
    - `id` string, required — Platform-native market identifier (Polymarket condition id or Kalshi market ticker).
    - `platform` 'polymarket' | 'kalshi', required — Prediction-market platform identifier.
    - `eventId` string, nullable, required — Parent event id. Polymarket numeric event id, or Kalshi event ticker. `null` when the upstream does not group this market under an event.
    - `question` string, required — Human-readable market question.
    - `description` string, nullable, required — Long-form description or resolution rules.
    - `category` string, nullable, required — Category label, when available.
    - `tags` string[], required — Free-form tag slugs. May be empty on Kalshi.
    - `imageUrl` string, nullable, required — Image / icon URL for the market, when available.
    - `status` string, required — Verbatim upstream status string. Richer than the `?status=` filter enum — values can include `paused`, `archived`, `settled`, `determined`, etc.
    - `openTime` string, date-time, nullable, required — ISO-8601 timestamp the market opened for trading.
    - `closeTime` string, date-time, nullable, required — ISO-8601 timestamp the market closes / closed for trading.
    - `settleTime` string, date-time, nullable, required — ISO-8601 timestamp the market is expected to settle.
    - `outcomes` PredictionMarketOutcome[], required — All outcomes of the market.
      - `name` string, required — Outcome label.
      - `price` number, required — Current probability in [0, 1].
      - `tokenId` string, nullable, required — Polymarket CTF token id for this outcome (numeric string). `null` on Kalshi — Kalshi outcomes are not tokenised.
    - `volume` number, required — Total volume in `volumeUnit` units.
    - `volumeUnit` 'usd' | 'contracts', required — Unit for `volume` and `totalVolume` fields. `usd` on Polymarket (dollar-denominated notional); `contracts` on Kalshi (contract count — not USD).
    - `liquidity` number, nullable, required — Quoted-resting-orders depth. `null` on Kalshi — the upstream markets feed does not populate this; aggregate orderbook depth client-side if you need it.
    - `resolution` PredictionMarketResolution, required — Resolution payload populated only after a market has settled. `null` on every active or paused market.
      - `outcome` string, required — Winning outcome name (matches one of the market's `outcomes[].name`).
      - `resolvedAt` string, date-time, required — ISO-8601 timestamp the market was resolved at.
      - `txHash` string, nullable, required — On-chain resolution transaction hash when available. `null` on Kalshi (the resolution is recorded off-chain on Kalshi's side).
      - `source` string, nullable, required — Resolution source attribution (e.g. `uma`, `kalshi`). `null` when the upstream does not expose it.
    - `createdAt` string, date-time, nullable, required — ISO-8601 timestamp the market was created upstream.
    - `source` PredictionMarketSource, required — Upstream platform attribution for a market or event row.
      - `platform` 'polymarket' | 'kalshi', required — Prediction-market platform identifier.
      - `platformId` string, required — Platform-native identifier. Polymarket condition id (0x + 64 hex) or numeric event id; Kalshi market or event ticker.
      - `url` string, required — Canonical public URL on the source platform.
    - `chain` PredictionMarketChain, required — On-chain references for a market. Populated for Polymarket (Polygon CTF); `null` on Kalshi which has no on-chain footprint.
      - `chainId` integer, required — EVM chain id (Polymarket runs on Polygon — chainId 137).
      - `conditionId` string, nullable, required — CTF condition id (0x + 64 hex).
      - `tokenIds` object, nullable, required — Outcome token ids keyed by outcome name.
        - `yes` string, nullable
        - `no` string, nullable
      - `resolutionSource` string, nullable, required — Resolution-source URL or identifier (UMA on Polymarket).

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `404` — Market not found on any supported platform.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/versions/8622ee4b8fae/schema)
