Get a Market
Returns one single-leg or multi-leg market and its current status by ticker.
/markets/{ticker}Authorization
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 requested market.
marketMarketrequiredA tradable binary market.
Show propertiesHide properties
legsMarketLeg[]Present only for multi-leg markets; absent for single-leg markets. Each leg selects a component market outcome.
Show propertiesHide properties
MarketLegtickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
outcomestringrequiredThe outcome of this component market selected by the multi-leg market.
yesnoexternal_idsMarketExternalIdsIdentifiers this market carries in third-party data providers' systems.
Show propertiesHide properties
optic_oddsMarketExternalIdsOpticOddsIdentifiers in OpticOdds.
Show propertiesHide properties
fixture_idstringThe OpticOdds fixture this market is priced from.
market_idstringThe OpticOdds market this market is a selection of.
team_idstringThe OpticOdds team this market is about, when the market is about a team.
player_idstringThe OpticOdds player this market is about, when the market is about a player.
tickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
descriptionstringHuman-readable description of what the market resolves on.
statusMarketStatusrequiredMarket trading status.
unopenedopenpausedclosedexpiredtick_sizestringMinimum price increment, in dollars.
minimum_pricestringMinimum allowed order price, in dollars.
maximum_pricestringMaximum allowed order price, in dollars.
expires_atstring<date-time>The configured expiration instant.
external_idsMarketExternalIdsIdentifiers this market carries in third-party data providers' systems.
Show propertiesHide properties
optic_oddsMarketExternalIdsOpticOddsIdentifiers in OpticOdds.
Show propertiesHide properties
fixture_idstringThe OpticOdds fixture this market is priced from.
market_idstringThe OpticOdds market this market is a selection of.
team_idstringThe OpticOdds team this market is about, when the market is about a team.
player_idstringThe OpticOdds player this market is about, when the market is about a player.
series_tickerstringThe series the market is listed under.
event_tickerstringGroups markets on the same game or contest within a series.
titlestringShort display name for the market.
rulesstringThe rules that decide how the market resolves.
strikeMarketStrikeThe threshold the market's outcome is compared with.
Show propertiesHide properties
typeMarketStrikeTypeHow the outcome is compared with the strike value.
greatergreater_or_equallessless_or_equalequalvaluestringrequiredThe strike itself, such as a line or a team name.
unitMarketStrikeUnitHow to read the strike value.
decimalintegerpointsstringboolunknownopens_atstring<date-time>The configured instant the market opens for trading.
notional_valuestringWhat one YES contract pays if the market resolves YES, in dollars.
contract_terms_urlstring<uri>Link to the contract terms the market is listed under.
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 is unavailable.
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" \
-H "UDX-Access-Key: API_KEY_ID" \
-H "UDX-Access-Timestamp: UNIX_MILLISECONDS" \
-H "UDX-Access-Signature: BASE64_SIGNATURE"{
"market": {
"ticker": "UDX-EXAMPLE-MARKET",
"description": "Will the example resolve YES?",
"status": "open",
"tick_size": "0.001",
"minimum_price": "0.001",
"maximum_price": "0.99",
"expires_at": "2026-06-21T00:00:00.000000Z",
"external_ids": {
"optic_odds": {
"fixture_id": "20260927A1B2C3",
"market_id": "player_points",
"player_id": "7G8H9I0J1K2L"
}
}
}
}{
"market": {
"ticker": "UDX-EXAMPLE-MULTI",
"description": "The first market resolves YES and the second resolves NO.",
"status": "open",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A",
"outcome": "yes",
"external_ids": {
"optic_odds": {
"fixture_id": "20260927A1B2C3"
}
}
},
{
"ticker": "UDX-EXAMPLE-MARKET-B",
"outcome": "no",
"external_ids": {
"optic_odds": {
"fixture_id": "20260927D4E5F6"
}
}
}
]
}
}{
"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:request-admission-unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "request admission is temporarily unavailable",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}