List Combos
Returns a page of multi-leg (combo) markets — markets composed of two or more legs.
GET
/combosAuthorization
None. This operation accepts unauthenticated requests.
Query parameters
limitintegerMaximum number of items to return in one page. Defaults to 10 when omitted; must be an integer from 1 to 100. A value outside that range is rejected with 400 rather than silently clamped. A returned next_page_url preserves the effective value.
min 1 · max 100 · default: 10
pagestringOpaque token identifying the requested page. Clients should not construct or extract this value; follow next_page_url from the previous response unchanged instead.
max length 512
sortstringField to sort combo markets by. Defaults to event_date. The ticker is appended as a tie-breaker.
default: "event_date"
Allowed:
event_datetickerorderstringSort direction. Defaults to desc. Applies to the default sort field when sort is omitted. Nulls sort last in both directions.
default: "desc"
Allowed:
ascdescHeader parameters
UDX-VersionstringDated API version (YYYY-MM-DD). Omit to use the oldest supported version. An unknown version returns `400`.
max length 10
Responses
200A page of combo markets.
combosCombo[]requiredOne page of combo markets.
max items 100
Show propertiesHide properties
Array of
CombotickerTickerrequiredA market identifier (ticker) — a human-meaningful natural-key symbol, not a UUID. Unique per market.
min length 1 · max length 128
event_tickerstringIdentifier of the event this market belongs to.
max length 128
descriptionstringHuman-readable description of what the market resolves on.
max length 2048
statusMarketStatusrequiredMarket trading status. `open` accepts orders; `closed` and `paused` do not; `expired` is past its expiry; `settled` has resolved to an outcome.
Allowed:
openclosedpausedexpiredsettledevent_datestringApproximate date of the real-world event, as YYYY-MM-DD.
max length 10
tick_sizeobjectMinimum price increment, in dollars.
Show propertiesHide properties
objectminimum_priceobjectMinimum allowed order price, in dollars.
Show propertiesHide properties
objectmaximum_priceobjectMaximum allowed order price, in dollars.
Show propertiesHide properties
objectexpires_atstring<date-time>When the market expires. UDX timestamps use RFC 3339; requests require an explicit UTC offset and zero to six fractional digits; responses use UTC with exactly six fractional digits.
max length 40
volumeobjectTotal contracts traded on the market.
Show propertiesHide properties
objectopen_interestobjectOpen interest, in contracts.
Show propertiesHide properties
objectlegsComboLeg[]requiredThe two-or-more legs that compose the combo.
min items 2 · max items 100
Show propertiesHide properties
Array of
ComboLegtickerTickerrequiredA market identifier (ticker) — a human-meaningful natural-key symbol, not a UUID. Unique per market.
min length 1 · max length 128
opposing_sidebooleanrequiredWhether this leg trades on the side opposing the combo (the NO side of the leg's underlying market).
next_page_urlNextPageURL | nullrequiredRoot-relative URL for the next page, including the effective limit, sort, order, filters, and opaque cursor. Follow it unchanged with the same authentication. Null when there are no more items. It never contains credentials or an authority/host.
max length 4096 · matches ^/[^/\s#][^\s#]*$
400The request doesn't conform to this spec.
typestring<uri-reference>A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
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.
max length 40
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.
max length 500
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
429The public request rate was exceeded. Wait for `Retry-After`.
typestring<uri-reference>A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
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.
max length 40
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.
max length 500
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
500Something went wrong on UDX's side.
typestring<uri-reference>A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
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.
max length 40
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.
max length 500
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
503Request admission is unavailable. Retry later.
typestring<uri-reference>A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
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.
max length 40
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.
max length 500
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
Request
curl -X GET "https://{hostname}/combos"const response = await fetch("https://{hostname}/combos", {
method: "GET"
});import requests
response = requests.get(
"https://{hostname}/combos",
)Response
{
"combos": [
{
"ticker": "UDX-EXAMPLE-COMBO",
"event_ticker": "UDX-EXAMPLE-EVENT",
"description": "A two-leg example combo.",
"status": "open",
"event_date": "2026-06-21",
"tick_size": "0.01",
"minimum_price": "0.01",
"maximum_price": "0.99",
"expires_at": "2026-06-21T00:00:00.000000Z",
"volume": "500",
"open_interest": "120",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A",
"opposing_side": false
},
{
"ticker": "UDX-EXAMPLE-MARKET-B",
"opposing_side": true
}
]
}
],
"next_page_url": null
}{
"title": "Bad Request",
"status": 400,
"detail": "request did not pass validation",
"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"
}{
"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"
}