Get a Market's Stats
Returns a market’s open interest, last price, and day and lifetime trading activity.
/markets/{ticker}/statsAuthorization
Optional — this operation also accepts unauthenticated requests.
UDX-Access-KeyAPI key · headerOpaque API key ID.
UDX-Access-TimestampAPI key · headerUnix time in milliseconds, within 30 seconds of server time.
UDX-Access-SignatureAPI key · headerStandard-base64 RSA-PSS/SHA-256 signature with a 32-byte salt.
AuthorizationBearer token (JWT) · headerBearer token for an active signed-in UDX user.
An authenticated request is metered against the member's read bucket and returns RateLimit headers; an unauthenticated request shares the public per-client limit.
Header parameters
UDX-VersionstringDated API version (YYYY-MM-DD).
tickerTickerrequiredThe market's ticker.
200The market's trading activity summary.
statsMarketStatsrequiredA market's trading activity summary.
Show propertiesHide properties
tickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
open_intereststringrequiredContracts held long, which equals contracts held short.
last_pricestringPrice of the most recent trade on any day. Absent until the market has traded.
dayMarketDayStatsrequiredTrading activity in the current trade day. Prices are absent until the market trades in the day.
Show propertiesHide properties
openstringPrice of the day's first trade.
highstringHighest trade price of the day.
lowstringLowest trade price of the day.
volumestringrequiredContracts traded in the day.
notionalstringrequiredDollars traded in the day.
updated_atstring<date-time>requiredWhen the exchange last updated these figures.
lifetimeMarketLifetimeStatsrequiredTrading activity since the market was listed. Prices are absent until the market has traded.
Show propertiesHide properties
highstringHighest trade price since listing.
lowstringLowest trade price since listing.
volumestringrequiredContracts traded since listing.
notionalstringrequiredDollars traded since listing.
trade_countinteger<int64>requiredTrades since listing.
404No market with this ticker exists.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
429The request rate was exceeded. An unauthenticated request shares the public per-client limit; an authenticated request is metered against the member's read bucket.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
500Something went wrong on UDX's side.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
503Request admission or account setup is unavailable, or the read could not be completed in time; retry.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
curl -X GET "https://api.underdogexchange.com/markets/UDX-EXAMPLE-MARKET/stats" \
-H "UDX-Access-Key: API_KEY_ID" \
-H "UDX-Access-Timestamp: UNIX_MILLISECONDS" \
-H "UDX-Access-Signature: BASE64_SIGNATURE"{
"stats": {
"ticker": "UDX-EXAMPLE-MARKET",
"open_interest": "1200",
"last_price": "0.54",
"day": {
"open": "0.51",
"high": "0.56",
"low": "0.5",
"volume": "840",
"notional": "445.2"
},
"lifetime": {
"high": "0.61",
"low": "0.38",
"volume": "19400",
"notional": "9870",
"trade_count": 612
},
"updated_at": "2026-01-01T00:00:00.000000Z"
}
}{
"type": "urn:udx:problem:market-not-found",
"title": "Not Found",
"status": 404,
"detail": "market not found",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:unauthenticated-rate-limit-exceeded",
"title": "Too Many Requests",
"status": 429,
"detail": "this client has temporarily exceeded the public request rate",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:member-rate-limit-exceeded",
"title": "Too Many Requests",
"status": 429,
"detail": "this member has temporarily exceeded its request rate",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:internal-error",
"title": "Internal Server Error",
"status": 500,
"detail": "internal error",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:projection-unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "account setup is still being completed; retry later",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:request-admission-unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "request admission is temporarily unavailable",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:could-not-process-retry",
"title": "Service Unavailable",
"status": 503,
"detail": "could not process request, please retry",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}