---
title: "Enumerate active markets for a provider (MMC cursor page)"
method: GET
path: "/markets/active"
tags: ["Markets"]
---

# Enumerate active markets for a provider (MMC cursor page)

`GET /markets/active`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/markets/active`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

Returns one cursor-paginated page of the active-market snapshot for a single provider. If the upstream listing is unavailable or the lookup otherwise fails, the route responds `503 Service Unavailable` ("Active market snapshot is temporarily unavailable") rather than fabricating an empty page — this can also happen for an exchange whose listing isn't ready yet. The response echoes back the validated/lowercased `provider` and a `source` field. `next_cursor` is opaque — pass it back verbatim as `cursor` to fetch the next page; `has_more: false` / `next_cursor: null` marks the last page.

## Query parameters

- `provider` string
- `limit` integer
- `cursor` string

## Response `200`

One page of active markets for the provider.

- MarketsActivePageResponse: One page of the active-market listing for a provider, with `provider`/`source` stamped on by the API.
  - `exchange_id` string, required: Lower-cased exchange id the market is listed under.
  - `markets` MarketsActiveMarket[], required
    - `exchange_id` string
    - `market_id` string
    - `condition_id` string
    - `event_id` string
    - `title` string
    - `neg_risk` boolean
    - `tick_size` number, nullable
    - `taker_base_fee_bps` integer, nullable
    - `fees_enabled` boolean, nullable
    - `category` string, nullable
    - `group_slug` string, nullable
    - `fee_type` string, nullable
    - `status` string, nullable
    - `image` string, nullable
    - `icon` string, nullable
    - `end_date` string, nullable
    - `open_time` string, nullable
    - `outcomes` MarketsActiveMarketOutcome[]
      - `outcome` string
      - `normalized_outcome` string
      - `token_id` string
      - `outcome_index` integer: Present only for exchanges keyed by market_id, index < 2.
      - `side` string: Present only for exchanges keyed by market_id, index < 2.
    - `raw` object: Full upstream provider payload as last captured.
    - `resolution_status` string: Present only once the market has a resolution status recorded.
    - `payout_numerators` integer[]: Present only once CTF payout numerators are known.
    - `resolved_ts` string
    - `proposed_price` number
    - `challenge_window_ends_at` string
  - `count` integer, required: Number of markets in this page (`markets.length`).
  - `next_cursor` string, nullable, required: Opaque cursor for the next page, or null if this is the last page.
  - `has_more` boolean, required
  - `provider` string, required: Echo of the validated/lowercased `provider` query param.
  - `source` string, required: Opaque internal origin marker. NOT a stable part of the contract — its value may change without notice; do not depend on or switch on it.

## Other responses

- `400`: Unknown/inactive provider.
- `401`: No valid credential presented — missing/invalid API-key headers, or an invalid/expired session token.
- `403`: Authenticated but not permitted. Three distinct causes: the session user is not invited (`Invite required`), the API key lacks the operation's scope, or API-key access to the requested venue is switched off (`API access is disabled for <provider>`). Admin and API-key callers bypass the invite check; session and admin callers bypass scope and venue checks.
- `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`: No active-market listing is ready for this provider yet, or the upstream lookup failed.

---

[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)
