Skip to main content
GET
Market detail (by slug)

Path Parameters

slug
string
required

Canonical URL-safe market slug, lowercased kebab-case derived from event.slug + groupItemTitle + title (e.g. real-madrid-vs-manchester-city-real-madrid-to-win-the-tie). Pulled from the slug field on any list response. Required for the root GET /api/markets/{slug} endpoint as of 2026-05-16 (breaking change from the prior {symbol}-keyed lookup; sub-resources still accept {symbol}).

Response

OK

Public shape of a market. Returned by /api/markets, /api/markets/{slug}, and as the markets[] array on Event / Match responses.

id
string<uuid>
eventId
string<uuid>

Parent admin.events row.

symbol
string

Operator-facing identifier (e.g. M1V1-RMA-MCI-959311). Used by sub-resource endpoints (/orderbook, /trades, /ohlc, /traders).

slug
string

Canonical URL-safe slug, lowercased kebab-case derived from event.slug + groupItemTitle + title. Required for the root market-detail endpoint GET /api/markets/{slug} (2026-05-16 breaking change; sub-resources still use symbol). Unique across admin.markets.

title
string

Human-readable market title (matches the parent event title for single-market events).

groupItemTitle
string | null

Per-market label inside a multi-market event accordion (Polymarket-style). Null when the market is its own event.

conditionId
string | null

On-chain ConditionalTokens condition id (bytes32 hex). Null until the deployment is confirmed.

questionId
string | null

On-chain question id (bytes32 hex).

yesTokenId
string | null

ERC-1155 position id of the YES outcome (uint256, decimal string). Use for EIP-712 order signing on binary markets.

noTokenId
string | null

ERC-1155 position id of the NO outcome. Null for non-binary markets.

status
enum<string>
Available options:
DRAFT,
PROPOSED,
PRE_MARKET,
OPEN,
PAUSED,
SUSPENDED,
CLOSED,
PENDING_RESOLUTION,
DELAYED,
DISPUTED,
RESOLVED,
VOIDED,
CANCELLED
currentReviewRound
integer
outcomeCount
integer
outcomeLabels
string[]

Outcome labels in fixed order (e.g. ["YES","NO"] or ["Real Madrid","Draw","Barcelona"]).

initialFairValue
string

Single-number seed for binary AMMs. Use initialOutcomePrices for multi-outcome.

initialOutcomePrices
string[]

Per-outcome initial price, parallel to outcomeLabels. Sums to ~1.0. Polymarket-equivalent of outcomePrices.

Decimal number encoded as a string to preserve precision (e.g. '100.5').

feeTakerBps
integer | null

Per-fill taker fee (k × BPS_DIVISOR; peak fee at P=0.5 = feeTakerBps / 4 / 10_000). Null inherits from PlatformFeeConfig.

opensAt
string<date-time> | null
closesAt
string<date-time> | null
kickoff
string<date-time> | null

Real-world fixture kickoff time (mirrors event.eventStartTime).

resolutionWindowHours
integer | null
pausedAt
string<date-time> | null
resolvedAt
string<date-time> | null
payoutNumerators
any | null

Per-outcome payout vector (set on resolve). Null for unresolved markets.

officialDataSource
string | null
sourceMatchId
string | null

External fixture identifier (StatsPerform / API-Football / etc.) used by the oracle.

resolutionCriteria
string | null

Plain-text criteria for settlement. Use resolutionCriteriaUrl on Event for the full complete write-up if needed.

negRiskEligible
boolean

True if this market is part of a negRisk multi-outcome group.

isNewMarketType
boolean
createdAt
string<date-time>
updatedAt
string<date-time>
outcomePrices
string[]

Last-trade price per outcome (parallel to outcomes). Decimal string in USDC.

Decimal number encoded as a string to preserve precision (e.g. '100.5').

vertical
string | null

This market's vertical — the category axis verbatim (football, tennis, crypto, politics, …). Filter the catalog with /api/events?vertical=.

Example:

"crypto"

marketType
string | null

Canonical market type (MATCH_WINNER_AET, CRYPTO_PRICE_EVENT, …). Null for manual/legacy markets AND for machine-minted Up/Down windows — to detect a crypto market branch on crypto / cryptoWindow instead.

crypto
object | null

Machine-readable price rule of a crypto market — the structured counterpart of the human resolutionCriteria text. Null on every non-crypto market. Present on BOTH long-dated crypto markets and Up/Down windows, so crypto !== null is the reliable "is this a crypto market" test.

cryptoWindow
object | null

Short-crypto Up/Down window facts. Populated only on markets materialised from a crypto series window (which also carry crypto with productType: UP_DOWN_WINDOW); null on every other market, long-dated crypto markets included.