Skip to main content
PMXT normalizes every supported venue to the same three-level shape:
Event  (a topic, like "2028 US Presidential Election")
  └─ Market  (a concrete question, like "Will Gavin Newsom win?")
       └─ Outcome  (a tradable side, like "Yes" @ 0.31)
Every response — from the local sidecar, from the hosted Router, or from a hosted venue pass-through — uses the same field names. Write your client once, switch venues with a config change.

UnifiedMarket

FieldTypeNotes
marketIdstringStable PMXT id (UUID).
eventIdstring | nullParent event, if any.
titlestringHuman-readable market question.
slugstring | nullVenue-native slug, when available.
descriptionstring | nullLong-form resolution criteria.
urlstring | nullCanonical venue URL for the market.
imagestring | nullVenue-hosted image.
categorystring | nullNormalized category (e.g. Sports, Politics).
tagsstring[] | nullFree-form tags from the venue.
volumenumberAll-time volume, in USD (or venue base unit).
volume24hnumberTrailing-24h volume.
liquiditynumberDepth metric — venue-specific, compared like-for-like.
resolutionDatestring | nullISO 8601, UTC.
tickSizenumber | nullMinimum price increment, when the venue exposes one.
statusstring | nullVenue status — active, closed, resolved, …
contractAddressstring | nullOn-chain address, when the venue is on-chain.
outcomesUnifiedOutcome[]See below.

UnifiedOutcome

FieldTypeNotes
outcomeIdstringVenue-native outcome id (token id, side id, …).
marketIdstringBack-reference to the parent market.
labelstringDisplay label (e.g. Yes, No, Donald Trump).
pricenumberLast price, 0–1 for binary venues.
priceChange24hnumberAbsolute change vs 24h ago.
metadataobjectVenue-specific fields (e.g. clobTokenId).

UnifiedEvent

FieldTypeNotes
eventIdstringStable PMXT id.
titlestringEvent title.
slugstring | null
descriptionstring | null
categorystring | null
tagsstring[] | null
volumenumber
volume24hnumber
urlstring | null
imagestring | null
marketsUnifiedMarket[]Child markets. Nested on every event response — no second fetch needed.
Fields that a specific venue doesn’t expose come back as null. That’s intentional — null always means “venue has no value for this field”, never “PMXT failed to populate it”.

Where the shape is defined

The canonical definition lives in core/src/types.ts in the pmxt repo, and every SDK client (TypeScript and Python) mirrors it. The OpenAPI reference is generated from the same source on every pmxt-core release.