{
"category": "crypto",
"created_at": "2026-08-07T10:00:00Z",
"description": "Resolves from the final Coinbase BTC-USD trade price before the close date.",
"display_type": "probability",
"effective_taker_fee_rate_bps": 200,
"featured": false,
"id": 12345,
"image_url": "https://cdn.calibri.io/events/btc-70k.png",
"markets": [
{
"category": "crypto",
"close_at": "2026-07-22T18:00:00Z",
"ctf_no_token_id": "9876543210987654321098765432109876543210",
"ctf_yes_token_id": "1234567890123456789012345678901234567890",
"description": "Resolves YES if the Coinbase BTC-USD close on 31 Dec 2026 is above $70,000.",
"determination_at": "2026-07-23T10:00:00Z",
"event_id": 12345,
"event_rank": 1,
"event_slug": "btc-above-70k-december-2026",
"event_title": "Will BTC close above $70,000 on 31 Dec 2026?",
"group_item_title": "Above $70,000",
"id": 54321,
"image_url": "https://cdn.calibri.io/markets/btc-70k.png",
"market_id": "54321",
"open_at": "2026-07-21T10:00:00Z",
"outcome_labels": [
"<string>"
],
"price_settlement": {
"candle_start": "2026-07-22T18:00:00Z",
"close": 69200.5,
"granularity_seconds": 300,
"open": 68500.75,
"symbol": "BTC-USD",
"tie": false
},
"price_target": {
"cap_strike": 77500,
"comparator": "gte",
"floor_strike": 75000,
"threshold": 77000
},
"quote_currency": "usdc",
"resolution_source": "Coinbase BTC-USD",
"result": "yes",
"rules": "Settles on the final Coinbase BTC-USD trade price before 23:59:59 UTC.",
"settlement_panel": {
"description": "First consult these sources",
"entries": [
{
"name": "Coinbase",
"tier": "primary",
"url": "https://www.coinbase.com/price/bitcoin"
}
],
"id": 456,
"inherited_from_series": false,
"name": "Primary Sources",
"terms_url": "https://calibri.io/hub/terms-of-use"
},
"status": "active",
"terms": {
"cap_strike": 77500,
"floor_strike": 70000,
"kind": "threshold",
"measure": {
"at": "2026-09-17T00:00:00Z",
"basis": "close",
"granularity_seconds": 60,
"window_start": "2026-09-16T16:00:00Z"
},
"settles_on": "coinbase_spot",
"strike_type": "greater_equal",
"underlying": {
"source": "coinbase",
"symbol": "BTC-USD"
}
},
"title": "Will BTC close above $70,000 on 31 Dec 2026?"
}
],
"outcome_structure": "independent",
"price_feed": [
123
],
"series": {
"frequency": "daily",
"generated": true,
"id": 789,
"slug": "daily-btc-close",
"title": "Daily BTC Close"
},
"slug": "btc-above-70k-december-2026",
"status": "active",
"subcategory": {
"icon": "SportsSoccer",
"id": 15,
"label": "Soccer",
"parent": {
"icon": "SportsSoccer",
"id": 10,
"label": "Sports",
"slug": "sports"
},
"slug": "soccer"
},
"tags": [
{
"id": 111,
"label": "Wimbledon",
"slug": "wimbledon"
}
],
"taker_fee_rate_bps_override": 200,
"title": "Will BTC close above $70,000 on 31 Dec 2026?"
}Event
"crypto"
CreatedAt (RFC3339, from events.created_at) backs the "newest" list sort. Before it was surfaced, "newest" fell back to id DESC.
"2026-08-07T10:00:00Z"
"Resolves from the final Coinbase BTC-USD trade price before the close date."
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.
"probability"
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.
200
false
12345
"https://cdn.calibri.io/events/btc-70k.png"
Show child attributes
Show child attributes
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.
"independent"
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 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.
Show child attributes
Show child attributes
"btc-above-70k-december-2026"
"active"
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.
Show child attributes
Show child attributes
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.
Show child attributes
Show child attributes
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.
200
"Will BTC close above $70,000 on 31 Dec 2026?"