List events
/api/v1/eventsfilter=sports_live returns leaf-category sections (no pagination); any other value (or none) returns a flat keyset-paginated list. Category metadata lives at GET /categories/:slug.
Query Parameters
Category slug (root or leaf). Descendants are included. Omit for an unscoped global listing.
Root slug the request originated under, used to disambiguate a category slug that exists in more than one tree. It is part of the cursor fingerprint, so keep it identical while paging.
Narrow by event-type bucket.
Value in
- "games"
- "props"
Named filter key (e.g. sports_live, sports_futures).
Filter catalogue results to the AGARA exchange.
Value in
- "AGARA"
Drop events whose window has already ended, and events with no market left to trade. A RECURRING_PROPOSITION is retained while its next cycle is still PROVISIONED, which does not accept orders, so check market.state before placing one. Defaults to false.
Value in
- "true"
- "false"
Filter by resolution status. resolved covers both RESOLVED and VOID; active matches not-yet-resolved events. Omit (or all) for no filter.
Value in
- "all"
- "active"
- "proposed"
- "disputed"
- "resolved"
Order within the lifecycle buckets (LIVE, ACTIVE, ENDED, PROPOSED, DISPUTED, CLOSED), all descending: time, volume, or markets (pooled market count). Omit for the default time-based bucketing.
Value in
- "time"
- "volume"
- "markets"
Opaque keyset cursor returned by a previous page.
Page size. Default 20, max 100.
1 <= value <= 10020Opt into lean listing_markets enrichment on non-GAME items (PROPOSITION / RECURRING_PROPOSITION main market; MULTI_OUTCOME top-2 candidates). Defaults to false.
Value in
- "true"
- "false"
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/api/v1/events"{ "events": [ { "event_type": "GAME", "market_count": 0, "display": { "image_url": "string", "banner_url": "string", "icon_url": "string", "description": "string", "subtext": "string", "display_date": "string", "liquidity": 0, "has_three_way_markets": true, "has_prop_markets": true, "has_legacy_prop_markets": true, "market_categories": [ "string" ], "tags": [ "string" ], "resolution_source": "string", "layout": "regular", "game_unit_label": "Game", "spreads_main_market_id": "string", "totals_main_market_id": "string", "agara_cms": { "property1": null, "property2": null }, "team_a": { "name": "string", "abbreviation": "string", "logo_url": "string", "color": "string", "record": "string", "sport_slug": "string", "league_slug": "string", "provider_id": "string", "source_team_id": "string" }, "team_b": { "name": "string", "abbreviation": "string", "logo_url": "string", "color": "string", "record": "string", "sport_slug": "string", "league_slug": "string", "provider_id": "string", "source_team_id": "string" }, "sport_slug": "string", "league_slug": "string", "format_label": "string", "spreads_main_line": 0, "totals_main_line": 0 }, "game_state": { "id": 0, "score": { "sport": "tennis", "match": { "a": 0, "b": 0 }, "sets": [ { "a": 0, "b": 0, "tiebreak": { "a": 0, "b": 0 } } ] }, "match": { "lifecycle": "scheduled", "live_label": "string" } }, "id": "string", "slug": "string", "title": "string", "is_accepting_orders": true, "is_live": true, "is_group_root": true, "start_time": "string", "end_time": "string", "volume_micro": "string", "primary_category": { "slug": "string", "label": "string" }, "main_market_id": "string", "resolution_status": "ACTIVE", "state": "DRAFT", "main_market_group": { "neg_risk_id": "string", "markets": [ { "id": "string", "state": "DRAFT", "exchange": "AGARA", "slug": "string", "question": "string", "display_type": "BINARY", "source_market_type": "string", "outcomes": [ { "id": "string", "index": 0, "label": "string", "price_micro": "string", "token_id": "string", "best_bid_micro": "string", "best_ask_micro": "string", "spread_micro": "string", "kind": "team_home", "short_label": "string", "team_side": "home", "side": "left", "threshold": 0, "resolution_price_micro": "string", "bet_slip_title": "string", "resolution_label": "string", "display": { "label": "string", "kind": "team_home", "short_label": "string", "team_side": "home", "side": "left", "threshold": 0, "bet_slip_title": "string", "resolution_label": "string", "agara_cms": { "property1": null, "property2": null } } } ], "is_accepting_orders": true, "halted_at": "string", "halted_reason": "string", "volume_micro": "string", "liquidity": "string", "volume_24h_micro": "string", "tick_size_micro": "string", "engine_config": { "tick_size": 0, "price_scale": 0, "size_scale": 0, "min_price": 0, "max_price": 0 }, "min_order_size_micro": "string", "line": "string", "resolution_status": "DISPUTED", "resolution_outcome": "string", "resolved_at": "string", "resolution": { "source": "string", "reference_value": "string", "observed_value": "string", "observed_at": "string" }, "archived_at": "string", "condition_id": "string", "neg_risk_id": "string", "three_way_role": "home", "is_three_way": true, "game_number": 0, "display_label": "string", "lp_incentive": { "pool_micro": "string", "max_spread_micro": 0, "min_shares_micro": "string" }, "display": { "image_url": "string", "portfolio_title": "string", "description": "string", "resolution_source": "string", "resolution_criteria": "string", "resolution_sources": [ { "title": "string", "url": "string" } ], "player_name": "string", "stat_type": "string", "liquidity": 0, "cadence_seconds": 0, "series_color": "string", "reference_price": "string", "currency": "string", "reference_at": "string", "observe_at": "string", "band_index": 0, "band_lower": "string", "band_upper": "string", "band_label": "string", "pyth_feed_id": "string", "pyth_benchmark_symbol": "string", "tradingview_symbol": "string", "pyth_pro_symbol": "string", "security_symbol": "string", "security_provider": "string", "game_number": 0, "is_three_way": true, "three_way_role": "home", "display_label": "string", "agara_cms": { "property1": null, "property2": null } } } ] } } ], "pagination": { "next_cursor": "string", "limit": 0 }, "sections": [ { "category": { "slug": "string", "label": "string" }, "event_ids": [ "string" ] } ]}Event detail GET
Returns the event + its group markets + curated "see also" relations + leaf category paths. Most event types ship every market in the group; RECURRING_PROPOSITION events serve a window: the live cycle group uncapped, up to 50 newest unsettled cycles, 49 soonest upcoming cycles, and 50 newest settled cycles - whole cycles only. A child-event slug resolves to its group root — clients should compare slug on the response and redirect to the canonical URL if it differs. Archived events 404.
Get market by id GET
Fetch a single market by its UUID, with its state and full outcomes. Same shape as an element of the event-detail markets[]. 404 when no non-archived market with that id exists.