API reference · Markets

Get a market

GET/v1/public/markets/{ticker}

One market's public page as data, with its rules, result, latest quote and price history.

On this page

Auth. None. Without a token the call is served as Free (the Free delay and request budget, shared per IP); send Authorization: Bearer lb_… for your plan's.

Limits. Counts against your plan's API requests; anonymous callers also share 30 a minute per IP.

Parameters

Path parameters

NameTypeRequiredDescription
tickerstringyesThe venue ticker (Kalshi) or pm_<id> (Polymarket). Case-insensitive.

Request

Terminal
curl "https://api.langbot.ai/v1/public/markets/SENATETX-26-R"

Response

200 OK

JSON
{
  "ts": 1793685853318,
  "ticker": "SENATETX-26-R",
  "venue": "kalshi",
  "event_id": null,
  "title": "Will Republicans win the Senate race in Texas?",
  "subtitle": "Ken Paxton",
  "status": "open",
  "result": null,
  "category": "elections",
  "category_slug": "elections",
  "close_ts": 1825254000000,
  "open_ts": 1733238000000,
  "volume": 47349153.8,
  "price": 0.27,
  "price_source": "mid",
  "volume_source": "candles",
  "rules_text": "If a representative of the Republican party is sworn in as a Senator of Texas for the term beginning in 2027, then the market resolves to Yes.\n\nThis market i…",
  "rules_primary": "If a representative of the Republican party is sworn in as a Senator of Texas for the term beginning in 2027, then the market resolves to Yes.",
  "rules_secondary": "This market is eligible for accelerated determination after a consensus of media organizations project the winner. See full rules for details.",
  "rules_source": "venue",
  "venue_url": "https://kalshi.com/markets/senatetx",
  "phrases": [],
  "outcome": null,
  "quote": {"yes_bid": 0.26, "yes_ask": 0.28, "ts": 1793685848313, "source": "orderbook"},
  "series": {
    "source": "candles",
    "period_s": 3600,
    "points": [[1778061600000, 0.56], [1778126400000, 0.58]],
    "max_points": 1000,
    "extended": "orderbook_mid",
    "settlement": null,
    "price_source": null
  },
  "change_24h": {"from_ts": 1793505600000, "from": 0.32, "to_ts": 1793685848313, "to": 0.27, "delta": -0.05},
  "moves": [
    {
      "from_ts": 1779210000000,
      "to_ts": 1779310800000,
      "from": 0.49,
      "to": 0.56,
      "delta": 0.07,
      "facts": []
    },
    {
      "from_ts": 1779393600000,
      "to_ts": 1779552000000,
      "from": 0.54,
      "to": 0.6,
      "delta": 0.06,
      "facts": []
    }
  ],
  "hits": [],
  "texts": [],
  "facts_delay_ms": 60000,
  "sim": {"event_id": null, "has_books": true},
  "related": [],
  "consolidated": null
}

A real response from the API; long lists are cut to their first items.

series.points is the price history as [ms epoch, YES price] pairs (up to 1,000), and series.source names where the prices come from: the venue's candles or trades, the order book Langbot recorded (orderbook_mid), or on-chain trades for Polymarket. moves are the largest moves with the facts heard around them (timing, never cause). sim.has_books says whether the simulator can replay the event behind it.

Errors

StatuscodeWhen
404not_foundNo market with that ticker.
401token_invalidA token was sent and not recognised. Send a valid one, or none to call anonymously.
422validation_errorA parameter failed validation; detail[].loc names it.
429rate_limitedOver your request budget; wait Retry-After seconds.

Every error body is {"detail": …, "code": "…"}; branch on code. All codes: Errors.