Event
The object returned by Get Oddpool ID by ticker, Get a matched event, and each item in List matched events.The event id (
OPI-XXXXXXXX).Event display title.
Free-text category, sourced from Kalshi (e.g.
Sports). Not a closed enum; may be null for uncategorized events.ISO 8601 timestamp of the last time the event’s canonical state was refreshed. Advances on new outcomes, settlement reclassification, and divergence re-validation, not on price or volume. Use it as the high-water mark for incremental sync via
classified_since.The event as each venue lists it, one entry per venue. See Event venue listing.
Per-venue-pair settlement classification, one entry per pair of venues that both list the event. See Event venue pair.
Event venue listing
An entry in the event’svenue_listings. Names the parent event on one venue.
Listing id (
OPL:…).kalshi, polymarket, or polymarket_us.The venue’s identifier for the parent event.
Raw question text from the venue at the time of mapping.
Event venue pair
An entry in the event’svenue_pairs. Fungibility is a property of a venue pair, not a scalar on the event, so an event on N venues has one entry per pair. Venues are precedence-ordered (kalshi < polymarket < polymarket_us).
First venue in the pair.
Venue A’s event id. Names the exact venue event the pair relates (needed when a canonical event spans several events on one venue; redundant in the common 1:1 case).
Second venue in the pair.
Venue B’s event id.
The settlement-rule axis: whether the two venues agree on when, by what authority, and under what timing window the event resolves.
The outcome-list correspondence axis: how much the two venues’ outcome sets line up.
Outcome
An entry in the event’soutcomes.
Outcome id (
OPO:…).Display label: an entity name, bucket descriptor,
Yes, etc.The structural type of the outcome.
Type-specific structured parameters. Numeric kinds carry
outcome_params.bucket; will_happen_by_date carries outcome_params.deadline; binary and multi_class_named are {}. See outcome_params shapes. Additional non-load-bearing keys may appear alongside bucket / deadline (unmatched_in_counterparty, residual, audit keys). Rely on bucket / deadline and ignore unknown siblings.The canonical entity this outcome refers to, or
null for non-entity outcomes such as Tie or Other. See Entity.The tradeable side of this outcome on each venue, the ids you subscribe to. See Outcome venue listing.
Per-venue-pair fungibility for this outcome, one entry per pair of venues that both list it. See Outcome venue pair.
outcome_params shapes
Outcome venue listing
An entry in an outcome’svenue_listings, one venue’s tradeable side of the outcome.
Listing id (
OPL:…).kalshi, polymarket, or polymarket_us.The venue’s native identifier for this tradeable side, the value you trade on.
- Kalshi: the market ticker.
- Polymarket binary YES/NO: the
conditionId. Trade via the CLOB usingconditionIdplus the side’s token below. - Polymarket atomic-binary multi-side:
conditionId#<index>. Split on#to recover the nativeconditionId; the side’s CLOB token is below. - Polymarket US:
<marketSlug>#<YES|NO>. Split on#to recover the order-APImarketSlugand the side. Polymarket US has no CLOB tokens; orders reference themarketSlugand side directly.
The venue’s identifier for the parent event. Kalshi: event ticker. Polymarket and Polymarket US: the event slug (the human-readable id, not the numeric event id).
Polymarket CLOB token id for the YES side.
null on Kalshi and Polymarket US.Polymarket CLOB token id for the NO side.
null on Kalshi and Polymarket US.Raw question text from the venue at the time of mapping.
Outcome venue pair
An entry in an outcome’svenue_pairs, showing whether the outcome’s two venue sides are one tradeable instrument.
First venue in the pair.
Second venue in the pair.
true iff the event leg’s basis_class == identical and divergence_axes == []. When true, the two listings are one tradeable instrument (same payoff, same nominal value, same authority, same timing) and can be treated as one for quoting, hedging, and risk. The one-glance answer.Subset of
{timing, source, condition_scope}: how the two listings settle differently when they are the same nominal outcome. Empty means no axis-level divergence on this leg.condition_scope affects the fungible filter, and when to treat it as tradeable with allow, see Fungibility and cancellation risk.
One-sentence explanation of the specific case, populated when
divergence_axes is non-empty.Entity
The object returned by the entity endpoints, and nested under eachoutcome.entity.
Entity id (
OPE:{KIND}:{slug}).One of
person, team, political_party, cultural_work, geographic_region, organization, event_occurrence.The canonical display name.
Alternate names observed on venues and curated alternates.
Wikidata Q-ID, a stable cross-reference to FEC, bioguide, LEI, sports-reference, MusicBrainz, and other identifier systems.
null for auto-minted entities.Kind-specific structured fields. Shape varies by
kind. For example, Person: country, party_qid, person_kind; Team: league, sport, city, parent_qid; Organization: country, tickers. Values that reference other entities are Wikidata Q-IDs (country: "Q30"). Treat as open JSON: use the keys you recognize, ignore the rest.wikidata when the record is sourced from Wikidata; llm_auto when auto-minted from venue text because no Wikidata match was available.ISO 8601 timestamp of the most recent Wikidata sync, where applicable.