---
title: "Get Weather Index"
method: GET
path: "/live_data/weather/{city}"
tags: ["live-data"]
---

# Get Weather Index

`GET /live_data/weather/{city}`

Get the Kalshi-computed city temperature index: the canonical minute-resolution series behind hourly temperature markets. City-keyed and independent of any event — the series exists whenever the city's index is configured. Values are Fahrenheit rounded to 0.01. Minutes where the index quorum failed carry no value and are never returned as points, so gaps in the series are real gaps. With `detailed=true` each point additionally carries every member station's reported reading and quality-control disposition — the pre-incorporation breakdown.

## Path parameters

- `city` string, required

## Query parameters

- `from` integer
- `to` integer
- `last_sec` integer
- `detailed` boolean

## Response `200`

Weather index retrieved successfully

- GetWeatherIndexResponse
  - `city` string, required — Index city ID.
  - `config_version` string — Index configuration version of the newest returned point (e.g. `miami-temperature-v1.0`). Empty when no points matched the window.
  - `units` string, required — Always `fahrenheit`.
  - `timeseries` WeatherIndexPoint[], required
    - `t` integer, required — Event minute, unix milliseconds UTC.
    - `v` number, double — Published index value, Fahrenheit rounded to 0.01. Absent on `incomplete` points, which have no canonical value yet.
    - `status` string, required — `normal` (every member contributed its exact-minute primary observation) or `degraded` (a member was absent, fallback-fed, or substituted by quality control; the value is equally settlement-eligible). With `detailed=true`, trailing minutes still inside their receipt deadline are additionally served as `incomplete`: no value, and stations carrying the raw readings recorded so far (code `pending`, not yet quality-controlled — more readings may still arrive, and the canonical value may differ).
    - `contributors` integer — Number of accepted member stations backing the point. Absent on `incomplete` points.
    - `stations` WeatherIndexStationReading[] — Per-station audit readings (only with `detailed=true`), sorted by station ID — every configured member's reported value and QC disposition before incorporation into the index.
      - `station_id` string, required — Member station (e.g. `KMIA1M`) or its official fallback ID.
      - `code` string, required — Disposition: `ok` (accepted), `missing` (no eligible observation), `late` (received after the deadline; diagnostic only), a QC rejection (`range`, `rate_spatial`, `extreme`), or `pending` (raw reading on an `incomplete` minute, not yet quality-controlled).
      - `source` string — `hf_asos` (exact-minute primary) or `metar` (carried-forward official observation). Absent when no reading was available.
      - `temp_f` number, double — Raw reported temperature in Fahrenheit (unrounded — only the published index value carries output rounding). Absent for `missing` members.
      - `obs_time_ms` integer — Observation time for carried-forward fallbacks (differs from the event minute). Absent for exact-minute primaries.
      - `received_at_ms` integer — Local wire-receipt time backing the eligibility deadline.
      - `primary_code` string — Why the primary observation was passed over when a fallback was selected instead.

## Other responses

- `400` — Unknown city or invalid window parameters
- `500` — Internal server error

---

[API](https://skmtc.net/kalshi/apis/kalshi-trade-api-manual-endpoints.md) · [All operations](https://skmtc.net/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kalshi/kalshi-trade-api-manual-endpoints/revisions/6aec27d55fba/schema)
