Skip to main content
GET
Event by slug

Path Parameters

slug
string
required

Event slug

Query Parameters

market_sort
string

Order of markets[]: default (operator rank, else probability desc), az or za

include
string

Comma list of books, recent, klines; unknown names are ignored

include_limit
integer

How many leading markets get the bundle, 1-12 (default 6)

period
integer

k-line period in minutes, as /k-line takes it (default 1)

kline_limit
integer

k-line rows, 1-10000 (default 30)

Response

OK

category
string
Example:

"crypto"

created_at
string

CreatedAt (RFC3339, from events.created_at) backs the "newest" list sort. Before it was surfaced, "newest" fell back to id DESC.

Example:

"2026-08-07T10:00:00Z"

description
string
Example:

"Resolves from the final Coinbase BTC-USD trade price before the close date."

display_type
string

DisplayType (events.display_type) picks the chart SOURCE, not the market shape: "probability" (default) plots the markets' own YES probability, "price_feed" plots an underlying feed with a reference line.

Example:

"probability"

effective_taker_fee_rate_bps
integer

EffectiveTakerFeeRateBps is the resolved fee rate the matching engine will charge for trades in any of this event's markets. Computed at load time as: COALESCE(override, category default). NULL/nil means UNRESOLVED — no override and no fee_categories row for the category — which order placement rejects (distinct from a resolved 0 = free). Read-only — not persisted as its own column.

Example:

200

Example:

false

id
integer
Example:

12345

image_url
string
Example:

"https://cdn.calibri.io/events/btc-70k.png"

markets
object[]
outcome_structure
string

OutcomeStructure (events.outcome_structure) says how this event's markets relate to one another. It selects the frontend layout and is deliberately NOT derivable from len(Markets) — a contender race, a strike ladder and a fixture's derivative bundle can all carry a dozen markets and none of them renders like the others.

independent — one question, or several unrelated ones (the default) one_winner — at most one market resolves YES; ranked, sums to ~100% ladder — nested thresholds over one variable ("above $100k", "above $110k"). Several legs resolve YES together so it is not one_winner, but the legs are nested so it is not independent either: prices fall monotonically down the ladder, ordered by markets.event_rank.

Kalshi carries the same three as MECNET / DIRECNET / none.

Display + validation only. Neither Kalshi's collateral netting nor Polymarket's NegRiskAdapter is implemented on our side.

Example:

"independent"

price_feed
integer[]

PriceFeed (events.price_feed) carries {source, symbol, reference_price} for the price_feed layout. Passed through opaquely — pythia never interprets it. nil when unset.

series
object

Series is the FEED this event came from — Polymarket's atp / mls-2025, Kalshi's series_ticker. Usually absent: a one-off competition has no feed behind it, and Polymarket returns series: [] on every Wimbledon event including the matches. Omitted from JSON when unset.

slug
string
Example:

"btc-above-70k-december-2026"

status
string
Example:

"active"

subcategory
object

Subcategory is the browse SUBJECT — the leaf of the two-level category tree, carrying its parent for a breadcrumb. Exactly one per event and often absent, because an event may sit directly under its top-level category.

Not a replacement for Category above: that stays the fee key. This is what the browse chips and the /categories drilldown are built from.

tags
object[]

Tags are the editorial SHELVES this event sits on — what puts it on a hub page. Many-to-many and deliberately not taxonomic: "Wimbledon" collects the men's winner race, the women's winner race and every match, which share no series and no outcome structure. Always present (possibly empty) so the frontend need not nil-check.

taker_fee_rate_bps_override
integer

TakerFeeRateBpsOverride mirrors events.taker_fee_rate_bps_override (NULL = inherit from category default, or global default if no category row). Persisted to the DB; included in JSON for admin consumers.

Example:

200

title
string
Example:

"Will BTC close above $70,000 on 31 Dec 2026?"