Error
errorError code
messageHuman-readable error message
PredictionMarketsError
errorPrediction Markets error class
fieldRequest field associated with the error, when available
messageHuman-readable error detail, when available
AuthErrorResponse
resultreasonAuthentication or authorization error class
messageHuman-readable authentication or authorization detail
AccountGroupBlockedError
errorcodeTermsNotAcceptedError
errormessageRestrictedSellOnlyError
errormessagePredictionMarketsTerms
termsTypeTerms type identifier
versionLatest terms version
contentTerms content to display before acceptance
updatedAtUTC timestamp when the terms content was last updated
PredictionMarketsTermsStatus
hasAcceptedLatestWhether the account group has accepted the latest configured Prediction Markets terms
acceptedVersionLatest terms version accepted by the account group, if any
latestVersionLatest configured Prediction Markets terms version, if available
MarketStatus
Status of a prediction market
OrderType
Order type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.
TimeInForce
Order execution behavior:
good-til-cancel- Order remains active until filled or cancelled (default)immediate-or-cancel- Fill immediately or cancel remainingfill-or-kill- Fill entire order immediately or cancel
Contract
idlabelHuman-readable label (e.g., "Yes", "No")
abbreviatedNameShort form label (e.g., ">$90")
descriptionRich text description
pricesCurrent bid/ask pricing for the contract
totalSharescolorstatusStatus of a prediction market
imageUrlcreatedAtexpiryDateresolutionSideThe outcome being traded (Yes or No)
resolvedAttermsAndConditionsUrltickerinstrumentSymboleffectiveDatemarketStateTrading state of the contract
sortOrderDisplay order within the event
Strike price information for Up/Down crypto contracts
settlementValueThe observed settlement price. Only present after the contract is settled.
sourceDeprecated: use the event-level sourceDetails (agency + index) instead. Data source identifier for price observation (e.g., "GRR-KAIKO_BTCUSD_60S"). Present for crypto Up/Down contracts.
Strike
valueThe strike price value. Null for "reference" type strikes where the value is determined at availableAt time.
typeStrike type - "reference" for Up/Down contracts, "above" for Higher/Lower contracts
availableAtWhen the strike price becomes available
Event
idtitleslugdescriptionimageUrltypeType of prediction market
categoryseriestickerThe event ticker (e.g., "BTC100K2028")
statusStatus of a prediction market
resolvedAtcreatedAtTradeable contracts within this event
volumeTotal trading volume in USD
liquidityTotal liquidity in USD
tagseffectiveDateexpiryDatesubcategoryNested category information for the event
sourceDetailsStructured data source information for price observation. Replaces the deprecated flat source string on the event and contract. Present for crypto Up/Down events. Both fields are omitted when not available.
Settlement information for resolved events
sourceDeprecated: use sourceDetails (agency + index) instead. Data source identifier for price observation. Aggregated from contracts for crypto Up/Down events.
Settlement
valueThe observed settlement value (e.g., the price at expiry for crypto contracts)
ContractMetadata
contractIdcontractNamecontractTickereventTickereventNamecategorycontractStatuseventTypeEvent type ("binary" or "categorical")
expiryDateresolvedAtresolutionSideWinning outcome if resolved ("yes" or "no")
parentEventTickerParent event ticker for sub-events
startTimeStart datetime (ISO 8601)
ComboLeg
comboIdInternal ID of the parent combo contract
legIndexZero-based position of this leg in the combo
contractIdInternal ID of the underlying single contract
requiredOutcomeThe outcome this leg must settle for the combo to settle YES ("Yes" at launch)
legOutcomeThe outcome this leg has settled to, if resolved ("Yes" or "No"). Null while the leg is still active.
resolvedAtUTC timestamp when this leg resolved. Null while still active.
Full metadata for the underlying single contract
ComboResponse
Metadata for the combo contract itself (ticker, status, expiry, etc.)
Ordered list of legs that make up this combo
OrderRequest
symbolContract instrument symbol
orderTypeOrder type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.
sidequantityNumber of contracts
priceLimit price (0-1 range)
outcomeThe outcome being traded (Yes or No)
stopPriceThe price to trigger a stop-limit order (0-1 range). Only available for stop-limit orders. See Stop-Limit Orders above for stopPrice/price constraints.
timeInForceOrder execution behavior:
good-til-cancel- Order remains active until filled or cancelled (default)immediate-or-cancel- Fill immediately or cancel remainingfill-or-kill- Fill entire order immediately or cancel
makerOrCancelSet to true to require maker-only behavior. If the order would immediately take liquidity, the order is cancelled instead of filling.
PlaceOrderBatchRequest
Orders to submit. Every entry is validated before any order is submitted. All orders use the account associated with the authenticated request.
BatchOrderResponse
orderIdstatussymbolsideoutcomeThe outcome being traded (Yes or No)
orderTypeOrder type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.
timeInForcequantityOriginal order quantity
filledQuantityAmount filled so far
remainingQuantityAmount remaining to fill
priceLimit price
createdAtupdatedAthashOrderIdHashed order ID; omitted when unavailable
clientOrderIdClient-provided order ID; omitted when unavailable
globalOrderIdGlobal order ID; omitted when unavailable
stopPriceStop trigger price; omitted unless populated for a stop-limit order
avgExecutionPriceAverage price of fills; omitted when unavailable
cancelledAtCancellation time; omitted unless the order was cancelled
promoCashAppliedPromotional cash reserved or applied to the order; omitted when unavailable
fundsOnHoldCash reserved for the unfilled portion of a resting buy order; omitted when unavailable
PlaceOrderBatchSuccessResult
An accepted order returned for one batch entry.
PlaceOrderBatchErrorResult
errorError class for a rejected entry
messageHuman-readable detail for a rejected entry
PlaceOrderBatchResult
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: order | |
| type = object · requires: error, message |
An accepted order returned for one batch entry.
PlaceOrderBatchResponse
One result for each submitted order, in request order.
CancelOrderBatchRequest
Order IDs to cancel. Each ID may be an integer or a quoted numeric string. All IDs are validated before any cancellation is attempted.
CancelOrderBatchSuccessResult
orderIdOrder ID from the corresponding request entry.
resultCancelOrderBatchErrorResult
orderIdOrder ID from the corresponding request entry.
errorError class for a rejected cancellation
messageHuman-readable detail for a rejected cancellation
CancelOrderBatchResult
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: orderId, result | |
| type = object · requires: orderId, error, message |
orderIdOrder ID from the corresponding request entry.
resultCancelOrderBatchResponse
One result for each requested cancellation, in request order.
OrderResponse
orderIdhashOrderIdclientOrderIdglobalOrderIdstatussymbolsideoutcomeThe outcome being traded (Yes or No)
orderTypeOrder type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.
quantityOriginal order quantity
filledQuantityAmount filled so far
remainingQuantityAmount remaining to fill
priceLimit price
stopPriceStop trigger price (populated for stop-limit orders)
avgExecutionPriceAverage price of fills
createdAtupdatedAtcancelledAtPosition
symbolinstrumentIdtotalQuantityTotal position size
quantityOnHoldQuantity currently on hold from open orders
avgPriceAverage entry price
outcomeThe outcome being traded (Yes or No)
pricesCurrent bid/ask/last-trade prices for the contract
resolutionSideWinning outcome ("yes" or "no") if the contract has resolved
isAboveAutoStartThresholdWhether the position is above the auto-start threshold
isLiveWhether the market is currently live/active
realizedPlRealized profit/loss from sells
marketValueMark-to-market value of the position in USD at the current sell price (bestBid for YES, bestAsk for NO). Absent from the response when the held outcome has no live sell quote (no liquidity to sell into) — surface a no-liquidity state rather than a price the user cannot transact at. lastTradePrice is still returned for display. Treat as Optional<T>.
unrealizedPnlUnrealized P&L in USD (marketValue - costBasis). Absent whenever marketValue is absent. Treat as Optional<T>.
unrealizedPctUnrealized P&L as a percentage of cost basis. Expressed as a percent (e.g. 12.5 represents 12.5%, not 0.125); rounded to 4 decimal places. Absent when there is no live sell quote, or when cost basis is zero. Treat as Optional<T>.
SettledPosition
accountIdAccount that held the position
instrumentIdUnique instrument identifier for the contract
instrumentSymbolContract instrument symbol
positionSigned position held at settlement. Positive values represent a yes position; negative values represent a no position.
positionQuantityAbsolute quantity held at settlement (unsigned)
outcomeThe outcome being traded (Yes or No)
payoutPayout received from settlement. 0 when the position lost.
resolutionSideThe winning outcome of the contract
settledAtSettlement timestamp (ISO 8601)
costBasisTotal amount spent to enter the position, net of any prior realized P&L from partial sells. Omitted when cost-basis data is not available.
realizedPnlRealized profit or loss recorded from sells prior to settlement. Omitted when not available.
netProfitNet profit for the position, computed as payout - costBasis + realizedPnl. Omitted when costBasis is not available.
SettledPositionsResponse
totalTotal number of settled positions across all pages for the current filter set.
totalPayoutSum of payout across all settled positions in the filter set. Retained for binary back-compat with the legacy response shape; field is absent (not null) on the unified backend because computing a roll-up over the full filtered set would require a separate aggregate query (deferred until a partner asks). Play's default OptionHandlers omits absent Option fields rather than emitting null.
totalCostBasisSum of costBasis across all settled positions in the filter set. Retained for binary back-compat; field is absent (not null) on the unified backend (see totalPayout).
totalNetProfitSum of netProfit across all settled positions in the filter set. Retained for binary back-compat; field is absent (not null) on the unified backend (see totalPayout).
Cash-outs (early sells before contract resolution) in the same account-scoped time window as the returned page's settled positions. Field is absent (not null) when withCashOuts=true is not passed on the request. positions[] pagination is unaffected — limit/offset continue to scope positions[] only.
totalCashOutProceedsSum of cashOuts[].proceeds over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
totalCashOutCostBasisSum of cashOuts[].costBasis over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
totalCashOutNetProfitSum of cashOuts[].netProfit over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
CashedOutPosition
accountIdAccount that held the position.
instrumentIdContract instrument ID.
instrumentSymbolContract instrument symbol.
timestampWall-clock timestamp when the cash-out order closed (ISO 8601).
filledQuantityQuantity sold (cumulative filled quantity on the cash-out order).
sideAlways sell for cash-outs.
proceedsAmount received from the sale in USD. For prediction sells, proceeds flow through cash_balance rather than closed_orders.total_spend, so the value is derived from position-balance snapshots before/after the fill.
costBasisCost basis allocated proportionally to the filled quantity ((costBasisSpend / costBasisPositionBalance) * filledQuantity).
netProfitRealized P&L from this cash-out fill (proceeds - costBasis). Equals the ledger realized_pl delta on the position-balance row pair around the fill; falls back to 0 under transient market-data lag so a missing post-fill snapshot can't poison the page.
ContractShareVolume
symbolContract instrument symbol
totalQtyTotal taker volume across all participants (in shares)
userAggressorQtyThe authenticated user's taker (aggressor) volume (in shares)
userRestingQtyThe authenticated user's maker (resting) volume (in shares)
MakerRebateRateRule
idStable identifier for this rate rule.
rebate_multiplier_bpsPortion of the maker fee that is rebated, in basis points (10000 bps = 100%).
effective_fromISO-8601 timestamp at which this rule becomes effective. Always present; in practice never null.
categoryMarket category this rule applies to. When absent, the rule applies to all categories.
effective_toISO-8601 timestamp after which this rule is superseded. Omitted when the rule is still current.
MakerRebateRatesResponse
MakerRebatePayout
idStable payout identifier.
total_volume_usdTotal qualifying maker volume contributing to this payout, in USD.
total_rebate_usdTotal rebate paid, in USD.
total_fill_countNumber of qualifying maker fills that contributed to the payout.
statusPayout status (e.g. PENDING, PAID).
paid_atISO-8601 timestamp at which the rebate was credited. Always present; null for payouts that have not yet been paid.
created_atISO-8601 timestamp at which the payout row was created. Always present.
MakerRebatePayoutsResponse
MakerRebateLifetimeSummary
total_earned_usdSum of total_rebate_usd across payouts in the window.
total_fill_countSum of qualifying maker fills across payouts in the window.
total_volume_usdSum of qualifying maker volume (USD) across payouts in the window.
payout_countNumber of payouts in the window. Always present; 0 when no payouts exist in the window.
first_payout_dateDate of the earliest payout in the window, or null if no payouts exist.
last_payout_dateDate of the most recent payout in the window, or null if no payouts exist.
LiquidityRewardsConfig
enabledTrue when the program is fully configured upstream. When false, the response collapses to { "enabled": false } only.
max_spread_centsQuotes wider than this spread score zero in the scoring algorithm. Only present when enabled is true.
min_payout_threshold_usdDaily reward amounts below this threshold are suppressed (sub-threshold accounts get no row at all). Only present when enabled is true.
LiquidityRewardEvent
event_tickerEvent ticker (e.g. BTC2605202100).
titleEvent title.
categoryMarket category.
daily_pool_usdDaily USD reward pool budgeted for this event.
pool_sourceWhether the pool came from a per-event override or the category default.
ends_atISO-8601 timestamp at which the event ends and stops scoring. null when the underlying event has no end timestamp set.
qualifying_maker_countNumber of accounts that met qualifying-maker criteria in the most recent snapshot window for this event.
icon_urlOptional URL for the event icon. Omitted when not configured.
LiquidityRewardsEventsResponse
last_score_dateMost recent date for which scoring has been written. null when no scoring has run yet.
LiquidityEventScore
event_idStable event identifier.
event_nameEvent title.
category_nameMarket category.
normalized_scoreThis account's normalized score for the event on the scoring date (0-1 range as a decimal string).
snapshot_countNumber of snapshots in which this account had a qualifying quote.
total_snapshotsTotal snapshots taken for the event on the scoring date.
event_reward_usdPortion of the day's total reward attributed to this event.
LiquidityDailySummary
payout_dateDate the payout applies to (Eastern Time).
total_reward_usdTotal USD reward for the day across all events the account scored on.
payout_statusStatus of the day's payout (e.g. PENDING, PAID, ZERO_AMOUNT).
paid_atISO-8601 timestamp the day's payout was credited. Always present; null if not yet paid.
Per-event score breakdown showing how the day's total was distributed.
LiquidityRewardsDailySummaryResponse
LiquidityRewardsLifetimeSummary
total_earned_usdSum of total_reward_usd across daily payouts in the window.
payout_countNumber of daily payouts in the window. Always present; 0 when no payouts exist in the window.
first_payout_dateDate of the earliest payout in the window, or null if no payouts exist.
last_payout_dateDate of the most recent payout in the window, or null if no payouts exist.