Skip to main content

The data model

Every venue lists its own copy of a real-world question. AGG stores each venue’s listing and links equivalent ones together. You trade an outcome. Quotes, direct orders, and limit orders all take a venueMarketOutcomeId. Orderbook and midpoint reads take the market id or the outcome id, depending on the route. The two are not interchangeable. Each object also carries externalIdentifier, the venue’s own id (a Kalshi ticker, a Polymarket token id). Use it to look up AGG ids from venue ids. Market status is one of unopened, paused, open, closed, or resolved. Only open markets can be traded. How a closed or resolved market pays out, including splits and voids, is covered in Market resolution & voids.

Find a market to trade

Each market in data[] carries venueMarketOutcomes[]. Take the outcome’s id. Prices are not on the listing; read them from GET /midpoints or a quote. For full filters and search modes see Building market views and the List venue markets reference.

Matching across venues

AGG links listings of the same event on different venues into a matched cluster. Discovery returns the cluster already assembled, so you do not match markets yourself.
  • GET /venue-events returns one row per cluster, the anchor event. Use its id as your cross-venue key.
  • matchedVenueEvents[], matchedVenueMarkets[], and matchedVenueMarketOutcomes[] list the same event, market, or outcome on the other venues.
  • venues[] and venueCount summarize which venues list it.
You can quote any outcome in a cluster. The quote routes across the matched venues and returns the split in fills[]. See Quotes & smart routing.

aggKey

aggKey is a deterministic key computed from a venue’s own data, on events and markets. It is a convenient filter for fetching every venue’s row for one contract. It is not the cross-venue join key: it is null on many markets, and two members of one cluster can carry different keys. Join on the cluster instead.

Settlement can differ

Venues do not always settle the same question the same way, for example on timing or on a cancelled match. GET /venue-events/:id returns a per-venue breakdown of those differences. Show it before users trade across venues.

Guides

Matched clusters

Anchors, members, which id to join on, and why a cluster can look empty.

Look up by venue identifier

Resolve a Kalshi ticker or Polymarket token id to the full cluster.

aggKey

Fetch every venue’s row for one contract with one key.

Settlement key differences

Show how each venue settles a matched market.