Get Market Details
Retrieves market or group data using either an Ethereum address or a slug identifier
winningOutcomeIndex, an index into the fixed outcomeTokens: ['Yes', 'No'] array:winningOutcomeIndex: 0— YES resolvedwinningOutcomeIndex: 1— NO resolvednull— either the market is not yet resolved, or it resolved to a split (see below)
0 = Up (the YES side — the market resolves Up when the reference price ends strictly higher) and 1 = Down. Picking Up means buying tokens.yes.prices format. On CLOB markets, prices is [yesMidpoint, noMidpoint] as decimal fractions between 0 and 1 (for example [0.715, 0.285]; the pair sums to ≈ 1). AMM markets quote percent-style values between 0 and 100 — the schema example showing values like 42.8 reflects that AMM shape. Branch on tradeType before parsing rather than assuming one scale.metadata.chainlinkDataStream. Read streamType to tell the two apart: "spot" markets resolve on an instantaneous price, while "twap" markets resolve on a time-weighted average over twapWindowSeconds — the closing TWAP is compared against the Price to Beat captured from the same stream at open (greater than or equal resolves Up). The market’s description always names the exact feed, window, and tolerance. See Market Resolution.status: RESOLVED, winningOutcomeIndex: null, and a payoutNumerators array of two non-negative integers whose ratio defines the payout. [50, 50] pays each side equally; [70, 30] pays YES holders 70% and NO holders 30%. Both sides are redeemable at that ratio through the same redeem endpoint. Winner-take-all resolutions leave payoutNumerators as null and populate winningOutcomeIndex. To detect a split, check for status: RESOLVED with winningOutcomeIndex === null and a non-null payoutNumerators.tokens.yes / tokens.no to human outcome labels. Every individual market’s token pair is always YES / NO in the API — there is no per-token label field for custom outcomes like “Up” / “Down” or “Norway” / “England”. The mapping to a human label depends on the market type:- Binary single market (e.g. “Will ETH close above $3,000?”):
tokens.yes= the question resolves true,tokens.no= the question resolves false. The market’stitle/proxyTitlecarries the semantic meaning. - Recurring up-or-down price market (CLOB, e.g. “BTC Up or Down 15 Min”): a single binary market whose outcomes are labeled Up/Down. Up is the YES side: the market resolves Up when the reference price ends strictly higher than the open. Picking Up = buying
tokens.yes; picking Down = buyingtokens.no. - Directional AMM market (e.g. “BTC Up or Down - 5 Min”): each direction is a separate individual market.
tokens.yeson the “Up” market = betting on Up;tokens.noon the same market = the opposite side of that bet. To find the “Down” side, fetch the sibling market from the group. - Negrisk group market (e.g. “Norway vs England: team to advance?”): the group response returns
outcomeTokens: string[](for example["Norway", "England"]) andmarkets[], one submarket per outcome. To trade a specific outcome, callgetMarket()on that submarket’s slug and use itstokens.yes— that YES token represents “this outcome resolves true”. See the Negrisk overview and the TypeScript Negrisk group markets walkthrough.
tokens.up / tokens.down field — always resolve labels from the group’s outcomeTokens array or from the submarket title / proxyTitle.volume field (raw, base units) and volumeFormatted (human-readable USDC). The API does not expose a rolling 24-hour volume field; for time-windowed activity, derive it client-side from Get Feed Events (filter trade events by timestamp).status values. The response’s status field is one of:FUNDED— the market is live and accepting trades. The default for active markets.LOCKED— trading is paused on the market: orders cannot be placed or filled, but existing positions remain. A market typically entersLOCKEDshortly before resolution (after the deadline, while the winning outcome is being determined) or when an operator manually halts it. The market resumes asFUNDEDif unlocked, or transitions toRESOLVEDonce the outcome is set.RESOLVED— the winning outcome is known.winningOutcomeIndexis populated and winners can redeem their CTF positions. See Lifecycle after a trade.FUNDED_FLAGGED— the market is live but flagged for review (for example, pending resolution clarification). Treat it asFUNDEDfor trading purposes unless your integration wants to surface the flag to users.DRAFT— the market exists but has not been funded yet and is not tradeable.
settings object carries takerDelayMs — the market’s taker delay in milliseconds (0 = none, the default). When it is greater than 0, marketable (taker) orders on this market are briefly held before the matching engine fills them and order submission becomes asynchronous (the create-order response returns settlementStatus: "DELAYED" with an eligibleAt; track the fill over subscribe_order_events). Read settings.takerDelayMs to detect delay-enabled markets before placing taker orders. postOnly (maker) orders are never delayed.Path Parameters
Response
Market or group details with pricing and volume data
- Option 1
- Option 2
- Option 3
CLOB market with position IDs and trading data
Market ID
7494
Condition ID
"0x947b8e6812bf8ac27687fa25b642d6a25bf5c7292068e5aef129d9d26e9780b8"
NegRisk request ID
null
Market description
Market title
Proxy title
Expiration date
Expiration timestamp
Created timestamp
Updated timestamp
Categories
Market status
Is expired
Tags
Volume
Formatted volume
Prices
Is rewardable
Market slug
Trade type
"clob"
Market type
"single"
Priority index
Winning outcome index
Market logo
Market source (e.g. ugm:crypto, ugm:sports)
Schedule frequency for timeline
"minutely"
Schedule sub-frequency for timeline
"minutes_5"
Feed events