---
title: "Every market's research in one call"
method: GET
path: "/context"
tags: ["Context"]
---

# Every market's research in one call

`GET /context`

## Request

- Base URL: `https://kellian.app/api/v1`
- URL: `https://kellian.app/api/v1/context`
- Auth: one of:
  - none
  - HTTP bearer
  - API key in cookie `developer_auth`
  - API key in header `x-developer-auth`

## Query parameters

- `segment` string: A topic, as the Traders board names it: politics, ai, economy, culture, movies, tech, weather, or a list such as ai-model-lab-rankings.
- `category` union: A market category: POLITICS, AI, MOVIES_TV, SPORTS, CRYPTO and the rest.
  - 'CRYPTO' | 'SPORTS' | 'POLITICS' | 'ELECTIONS' | 'FINANCE' | 'TECH' | 'WORLD' | 'ECONOMY' | 'CULTURE' | 'WEATHER' | 'SCIENCE_HEALTH' | 'AI' | 'GAMING' | 'BUSINESS' | 'FASHION' | 'MOVIES_TV' | 'MUSIC' | 'SHOPPING' | 'BEAUTY' | 'TRAVEL' | 'CLIMATE' | 'DAILY_LIFE' | 'LOCAL' | 'SOCIAL' | 'FUN' | 'OTHER': The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.
  - string
- `ids` string: Market ids, comma-separated (base:0x…), at most 500. The Free preview answers the first 5 and lists the rest in meta.withheld.
- `all` 'true' | 'false': Every open market, paged. Plus and API Pro; the Free preview returns its 5.
- `since` string, date-time: ISO 8601. Only markets whose record changed after this time.
- `limit` integer: Records per page: default 25; at most 5 Free preview, 200 Plus, 500 API Pro.
- `cursor` string: The nextCursor of the previous page.

## Response `200`

Success

- ContextResponse
  - `markets` ContextRecord[], required
    - `market` object, required
      - `id` string, required
      - `address` string, required: Checksummed or lowercase 20-byte EVM address (0x + 40 hex).
      - `chainId` integer, required
      - `question` string, required
      - `category` 'CRYPTO' | 'SPORTS' | 'POLITICS' | 'ELECTIONS' | 'FINANCE' | 'TECH' | 'WORLD' | 'ECONOMY' | 'CULTURE' | 'WEATHER' | 'SCIENCE_HEALTH' | 'AI' | 'GAMING' | 'BUSINESS' | 'FASHION' | 'MOVIES_TV' | 'MUSIC' | 'SHOPPING' | 'BEAUTY' | 'TRAVEL' | 'CLIMATE' | 'DAILY_LIFE' | 'LOCAL' | 'SOCIAL' | 'FUN' | 'OTHER', required: The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.
      - `chance` number, nullable, required
      - `move24h` number, nullable, required
      - `closes` string, date-time, nullable, required
      - `rules` string, nullable, required
      - `url` string, uri, required
      - `polymarket` string, uri, nullable, required
      - `priceAt` string, date-time, nullable, required
    - `facts` object[], required
      - `date` string, date, required
      - `text` string, required
    - `watchNext` string, nullable, required
    - `headlines` object, nullable, required
      - `last24h` integer, required
      - `total` integer, required
      - `latest` object[], required
        - `title` string, required
        - `outlet` string, required
        - `publishedAt` string, date-time, required
        - `url` string, uri, required
      - `asOf` string, date-time, required
    - `analysts` object, nullable, required
      - `average` number, required
      - `gap` number, nullable, required
      - `count` integer, required
      - `views` object[]
        - `name` string, required
        - `chance` number, required
        - `priceAtTake` number, required
        - `reason` string, nullable, required
        - `takenAt` string, date-time, required
      - `asOf` string, date-time, required
    - `topTraders` object, nullable, required
      - `top` object, nullable, required
        - `list` string, required
        - `listSize` integer, required
        - `holding` integer, required
        - `outcome1` integer, required
        - `outcome2` integer, required
        - `members` object[]
          - `name` string, required
          - `wallet` string, required
          - `side` 'outcome1' | 'outcome2', required
          - `shares` integer, required
          - `lastMove` object, nullable, required
            - `action` 'bought' | 'sold', required
            - `side` 'outcome1' | 'outcome2', required
            - `at` string, date-time, required
      - `profitable` object, nullable, required
        - `holding` integer, required
        - `outcome1` integer, required
        - `outcome2` integer, required
        - `members` object[]
          - `name` string, required
          - `wallet` string, required
          - `side` 'outcome1' | 'outcome2', required
          - `shares` integer, required
          - `lastMove` object, nullable, required
            - `action` 'bought' | 'sold', required
            - `side` 'outcome1' | 'outcome2', required
            - `at` string, date-time, required
      - `asOf` string, date-time, required
    - `researchedAt` string, date-time, nullable, required
  - `nextCursor` string, nullable, required
  - `meta` ContextMeta, required
    - `asOf` string, date-time, required
    - `plan` 'free_preview' | 'plus' | 'api_pro', required
    - `preview` boolean, required
    - `requested` integer, nullable, required
    - `count` integer, required
    - `withheld` string[], required
    - `limits` object, required
      - `marketsPerCall` integer, required
      - `callsPerDay` integer, required
      - `callsLeftToday` integer, required
      - `headlinesPerMarket` integer, required
      - `analysts` 'average only' | 'every analyst with reasons', required
      - `topTraders` 'counts only' | 'names, sides and moves', required
      - `changeFeed` boolean, required
    - `locked` object, required
      - `markets` integer, required
      - `headlines` integer, required
      - `analystViews` integer, required
      - `traderMembers` integer, required
      - `changes` integer, required
    - `upgrade` string, nullable, required
    - `sameAsSite` 'Built from the reads kellian.app serves; the numbers match the market pages.', required
    - `notice` 'Research, not financial advice.', required
    - `affiliation` 'Kellian is not affiliated with Polymarket.', required

## Other responses

- `400`: Error: one of INVALID_PAYLOAD
- `401`: Error: one of AUTH_REQUIRED
- `429`: Error: one of RATE_LIMITED
- `500`: Error: one of INTERNAL_ERROR
- `default`: Error response (RFC 9457 Problem Details for HTTP APIs)

---

[API](https://skmtc.dev/problee/apis/kellian-consumer-api.md) · [All operations](https://skmtc.dev/problee/apis/kellian-consumer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/problee/apis/kellian-consumer-api/revisions/2b8254b0ec57?raw)
