---
title: "Get Market"
method: GET
path: "/api/v1/markets/{source}/{market_id}"
tags: ["markets"]
---

# Get Market

`GET /api/v1/markets/{source}/{market_id}`

## Request

- Base URL: `https://api.pdata.world`
- URL: `https://api.pdata.world/api/v1/markets/{source}/{market_id}`
- Auth: none declared

Use when an agent needs the full detail of a single market by its composite key (source + market_id). Returns the market with its parent event reference, current probability, volume, 24h delta, and historical chart points. Includes a `_meta.cite_as` field that the agent can drop directly into its reply.

## Path parameters

- `source` string, required: Platform ID: polymarket / kalshi / manifold / myriad / limitless / predict / opinion / gemini.
- `market_id` string, required: Market ID native to the source. Composite key with `source`.

## Response `200`

Successful Response

- MarketDetailOut: Single-market response: extends MarketOut with `_meta` (agent metadata + cite_as). Kept as a separate wrapper rather than putting `_meta` on MarketOut itself so list responses (Page[MarketOut]) don't carry `_meta` on every item — that would inflate response size O(N) for no agent benefit. The list envelope already carries `_meta` once. Parallels EventDetailOut(EventOut).
  - `source` string, required: Venue the market comes from: polymarket, kalshi, manifold, myriad, limitless, predict, opinion or gemini.
  - `id` string, required: The venue's own market id; unique within `source`.
  - `event_id` string, nullable: Id of the parent event (same `source`). Null for orphan markets.
  - `slug` string, nullable: The venue's URL slug or ticker for the market, if any.
  - `question` string, nullable: The market's full question as the venue titles it. For outcomes of a multi-outcome event this can be a bare label (e.g. `Phoenix Suns`); pair it with `event_title`.
  - `group_item_title` string, nullable: Short outcome label for display under an already-shown event title, e.g. `Lakers` for 'Will the Lakers win the 2026 NBA Championship?'. Null when the venue supplies no separate label.
  - `description` string, nullable: Resolution rules / description text as published by the venue.
  - `image` string, nullable: Image URL published by the venue.
  - `icon` string, nullable: Icon URL published by the venue.
  - `outcomes` string[]: Outcome labels in venue order, usually `["Yes", "No"]`; other pairs exist (e.g. `["Over", "Under"]`, two team names).
  - `outcome_prices` number[]: Price of each outcome in `outcomes` order, in [0, 1] (0.62 = 62 cents on the dollar).
  - `probability` number, nullable: Implied probability of the first outcome (usually YES), in [0, 1]. The venue's own probability where it publishes one, else `outcome_prices[0]`.
  - `spread` number, nullable: Best ask minus best bid on the first outcome, in price units [0, 1]. Null when the venue publishes no order book.
  - `active` boolean, required: The venue's own active flag.
  - `closed` boolean, required: True once the venue has closed the market to trading (it may or may not have resolved yet; see `result`).
  - `start_date` string, date-time, nullable: When the market opened, as the venue reports it (UTC).
  - `end_date` string, date-time, nullable: Scheduled close or expiry, as the venue reports it (UTC).
  - `closed_time` string, date-time, nullable: When the venue actually closed the market (UTC).
  - `result` string, nullable: Venue-reported resolution, as the venue wrote it: usually yes/no (case varies by venue), Kalshi `scalar`, Manifold `CANCEL`/`MKT`, or the winning outcome label for non-Yes/No pairs (e.g. `over 2.5`, `Over`, a team name). Polymarket publishes no result field; for it this is derived from its UMA resolution status `resolved` plus a settlement price >= 0.99. Null until the market resolves.
  - `volume` number, nullable: Lifetime trading volume. Venue-reported, in the venue's own unit and not converted across venues: shares for Polymarket and contracts for Kalshi (each pays $1 at resolution), play-money mana for Manifold, and each other venue's figure as it reports it. Null when the venue publishes no per-market volume (Gemini reports it per event); 0 means genuinely no trading.
  - `volume_24hr` number, nullable: Trading volume over the last 24 hours. Venue-reported, in the venue's own unit and not converted across venues: shares for Polymarket and contracts for Kalshi (each pays $1 at resolution), play-money mana for Manifold, and each other venue's figure as it reports it. Limitless publishes no 24h figure, so pdata derives it from its own snapshots.
  - `prob_24h_change` number, nullable: Change in `probability` over the last 24 hours, as a fraction on the same [0, 1] scale (0.05 = up 5 percentage points; negative = fell): the current value minus the oldest snapshot recorded in the trailing 24h. Null when there is no price, no snapshot in that window, or the market closed >24h ago.
  - `volume_24h_change` number, nullable: Current `volume_24hr` minus the oldest snapshot of it recorded in the trailing 24h, in the same venue unit (positive = more activity than a day earlier). Null when there is no usable history.
  - `normalized_vol_24hr` number, nullable: `volume_24hr` on a 0-100 log scale within its venue. Computed as 100 x ln(v+1)^2 / ln(cap+1)^2, where cap is the venue's largest value (its second largest when the largest is over 5x it), so it compares magnitude across venues where raw volume units do not. Null when the input is null or 0.
  - `normalized_volume` number, nullable: Lifetime `volume` on a 0-100 log scale within its venue. Computed as 100 x ln(v+1)^2 / ln(cap+1)^2, where cap is the venue's largest value (its second largest when the largest is over 5x it), so it compares magnitude across venues where raw volume units do not. Null when the input is null or 0.
  - `liquidity` number, nullable: Liquidity as the venue reports it, in the venue's own unit.
  - `categories` string[]: pdata topic categories of the parent event (e.g. Politics, Sports). Empty for orphan markets and uncategorised events.
  - `countries` string[]: Countries the market concerns, full English names (at most 3), assigned by pdata's AI tagging. Empty when none applies or not yet tagged.
  - `updated_at` string, date-time, required: When pdata last wrote this row (UTC): on every fetch from the venue, and again when pdata recomputes a derived field such as 24h volume, so it can be later than `fetched_at`. It is not when the venue last changed the market.
  - `fetched_at` string, date-time, required: When pdata last fetched this row from the venue (UTC).
  - `added_at` string, date-time, nullable: When this market first appeared in pdata's database (UTC). Null for markets loaded with pdata's initial backfill, whose real first appearance is earlier.
  - `url` string, nullable: Public page for this market on the venue's own website. Null when the venue's URL pattern needs data this row lacks.
  - `event_title` string, nullable: Title of the parent event. Use it with `question` when the question is only an outcome label. Null for orphan markets.
  - `chart_24h` number[], nullable: Last-24h `probability` series in [0, 1], oldest first, at most 50 points. Null when fewer than 2 snapshots exist in the window.
  - `_meta` ResponseMetaResource: Agent metadata for single-resource responses (with cite_as).
    - `attribution` string: Who aggregated this data, under which licence, and whose data it is.
    - `canonical_url` string, required: Stable URL for this resource: the pdata.world page, or the API URL for list responses.
    - `as_of` string, date-time: When this response was generated (UTC).
    - `docs` string: API documentation.
    - `cite_as` string, required: A ready-made citation sentence: what the data says, its as-of date, and the canonical URL. Safe to quote verbatim.
    - `source_url` string, nullable: The same event or market on the venue's own website. NULL for venues without public event pages.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/pdata/apis/pdata-backend.md) · [All operations](https://skmtc.dev/pdata/apis/pdata-backend/llms.txt) · [OpenAPI document](https://skmtc.dev/pdata/apis/pdata-backend/revisions/4c9bf3856786?raw)
