Get Market By Slug
Resolve a market by its slug for short-URL / SDK lookups.
Tries Redis MARKET_SLUG_INDEX_PREFIX first, then the
markets table, then the R2 archive — same chain the root
/markets/by-slug handler uses, but typed and gated by
X-API-Key on the v1 surface.
Wrapped in a 60 s endpoint-level Redis cache (override via
MARKET_BY_SLUG_CACHE_TTL_S). Slug → condition_id mapping is
stable; even closed markets stay reachable for the full TTL.
Negative-404 caching: gated on MARKET_DETAIL_NEG_CACHE_TTL_S
(default 0 = off; operator opt-in commonly 15 s). Trade-off when
enabled: a brand-new on-chain market surfaces up to the configured
TTL late on this endpoint until the negative-cache entry expires.
Authorizations
Issue from /v1/keys (or admin-issued for enterprise tier).
Headers
Your PolySimulator API key
Polymarket-CLOB-compat alias for X-API-Key (underscore form). SDK clients ported from Polymarket can authenticate without changing header names. X-API-Key takes precedence when both are provided.
PM-CLOB-compat dashed-form alias for X-API-Key. Same value semantics as POLY_API_KEY but with HTTP-conventional dash separators. Both spellings are accepted end-to-end.
PM-CLOB-compat: Authorization: Bearer ps_live_... (or ps_test_...) is accepted as an alias for X-API-Key so py-clob-client and other ported SDKs authenticate without header name changes. Bearer JWTs are NOT accepted here — use the dashboard-auth endpoints for those.
Path Parameters
Response
Successful Response
What this market is called inside its event group (e.g. "Bernadette Wilson" for "Will Bernadette Wilson win the 2026 Alaska governor election?"). null when the market sync has not computed one yet — fall back to question.
CLOB token ids for this market's outcomes ([yes_id, no_id]). Pass to /v1/clob/book/{token_id} to fetch the L2 order book. May be null for archived markets with no tracked outcomes.
Rolling 24-hour volume in USD — the volume traded on this market over the trailing 24 hours, and nothing else. Stringified for floating-point precision safety. null when no 24-hour figure has been reported for this market yet — distinct from "0", which means the market traded zero volume in the last 24 hours. For the all-time figure use volume_total.
Cumulative all-time volume in USD for this market, since it opened. Stringified for floating-point precision safety. null when no cumulative figure has been reported yet — distinct from "0", which means the market has never traded. This is a much larger number than volume_24h for any market older than a day.
Last trade price for the YES token (0.0–1.0 implied probability). Stringified for precision. null when untracked; for the real-time top-of-book bid/ask use live_price.buy / live_price.sell.
PM-shape per-outcome token list. Each entry carries {token_id, outcome, price, winner} — the documented Polymarket contract that py-clob-client reads. price is the YES/NO probability at response-build time; winner is True only when the market is resolved AND this outcome is the settled winner (NEVER derived from price >= 0.99). For the legacy CLOB asset-id string list use clob_token_ids.
PM-shape: alias of condition_id (the on-chain market identifier). PM SDKs read this key by name; we surface the same value under both keys for cross-SDK compatibility.
PM-shape: alias of slug. PM SDKs use market_slug; polysim has historically used slug. Both are exposed with the same value so SDKs that branch on either key work.
PM-shape: negative-risk routing flag. true when the market is part of a negative-risk auction (single-winner across many outcomes); false for standard binary. null if not classified — treat as false.
SEO redirect target: populated with the current canonical slug when this market was requested via a deprecated/historical slug alias.