---
title: "List public markets"
method: GET
path: "/markets"
tags: ["ConsumerV1"]
---

# List public markets

`GET /markets`

## Request

- Base URL: `https://kellian.app/api/v1`
- URL: `https://kellian.app/api/v1/markets`
- Auth: none required

## Query parameters

- `marketState` 'open' | 'closed' | 'creator_proposal' | 'challenge' | 'human_voting' | 'council_review' | 'resolved' | 'void': Canonical market state shared by every protocol surface.
- `category` string
- `sort` string
- `dateRange` string
- `endsBefore` string, date-time
- `creator` string
- `chainId` union
  - string
  - number
- `cursor` string
- `limit` union
  - string
  - number
- `collateral` string
- `pricingModel` string
- `search` string
- `match` 'closest'
- `probMin` union
  - string
  - number
- `probMax` union
  - string
  - number
- `electionRegion` 'US' | 'CA' | 'WORLD'
- `electionPlace` string
- `electionOffice` 'senate' | 'house' | 'governor' | 'legislature' | 'provincial_legislature' | 'mayor' | 'president' | 'referendum' | 'council'
- `geoPlace` string
- `geoCountry` string

## Response `200`

Success

- CanonicalMarketListing[]
  - `marketId` integer, required
  - `address` string, required
  - `chainId` integer, required: Compiled protocol release chain ID (Base 8453).
  - `question` string, required
  - `settlement` 'onchain' | 'committed': Which engine settles this market's fills. `onchain` = the market contract holds collateral and outcome tokens, and every fill is its own Base transaction. `committed` = the venue's commit ledger holds them, a fill is paid the instant it matches, and fills are published to Base in batches as standard ERC-1155 transfers under a chained Merkle root — so a trade is recorded on Base a short time after it happens rather than at the moment it happens. Immutable per market, decided by the market's collateral.
  - `category` string, required
  - `marketType` string, required
  - `pricingModel` string, nullable
  - `resolutionTime` string, required
  - `endTime` string, required
  - `marketState` 'open' | 'closed' | 'creator_proposal' | 'challenge' | 'human_voting' | 'council_review' | 'resolved' | 'void', required: Canonical market state shared by every protocol surface.
  - `outcome` integer, nullable, required
  - `prices` MarketPrices, required
    - `outcome1` number, required
    - `outcome2` number, required
    - `outcome3` number
  - `totalVolume` string, nullable, required
  - `volume24h` string, nullable, required
  - `imageUrl` string, nullable, required
  - `marketDate` string, nullable, required
  - `createdAt` string, nullable, required
  - `closeTime` string, nullable, required
  - `outcome1Label` string, nullable, required
  - `outcome2Label` string, nullable, required
  - `outcome3Label` string, nullable, required
  - `resolutionCriteria` string, nullable, required
  - `description` string, nullable, required
  - `collateralToken` string, nullable, required
  - `collateralSymbol` string, nullable, required
  - `createdBy` string, nullable, required
  - `isPermissionless` boolean, required
  - `creatorTier` string, nullable, required
  - `creatorScore` number, nullable, required
  - `geo` MarketGeoTag, required
    - `scope` 'city' | 'region' | 'country' | 'global', required: Precision of the tag. 'global' carries no place fields and renders unpinned.
    - `countryCode` string, nullable, required: ISO-3166-1 alpha-2 country code, gazetteer-validated. Null when scope is global.
    - `place` string, nullable, required: Display name of the resolved place (e.g. 'Kumamoto'). Null when scope is global.
    - `lat` number, nullable, required: Gazetteer-resolved latitude. Null when scope is global.
    - `lon` number, nullable, required: Gazetteer-resolved longitude. Null when scope is global.
    - `derivation` 'explicit' | 'entity_hq', nullable, required: 'explicit' = the question names the place; 'entity_hq' = derived from a named entity's headquarters (render visually distinct). Null when scope is global.

## Other responses

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