Prediction markets API

One prediction-market event's identity, lifecycle and windowed stats

One event: what is being bet on, whether it is open or settled, and its windowed activity. The markets that price it are a separate read.

GET/api/external/prediction/prediction-event/{id}

What it returns

One event's full detail, addressed by the id from GET /prediction/prediction-events. This is a DIFFERENT universe from the rest of this API: the id here is never a token mint or contract address. A well-formed but unrecognised id returns every field null rather than a 404.

Chains

This endpoint is not tied to a chain: it takes no chain in its request.

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/prediction/prediction-event/<id>"
Parameters
ParameterDescription
id

path · string · required

A prediction-market event id (groups one or more markets, e.g. a multi-candidate election) — not a token mint or contract address, and not scoped to any chain this API otherwise supports.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of One prediction-market event's identity, lifecycle and windowed stats
FieldTypeDescription
idstring | null
questionstring | null
protocolstring | nullThe venue this event trades on, e.g. "POLYMARKET" or "KALSHI".
statusstring | nullOne of OPEN, SUSPENDED, RESOLVED, CANCELLED, PENDING.
urlstring | nullThe venue's own page for this event.
tagsstring[] | null
opensAtnumber | nullUnix seconds the event opened for trading.
closesAtnumber | nullUnix seconds trading closes.
resolvesAtnumber | nullExpected resolution time, Unix seconds.
resolvedAtnumber | nullActual resolution time, Unix seconds — null while unresolved.
resolutionobject | nullNull while unresolved, or when the venue does not publish one even after resolution — measured on a multi-market event whose per-market outcome, not a single event-level result, decides it.
resolution.resultstring | null
resolution.sourcestring | null
categoriesobject[] | null
categories[].namestring | null
categories[].slugstring | null
categories[].subcategoriesunknown[] | null
marketsobject[]Every market that makes up this event. Empty for an unrecognised event id.
markets[].idstring | null
markets[].labelstring | null
markets[].questionstring | null
lifecycleobject
lifecycle.ageSecondsnumber | null
lifecycle.expectedLifespanSecondsnumber | null
lifecycle.timeToResolutionSecondsnumber | null
lifecycle.isResolvedboolean | null
lifecycle.winningOutcomeIdstring | nullNull even for a resolved multi-market event — measured live: a moneyline event's "winner" is per-MARKET, not a single event-level outcome.
allTimeVolumeUsdnumber | nullLifetime trading volume across this event's markets, USD.
statsHour1object
statsHour1.volumeUsdnumber | nullTrading volume across this event's markets over the window, USD.
statsHour1.tradesnumber | nullNumber of trades over the window.
statsHour1.uniqueTradersnumber | nullDistinct trading accounts over the window — null on venues that do not report it (measured: Kalshi).
statsDay1object
statsDay1.volumeUsdnumber | nullTrading volume across this event's markets over the window, USD.
statsDay1.tradesnumber | nullNumber of trades over the window.
statsDay1.uniqueTradersnumber | nullDistinct trading accounts over the window — null on venues that do not report it (measured: Kalshi).

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key