---
title: "Get one canonical event's members and judgment lineage"
method: GET
path: "/api/prediction-markets/canonical/{key}"
tags: ["public-pm-data"]
---

# Get one canonical event's members and judgment lineage

`GET /api/prediction-markets/canonical/{key}`

## Request

- Base URL: `https://api.coinrithm.com`
- URL: `https://api.coinrithm.com/api/prediction-markets/canonical/{key}`
- Auth: none required

Keyless canonical-event detail by UUID or slug: venue members with
orientation (same/flipped/unknown — never price-inferred), confidence
and provenance basis, plus an append-only judgment lineage. A MERGED
canonical still resolves (status='merged' + mergedInto pointer) so a
stable key never 404s.

Full specification — identifier permanence, orientation semantics, the
adoption steps, and what is deliberately NOT guaranteed:
https://github.com/CoinRithm/coinrithm-agent-trading/blob/main/EVENT_ID_STANDARD.md

`orientation: flipped` means the member is stated BACKWARDS relative to
the anchor: read its probability as 100 - p before comparing. `unknown`
means not yet judged and is served as-is — never collapse it to `same`,
which is the silent error this field exists to prevent. `title` is a
snapshot taken at creation and is never refreshed; read
members[].eventTitle for current venue wording.

## Path parameters

- `key` string, required

## Response `200`

Canonical event detail

- PublicPmCanonicalDetailResponse
  - `canonical` object, required
  - `mergedInto` object, nullable
  - `consensus` PublicPmCanonicalConsensus: The cross-venue reference probability for one canonical question. Every open member holding a current reference must agree on the full tuple (cluster, kind, outcome, probability, venueCount, spread, writer version, weight basis); rows of different versions or bases are never merged. A binary reference additionally needs every holder aligned with the canonical anchor. Any disagreement yields null instead of a pick.
    - `kind` 'binary' | 'leader', required: binary = the Yes side; leader = the leading named outcome.
    - `outcomeName` string, nullable, required: Label of the leading outcome; null for a binary reference.
    - `probability` number, required: Consensus probability in percent (0-100).
    - `venueCount` integer, required: Number of venues that contributed a voice.
    - `spreadPoints` number, required: Cross-venue spread in probability points.
    - `computedAt` string, date-time, required: Validated computation (heartbeat) time, not a quote or trade time.
    - `methodologyVersion` string, required: The version this reference was written with (v2 and v3 are both served during the 2026-10-14 transition).
    - `weightBasis` 'open_interest' | 'liquidity', nullable: Unit the venues were weighted in. Every v2 row is `liquidity`; null for a v3 row without a recognised basis.
    - `listings` object[], required: Public listings of member events that hold this reference. May be a subset of the contributing venues and may include several listings of one venue; its length is not venueCount.
      - `source` string, required
      - `eventSlug` string, required
  - `consensusHistory` PublicPmCanonicalConsensusPoint[]: Daily consensus tape, oldest first, up to 90 days. A series is returned only when one outcome identity holds for the whole window; otherwise it is empty. Each point carries its own row's identity. Absent on a merged canonical.
    - `day` string, date, required
    - `kind` 'binary' | 'leader', required
    - `outcomeName` string, nullable, required: This point's own outcome label; null for a binary reference.
    - `probability` number, required
    - `venueCount` integer, required
    - `spreadPoints` number, required
    - `methodologyVersion` string: Writer version of this day's row; a day is grouped per (version, weight basis).
    - `weightBasis` 'open_interest' | 'liquidity', nullable: Unit the venues were weighted in; every v2 row is `liquidity`.
  - `members` object[], required
    - `source` string
    - `sourceName` string
    - `eventSlug` string
    - `eventTitle` string
    - `eventStatus` string
    - `isAnchor` boolean
    - `orientation` 'same' | 'flipped' | 'unknown'
    - `confidence` number
    - `basis` string, nullable
  - `lineage` object[], required

## Other responses

- `400`: Invalid or missing parameters. On a route with a query allowlist, an undocumented query parameter returns `{"error": "unsupported_query_parameter", "message": "Unsupported query parameter: <key>. Supported: <keys>."}`.
- `404`: Resource not found. A path the API does not serve at all returns `{"error": "not_found", "message": "not_found"}` with `Cache-Control: no-store`.
- `500`: Server error

---

[API](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api.md) · [All operations](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/llms.txt) · [OpenAPI document](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/revisions/28fb59f285fe?raw)
