Skip to main content
Every per-market route takes a market universal id. Three routes lead you to one.
  1. Search by title. GET /public/v1/markets/search?q=bitcoin returns matching events, prefix matches first, then by volume. An empty q ranks every event by volume.
  2. Read an event. GET /public/v1/events/{universal_id} returns its active markets with their ids, plus up to 6 recently resolved markets. An event merged into another answers 404.
  3. Walk every event. GET /public/v1/events lists active events in id order. Each summary carries the venues’ own ids (kalshi_event_ticker, poly_event_slug, limitless_event_id, predictfun_event_id), so one walk maps a venue id to a universal_id.
With the ids in hand, GET /public/v1/prices/snapshot reads up to 50 market ids per snapshot request.

What is not offered yet

  • No direct lookup by a venue’s own id.
  • No sort, and no filter by date, volume, liquidity or text on /events.
  • Reading N events costs 1 + N calls.
  • No search cursor and no category filter on search.
  • Markets outside matched cross-venue events are not served.