SK SHMU ALADIN API

SHMU ALADIN API

A JSON API for ALADIN numerical model data. Search weather stations and retrieve hourly forecasts for the next 3 days.

Quick start

The service downloads data from SHMU and exposes it over HTTP. API base URL:

Base URL
https://shmu.bmikuska.com/api/v1
StationsMore than 1,000 locations. Search works without diacritics too.
ForecastHourly steps for the next 3 days (the ALADIN model horizon): temperature, wind, cloud cover, precipitation, and pressure.
Tip: Search is diacritic-insensitive — zilina also matches “Žilina”.

Endpoints

All endpoints use the GET method. Error responses have the following shape: {"code": 400, "message": "…"}.

GET/api/v1

List of available API endpoints (JSON).

curl
curl "https://shmu.bmikuska.com/api/v1"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1" |
  ConvertTo-Json -Depth 5
Example response
{
  "name": "SHMU ALADIN API",
  "version": "v1",
  "base_url": "https://shmu.bmikuska.com/api/v1",
  "documentation": "https://shmu.bmikuska.com/",
  "endpoints": [
    {
      "method": "GET",
      "path": "/api/v1/stations",
      "description": "Paginated station list with search"
    }
  ]
}
GET/api/v1/stations

A paginated, searchable list of stations.

ParameterDescription
q, searchText filter with diacritic-insensitive search.
pagePage number. The default is 1.
page_size, limitPage size. The default is 50 and the maximum is 200.
curl
curl "https://shmu.bmikuska.com/api/v1/stations?q=zilina&page_size=5"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/stations?q=zilina&page_size=5" |
  ConvertTo-Json -Depth 5
Example response
{
  "stations": [
    {
      "id": 32801,
      "name": "Žilina",
      "lat": 49.223,
      "lon": 18.739
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 5,
  "total_pages": 1,
  "query": "zilina"
}
GET/api/v1/stations/{id}

Station details by ID. For example, 32737 identifies central Bratislava.

curl
curl "https://shmu.bmikuska.com/api/v1/stations/32737"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/stations/32737" |
  ConvertTo-Json -Depth 5
Example response
{
  "id": 32737,
  "name": "Bratislava (centrum)",
  "lat": 48.156,
  "lon": 17.105
}
GET/api/v1/forecast

Najnovšia predpoveď ALADIN na nasledujúce 3 dni. Zadajte buď station (ID stanice), alebo lat a lon (najbližšia stanica). Voliteľný parameter hours určuje počet hodinových krokov.

Coordinate responses include location_match (distance and station elevation). Optional max_distance_km (max 500) rejects matches that are too far.

Alias: /api/v1/weather with the same parameters.

ParameterDescription
stationStation ID. Alternative to lat + lon.
latLatitude (−90 to 90). Use together with lon.
lonLongitude (−180 to 180). Use together with lat.
hoursPočet hodinových krokov v odpovedi.
max_distance_kmMaximum distance to the nearest station (lat/lon only).
curl
curl "https://shmu.bmikuska.com/api/v1/forecast?station=32737&hours=6"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/forecast?station=32737&hours=6" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "hours": 2,
  "list": [
    {
      "dt": 1786082400,
      "dt_txt": "2026-08-07 06:00:00",
      "date": "2026-08-07",
      "date_index": 4,
      "main": { "temp": 25.82, "pressure": 1016.9 },
      "wind": { "speed": 3.94, "deg": 316.6 },
      "clouds": { "all": 97.2 },
      "weather": [
        { "code": "overcast_clouds", "description": "overcast clouds" }
      ]
    }
  ],
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  },
  "meta": {
    "model": "ALADIN SHMU/SK 4.5km …",
    "source": "SHMU ALADIN",
    "runtime": "2026-08-07T06:00:00Z"
  }
}
GET/api/v1/forecast/daily

Daily summaries from the hourly ALADIN forecast (Europe/Bratislava calendar days): min/max temperature, precipitation, wind, dominant weather, sunrise/sunset.

