---
title: "Historical snow odds for specific trip dates"
method: GET
path: "/api/v1/resorts/{slug}/trip-window"
tags: ["Resorts"]
---

# Historical snow odds for specific trip dates

`GET /api/v1/resorts/{slug}/trip-window`

## Request

- Base URL: `https://www.snowsure.ai`
- URL: `https://www.snowsure.ai/api/v1/resorts/{slug}/trip-window`
- Auth: none required

History for a trip window, not a forecast. Blends the resort's ERA5 monthly snow grid across the months the window touches: the share of days with snowfall (the headline), window-scaled expected snowfall, typical base depth, the last five individual seasons, and the best nearby month. `status: "insufficient"` (still 200) means too few tracked seasons cover the window to state odds.

**Auth:** none.

**Caching:** `Cache-Control: public, s-maxage=3600, stale-while-revalidate=7200` — historical norms move once a season.

## Path parameters

- `slug` string, required

## Query parameters

- `start` string, date, required
- `end` string, date

## Response `200`

Trip-window odds, or an insufficient-history notice

- union
  - TripWindowOk
    - `status` 'ok', required
    - `slug` string, required
    - `start` string, date, required
    - `end` string, date, required
    - `windowDays` integer, required: Inclusive length of the window.
    - `hemisphere` 'NH' | 'SH', required
    - `months` TripWindowMonthPart[], required
      - `month` integer
      - `monthName` string
      - `daysInWindow` integer: Days of the requested window inside this month.
      - `daysInMonth` integer
      - `snowDayProbability` number, nullable: Mean share of this month’s days with snowfall across tracked years.
      - `avgMonthSnowfallCm` number, nullable: Average full-month snowfall across tracked years (cm).
      - `yearsTracked` integer
    - `snowDayProbability` number, nullable, required: Day-weighted share of days with snowfall across tracked years. The headline number.
    - `expectedSnowDays` number, nullable, required: snowDayProbability × windowDays.
    - `expectedSnowfallCm` number, nullable, required: Monthly averages scaled by the window’s share of each month (cm).
    - `expectedBaseDepthCm` number, nullable, required: Day-weighted typical base depth (cm).
    - `yearsTracked` integer, required: Fewest tracked seasons across the months the window touches.
    - `recentYears` TripWindowRecentYear[], required: The last five individual seasons, newest first.
      - `year` integer: Calendar year of the window start.
      - `label` string: "2026", or "2025/26" when the window crosses a calendar-year boundary.
      - `windowSnowfallCm` number
      - `windowSnowDays` number
    - `bestWindow` object, nullable, required: The month (requested ±1) with the highest snow-day probability for a same-length window. Month-granular on purpose.
      - `month` integer
      - `monthName` string
      - `snowDayProbability` number
      - `isRequestedMonth` boolean
    - `provenance` object, required
      - `kind` 'historical'
      - `notAForecast` true
      - `basis` string
  - TripWindowInsufficient
    - `status` 'insufficient', required
    - `slug` string, required
    - `start` string, date, required
    - `end` string, date, required
    - `yearsTracked` integer, required
    - `minYearsForNorm` integer, required
    - `note` string, required

## Other responses

- `400`: `start` missing, a date not a valid YYYY-MM-DD, `end` before `start`, or a window longer than 31 days
- `404`: Unknown resort
- `503`: Resort directory or history temporarily unavailable

---

[API](https://skmtc.dev/snowsure/apis/snowsure-api.md) · [All operations](https://skmtc.dev/snowsure/apis/snowsure-api/llms.txt) · [OpenAPI document](https://skmtc.dev/snowsure/apis/snowsure-api/revisions/dcbcdbb3df50?raw)
