Skip to main content
PredictStreet groups one or more markets under an Event. A single match (Real Madrid vs Manchester City) typically maps to one event with one binary market. A tournament (UEFA Champions League winner) maps to one event with many per-team markets shown as a Polymarket-style accordion via groupItemTitle. Every public market response includes the parent event slug; every event response carries its full markets array. Most clients query GET /api/events for the home grid and fall back to GET /api/markets/{symbol} for the trading detail page.

Event shape

Football metadata fields

Crypto events

An event in the crypto vertical carries a cryptoSeries block when its markets belong to a recurring Up/Down series; every other event carries null. The factory creates one event per series per UTC day, so an Up/Down event is a day of windows (~96 at the 15-minute cadence) — navigate it through GET /api/crypto-series/{id}/windows rather than through markets[], which only nests the currently tradeable ones.
Long-dated crypto events (price thresholds, monthly closes) have cryptoSeries: null — their markets carry the rule in crypto.

Per-market fields driven by the event grouping

Filtering

Filters AND across fields and OR within a field. The multi-value fields (stage, group, team, tag, vertical, competition, scope, asset, cadence) accept repeated keys (?tag=a&tag=b) or CSV (?tag=a,b) — both forms can be mixed, up to 20 distinct values per field, duplicates collapsed. Events with no public-status (OPEN / PRE_MARKET / PAUSED / PROPOSED) market are excluded from the response entirely — the public surface never returns “empty” events.

Tags

The tag taxonomy is admin-curated rather than free-form. Use GET /api/tags for the full active list and the slug as the value for ?tag=.
isFeatured tags are surfaced in the primary navigation strip; non-featured tags remain selectable through filter UI but are not pinned.