---
title: "Ranked cross-venue links with a union book"
method: GET
path: "/market-links/featured"
tags: ["Markets"]
---

# Ranked cross-venue links with a union book

`GET /market-links/featured`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/market-links/featured`
- Auth: none required

The cross-venue "matches" catalog: every approved global market link (one real-world contract listed on 2–4 venues) for which order execution asserts a union order book per side. Rows are ranked by the largest Discover hourly-volume score across their legs and paged by an opaque `cursor`. Served straight from the catalog cron's Redis keys, rebuilt every 60 s; empty until the first cycle after a deploy. Each leg's `executable` mirrors what `GET /orders/route-fees` on the execution API reports for that venue, so a row says which venues an order can be routed to and which are display-only.

Cached with `Cache-Control: public, max-age=15, s-maxage=30`.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

One page of links in rank order.

- MarketLinksFeaturedResponse
  - `links` MarketLinkRow[], required
    - `id` string, uuid, required: The `MarketLink` id.
    - `title` string, required: The event title from Discover's row for the primary venue, else the link's own title.
    - `image` string, nullable, required
    - `league` string, nullable, required: League named by Discover's sports chip (e.g. `NFL`); null where the chip is the sport itself or the link is not sports.
    - `sport` string, nullable, required: Sport family (e.g. `Football`, `Soccer`).
    - `startTime` string, date-time, nullable, required: Earliest leg expiration; venues close a game market at its scheduled start.
    - `slug` string: The venue's game slug when Discover carries one; absent otherwise.
    - `venues` MarketLinkVenue[], required
      - `provider` 'polymarket' | 'predictfun' | 'kalshi' | 'hyperliquid', required
      - `marketId` string, required: Executor-convention market id (Polymarket condition id, Predict.fun numeric id, Kalshi ticker, Hyperliquid outcome id).
      - `streamKey` string, required: Stream-side id (Polymarket's numeric Gamma id; the market id elsewhere).
      - `marketIdNo` string: The venue market that books the link's NO side where it is not `marketId` (Kalshi lists a game as one ticker per team). Present only on such legs.
      - `streamKeyNo` string
      - `tokenIdYes` string, nullable, required: The token the union book reads for the link's YES side on this venue.
      - `tokenIdNo` string, nullable, required
      - `executable` boolean, required: Whether `GET /orders/route-fees` reports this venue routable for the link; false for a display-only leg.
    - `syntheticIdYes` string, required: Id of the union book for the link's YES side (`synthetic:<id>` on the stream).
    - `syntheticIdNo` string, required
    - `executableVenues` string[], required: Providers whose legs are `executable`, in leg order.
    - `rank` number, required: The largest Discover hourly-volume score across legs; the featured ordering key, never a displayed volume.
    - `sideLabels` object, required
      - `yes` string, required
      - `no` string, required
    - `primary` object, required: The leg whose Discover row supplied the title, else the first executable leg.
      - `provider` string, required
      - `marketId` string, required
  - `nextCursor` string, nullable, required: Pass as `cursor` for the next page; null on the last page.

## Other responses

- `400`: A cursor this endpoint did not issue.
- `422`: Request failed FastAPI parameter validation.
- `429`: Rate limit exceeded for this route's sliding window, keyed on the session `sub` when authenticated and on the trusted client IP otherwise. Honor `Retry-After`. A per-API-key data ceiling (set per credential) rejects with `{"detail": "API key data rate limit exceeded"}` instead of the `error` envelope below.
- `503`: The catalog store could not be read.

---

[API](https://skmtc.dev/kairos/apis/kairos-data-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-data-api/revisions/cf6b76079e38?raw)
