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

# Get a prediction-market event by ID

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

/v4/data/prediction/events/{id}

**100 credits per API call**

Retrieve a single prediction-market event by its platform-native identifier. Useful for hydrating event detail pages or following links from a listing.

Accepted `id` formats:

*   Polymarket — numeric event id (e.g. `12345`).
*   Kalshi — event ticker (e.g. `KXELONMARS`). Tickers are uppercase alphanumeric with optional `-` and `_` separators.

**Other notes**

*   Returns `404` when the event does not exist on either platform.
*   Returns `400` when the `id` does not match either accepted format.
*   `markets` is populated only when `includeMarkets=true` is passed; otherwise it is `null`.
*   `volumeUnit` and `totalLiquidity` follow the same per-platform rules as the listing endpoint.

## Path parameters

- `id` string, required

## Query parameters

- `includeMarkets` boolean

## Response `200`

OK

- PredictionEventResponse — Single prediction-market event.
  - `data` PredictionEvent, required — Top-level event row — a grouping of one or more markets sharing a question or outcome set. Aggregate fields (`marketCount`, `totalVolume`, `totalLiquidity`) are server-computed roll-ups over the event's markets.
    - `id` string, required — Platform-native event identifier (Polymarket numeric id or Kalshi event ticker).
    - `platform` 'polymarket' | 'kalshi', required — Prediction-market platform identifier.
    - `title` string, nullable, required — Event title.
    - `description` string, nullable, required — Long-form event description, when available.
    - `category` string, nullable, required — Event 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 event, when available.
    - `status` string, required — Verbatim upstream status string. Richer than the `?status=` filter enum.
    - `openTime` string, date-time, nullable, required
    - `closeTime` string, date-time, nullable, required
    - `marketCount` integer, required — Number of markets attached to this event.
    - `totalVolume` number, required — Sum of nested-market 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).
    - `totalLiquidity` number, nullable, required — Sum of nested-market quoted liquidity. `null` on Kalshi events because the underlying market liquidity is not exposed there.
    - `markets` union[], required — The event's markets. **Never null.** - When the request passes `includeMarkets=true`, each entry is a full market object. - Otherwise (default, `includeMarkets=false`), each entry is a **market ID string**. The id is exactly what the get-market-by-id endpoint accepts — copy an id and call `GET /v4/data/prediction/markets/{id}` to fetch that market's full details.
      - union
        - string — Market ID — pass to `GET /v4/data/prediction/markets/{id}`.
        - PredictionEventMarket — 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.
    - `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.

## 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` — Event 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)
