# Get a market

Source: https://langbot.ai/docs/api/markets/get-public-market

`GET /v1/public/markets/{ticker}`

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

**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

| Name | Type | Required | Description |
|---|---|---|---|
| `ticker` | string | yes | The venue ticker (Kalshi) or `pm_<id>` (Polymarket). Case-insensitive. |

## Request

**curl**

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

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    m = await lb.public_market("SENATETX-26-R")
    print(m["status"], m["price"], m["series"]["source"], len(m["series"]["points"]))
```

**TypeScript**

```ts
import { LangbotClient } from "@langbotai/sdk";

const lb = new LangbotClient();
const m = await lb.publicMarket("SENATETX-26-R");
console.log(m.status, m.price);
```

## 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](https://langbot.ai/docs/api/sim/create-run) can replay the event behind it.

## Errors

| Status | `code` | When |
|---|---|---|
| 404 | `not_found` | No market with that ticker. |
| 401 | `token_invalid` | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 422 | `validation_error` | A parameter failed validation; `detail[].loc` names it. |
| 429 | `rate_limited` | Over your request budget; wait `Retry-After` seconds. |

Every error body is `{"detail": …, "code": "…"}`; branch on `code`. All codes: [Errors](https://langbot.ai/docs/api#errors).
