Resorts

Season snowfall ledger for a resort

Every day it snowed this season and how much, in up to three lanes that are never blended: modeled (ERA5 / Open-Meteo at mid-mountain, 30 winters deep), measured (one named station, chosen by truth tier then coverage — never an average of stations), and reported (what the resort itself published, including its own season counter). Plus normal — the mean cumulative modeled snowfall by day of season across every complete winter on file, with p25/p75 — and a strip of past seasons for sparklines.

vsNormalPct exists only on the modeled lane, against a modeled normal. A resort-reported total is measured at a summit stake and compares to the resort's own stated annual average, never to this normal. Lanes with nothing observed are absent, not zero.

The modeled lane is sparse at the source (only snow days are stored); the response densifies it, so an absent day is 0 cm. Station lanes keep gaps as null. The normal is withheld under meta.minYearsForNorm complete winters, with the reason in meta.normalWithheldReason.

This is history, not a forecast, and nothing in it is a SnowSure Score. A real resort with nothing recorded returns 200 with a modeled lane of zeros, not 404.

get/api/v1/resorts/{slug}/snowfall-history

Request

  • Base URL: https://www.snowsure.ai
  • URL: https://www.snowsure.ai/api/v1/resorts/{slug}/snowfall-history
  • Auth: none declared

Path parameters

slugstring required

Resort slug (URL-friendly identifier). Common-name aliases resolve to the canonical slug.

Query parameters

seasonstring

Season to return: 2026-27, 2026 (the NH starting year; 2027 is absorbed as 2026-27), or last. Defaults to the running season, or the upcoming one in the off-season.

granularity'day' | 'week' | 'month'

How lanes[].bins are rolled up. week is 7-day bins from the season record start (not ISO weeks), so week 1 is the same dates every winter; month reconciles to /monthly-snow. lanes[].days is always daily.

pastSeasonsinteger

How many prior seasons to summarise in data.pastSeasons (0–30).

Response

The ledger. Lanes present only where something was observed; data.normal null when withheld.

schemaVersion'1.4.0'

Versions this payload contract, independently of info.version.

Example response

{
  "meta": {
    "season": {
      "label": "2026-27"
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.