ParameterDescription
station / lat+lonSame rules as the hourly forecast.
daysNumber of days (1 through the available horizon). Omit to return every available day.
max_distance_kmMaximum distance for coordinate requests.
curl
curl "https://shmu.bmikuska.com/api/v1/forecast/daily?station=32737&days=3"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/forecast/daily?station=32737&days=3" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "cnt": 1,
  "list": [
    {
      "date": "2026-08-07",
      "date_index": 4,
      "temp_min": 18.4,
      "temp_max": 27.1,
      "precipitation_total": 1.2,
      "rain_total": 1.2,
      "snow_total": 0,
      "precipitation_hours": 2,
      "wind_speed_max": 8.9,
      "wind_gust_max": 19.4,
      "cloud_cover_mean": 62.5,
      "weather": {
        "code": "light_rain",
        "description": "light rain"
      },
      "sunrise": "2026-08-07T05:32:00+02:00",
      "sunset": "2026-08-07T20:11:00+02:00",
      "is_partial": false
    }
  ],
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  }
}
GET/api/v1/now

Current weather as the hourly ALADIN step closest to the request time. This is not a live station observation — it is model guidance for “now”. Provide either station / stationId, or lat and lon.

ParameterDescription
station / stationId / lat+lonSame rules as the hourly forecast.
max_distance_kmMaximum distance for coordinate requests.
curl
curl "https://shmu.bmikuska.com/api/v1/now?station=32737"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/now?lat=48.15&lon=17.11" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "as_of": "2026-08-10T17:19:00Z",
  "offset_seconds": -1140,
  "current": {
    "dt": 1786377600,
    "dt_txt": "2026-08-10 17:00:00",
    "date": "2026-08-10",
    "date_index": 0,
    "main": { "temp": 24.1, "pressure": 1014.2 },
    "weather": [{ "code": "few_clouds", "description": "few clouds" }],
    "clouds": { "all": 22.5 },
    "wind": { "speed": 3.4, "deg": 280.1 }
  },
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  },
  "source_meta": {
    "source": "SHMU ALADIN",
    "kind": "forecast",
    "is_stale": false
  }
}
GET/api/v1/weather/codes

Catalog of weather enums. Each entry has a stable code and a human-readable description. The same values appear in the weather field of hourly and daily forecasts. Day index date_index is 0 = Monday … 6 = Sunday (Europe/Bratislava).

curl
curl "https://shmu.bmikuska.com/api/v1/weather/codes"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/weather/codes" |
  ConvertTo-Json -Depth 5
Example response
{
  "codes": [
    { "code": "clear", "description": "clear sky" },
    { "code": "few_clouds", "description": "few clouds" },
    { "code": "scattered_clouds", "description": "scattered clouds" },
    { "code": "broken_clouds", "description": "broken clouds" },
    { "code": "overcast_clouds", "description": "overcast clouds" },
    { "code": "light_rain", "description": "light rain" },
    { "code": "moderate_rain", "description": "moderate rain" },
    { "code": "heavy_rain", "description": "heavy intensity rain" },
    { "code": "light_snow", "description": "light snow" },
    { "code": "rain_and_snow", "description": "rain and snow" }
  ]
}
GET/api/v1/indicators

Indicators derived from the hourly forecast (frost, heat, wind, heavy rain, snow, mixed precipitation, low-cloud mountain caution). These are not official SHMU warnings — every item has official: false and source_kind: "forecast".

ParameterDescription
station / lat+lonSame rules as the forecast endpoint.
typeComma-separated type filter, e.g. frost,wind,heavy_rain.
curl
curl "https://shmu.bmikuska.com/api/v1/indicators?lat=49.12&lon=20.06&type=frost,wind"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/indicators?lat=49.12&lon=20.06&type=frost,wind" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "cnt": 1,
  "list": [
    {
      "type": "wind",
      "level": "moderate",
      "valid_from": "2026-08-07T12:00:00Z",
      "valid_to": "2026-08-07T18:00:00Z",
      "summary": "Elevated wind gusts in the forecast period",
      "source_kind": "forecast",
      "rule_version": "v1",
      "official": false,
      "available": true
    }
  ],
  "location_match": {
    "method": "nearest_aladin_station",
    "requested_coord": { "lat": 49.12, "lon": 20.06 },
    "matched_coord": { "lat": 49.08, "lon": 20.12 },
    "distance_km": 6.2,
    "matched_station_id": 12345,
    "matched_station_name": "Example station"
  }
}

Limits and updates

Rate limiting

The default limit is 10 requests per minute for each endpoint and IP address. When exceeded, the API returns status 429 and a Retry-After header. Documentation routes are not rate-limited.