---
title: "List official avalanche bulletins across resorts (relayed)"
method: GET
path: "/api/v1/avalanche"
tags: ["Resorts"]
---

# List official avalanche bulletins across resorts (relayed)

`GET /api/v1/avalanche`

## Request

- Base URL: `https://www.snowsure.ai`
- URL: `https://www.snowsure.ai/api/v1/avalanche`
- Auth: none declared

The fleet view over the same relayed bulletins `getResortAvalanche` serves — one request instead of hundreds. v1 covers the United States, Canada, Switzerland, France, Sweden, Austria, Italy, Norway, Germany, Spain (Val d’Aran / Lauegi only) and Andorra. Ratings use the EAWS 2018/19 scale (5 = Very high).

**Two modes, one item shape.** With `slugs`, you get an answer for every slug you asked about, in the order you asked, including the ones with no bulletin — this is the batch lookup. Without `slugs`, you get a feed of resorts that currently have a bulletin, ordered by danger rating (highest first, unrated last).

`slugs`, `country` and `warningService` select which resorts are *considered*; `minDanger` filters the *results*. That split keeps `meta.counts` honest: counts always describe the considered pool, so they explain what the filters did.

**A resort's absence from `data` carries no safety meaning.** `meta.counts` reports where every considered resort landed (`bulletin`, `outside_forecast_zone`, `no_current_bulletin`, `country_not_covered`, `location_unknown`, `relay_not_permitted`, `resort_not_found`) and `meta.coverageNote` states this in full. A two-item response drawn from 230 considered resorts must never be presented as "two dangerous resorts, the rest are fine". Note that `minDanger` excludes bulletins with no published rating, which are bulletins that exist — `meta.counts.rated` makes that visible.

Each item's `bulletin` field is identical to the single-resort endpoint's `data`, so an item maps onto that contract without translation. A null `dangerRating` inside a bulletin means the issuer published no rating — never a substituted or inferred value.

A 503 means SnowSure could not reach its resort store. It is never served as an empty list, which on this endpoint would read as "nowhere has a bulletin".

The response body is fully described by the canonical JSON Schema (draft 2020-12) at https://www.snowsure.ai/.well-known/schemas/avalanche-list-v1.json, which the payload also self-advertises in its `schema` field. `schemaVersion` versions this payload contract independently of `info.version`, and independently of the single-resort avalanche contract.

## Query parameters

- `slugs` string
- `country` string
- `warningService` 'US' | 'CA' | 'CH' | 'FR' | 'SE' | 'AT' | 'IT' | 'NO' | 'DE' | 'ES' | 'AD' | 'GB' | 'SK' | 'SI' | 'CZ'
- `minDanger` integer
- `limit` integer

## Response `200`

Avalanche list envelope. Read `meta.counts` and `meta.coverageNote` before drawing any conclusion from the length of `data`.

- AvalancheListV1Json (unresolved $ref)

## Other responses

- `500`: Failed to resolve avalanche bulletins
- `503`: SnowSure could not reach its resort store. Not a statement about avalanche danger — retry. Never served as an empty list.

---

[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)
