Skip to Content
API📦 Data Types

📦 Data Types

This page describes the responses of the three data endpoints. Forecast, air-quality and pollen data come from Open-Meteo.

Which fields are returned? Only the fields you selected and published on the dashboard’s Weather Data page (separately for current, hourly and daily), or the fields of the preset named in ?preset=. Every entry also always contains icon and weather_description.


🌐 Common Response Wrapper

1type ApiResponse = {
2message: CityResult[];
3};
4
5type CityResult = {
6city: string;       // City name as saved on the Weather Data page
7locale?: string;    // Only on accounts whose cities were saved with a locale by an older dashboard
8data: WeatherData | HourlyForecastData | DailyForecastData;
9};

🌞 WeatherData

Returned by GET /weather. One key per selected field (see Available Fields), plus two that are always present.

1type WeatherData = {
2icon: string;                // Animated icon URL, e.g. https://cdn.skycaster.tv/set-2/01d.gif
3weather_description: string; // e.g. "Clear sky" — or your own wording with ?lang=
4[fieldId: string]: number | string | WeatherAlert[] | null;
5};

Example data object (°C and km/h):

{
"icon": "https://cdn.skycaster.tv/set-2/01d.gif",
"weather_description": "Clear sky",
"temp": 18.5,
"humidity": 62,
"dew": 11.2,
"wind": 14.8,
"wind_direction": 180,
"wind_direction_label": "S",
"eu_aqi": 28,
"alerts": []
}

🕐 HourlyForecastData

Returned by GET /forecast-hourly. forecast is keyed by the local date-time of each hour (the city’s own time zone).

1type HourlyForecastData = {
2forecast: {
3  [localDateTime: string]: HourlyEntry; // e.g. "2025-05-17T06:00"
4};
5type: "hourly";
6};
7
8type HourlyEntry = {
9time: string;                // Same as the key
10icon: string;
11weather_description: string;
12[fieldId: string]: number | string | WeatherAlert[] | null;
13};

📅 DailyForecastData

Returned by GET /forecast-daily. forecast is keyed by local date.

1type DailyForecastData = {
2forecast: {
3  [localDate: string]: DailyEntry; // e.g. "2025-05-17"
4};
5type: "daily";
6days: number;                // The count you requested
7};
8
9type DailyEntry = {
10time: string;                // Same as the key
11icon: string;                // Always the day icon
12weather_description: string;
13[fieldId: string]: number | string | WeatherAlert[] | null;
14};

🎨 Icons

icon points to an animated GIF from the icon pack selected on the Weather Data page (currently Skycaster Classic, set-2):

https://cdn.skycaster.tv/set-2/<code>.gif

CodeConditionNight variant
01d / 01nClear sky✓
02d / 02nMainly clear✓
03d / 03nPartly cloudy✓
04dOvercast—
09d / 09nDrizzle, rain showers✓
10dRain, freezing rain—
11dThunderstorm—
13dSnow, snow showers—
50dFog—

Current and hourly entries use the night variant after dark where one exists; daily entries always use the day icon.

💬 Weather Descriptions

weather_description is one of: Clear sky, Mainly clear, Partly cloudy, Overcast, Foggy, Drizzle, Freezing drizzle, Rain, Freezing rain, Snow, Snow grains, Rain showers, Snow showers, Thunderstorm.

Add ?lang=<id> to any request to replace these (and alert titles) with your own wording — set it up under Languages & wording on the Weather Data page. Phrases you leave empty stay in English.


🚨 Weather Alerts

Select Weather Alerts (alerts for current/hourly, daily_alerts for daily) to get an array of alerts for each entry. Alerts are derived from the forecast data using the thresholds below — they are not official warnings from a national weather service.

type WeatherAlert = {
type: "thunderstorm" | "wind" | "heat" | "cold" | "rain" | "freezing_rain" | "snow" | "uv" | "fog";
severity: "minor" | "moderate" | "severe";
title: string; // English, or your own wording with ?lang=
};
"alerts": [
{ "type": "wind", "severity": "moderate", "title": "Strong wind gusts" },
{ "type": "uv",   "severity": "moderate", "title": "Very high UV" }
]

Thresholds are evaluated in metric units, whatever units you publish:

TypeModerateSevere
thunderstormThunderstorm (WMO 95)Thunderstorm with hail (WMO 96, 99)
windGusts ≥ 75 km/hGusts ≥ 100 km/h
heatTemperature ≥ 35 °C (daily: max)≥ 40 °C
coldTemperature ≤ −15 °C (daily: min)≤ −25 °C
rain≥ 10 mm in an hour, ≥ 30 mm in a day, or heavy rain / violent showers (WMO 65, 82)≥ 30 mm in an hour or ≥ 60 mm in a day
freezing_rainLight freezing rain (WMO 66)Heavy freezing rain (WMO 67)
snow≥ 10 cm in a day, or heavy snow (WMO 75, 86)≥ 25 cm in a day
uvUV index ≥ 8UV index ≥ 11
fogFog (WMO 45, 48) is reported as minor—

Current conditions have no rainfall amount, so current rain alerts come from the weather code only.


📋 Available Fields

The Field ID is what you select on the Weather Data page and is also the key in the response — the one exception is Wind Direction (10 m), which returns wind_direction in degrees plus a 16-point compass label wind_direction_label (e.g. "SW").

Units follow what you publish on the Weather Data page: temperature in °C or °F, wind in km/h, mph or m/s. Publishing °F also switches precipitation to inches and snow depth and visibility to feet.

Current & Hourly Fields

Available on /weather and /forecast-hourly. Air-quality and pollen fields are current-only. For amounts such as precipitation or sunshine, current values cover the preceding 15 minutes and hourly values the preceding hour.

Alerts

Field IDResponse keyDescriptionUnit (°C / °F)
alertsalertsWeather Alertsarray (Weather Alerts)

Temperature

Field IDResponse keyDescriptionUnit (°C / °F)
temptempTemperature (2m)°C / °F
feelsfeelsFeels Like°C / °F
dewdewDew Point°C / °F

Humidity & Precipitation

Field IDResponse keyDescriptionUnit (°C / °F)
humidityhumidityHumidity%
precip_probprecip_probPrecip. Probability%
precipprecipPrecipitationmm / inch
rainrainRainmm / inch
showersshowersShowersmm / inch
snowfallsnowfallSnowfallcm / inch
snow_depthsnow_depthSnow Depthm / ft

Wind

Field IDResponse keyDescriptionUnit (°C / °F)
windwindWind Speed (10m)km/h, mph or m/s
wind80wind80Wind Speed (80m)km/h, mph or m/s
wind120wind120Wind Speed (120m)km/h, mph or m/s
wind180wind180Wind Speed (180m)km/h, mph or m/s
gustsgustsWind Gusts (10m)km/h, mph or m/s
winddirwind_direction, wind_direction_labelWind Direction (10m)degrees (0–360)
winddir80winddir80Wind Direction (80m)degrees (0–360)
winddir120winddir120Wind Direction (120m)degrees (0–360)
winddir180winddir180Wind Direction (180m)degrees (0–360)

Sky & Clouds

Field IDResponse keyDescriptionUnit (°C / °F)
cloudcloudCloud Cover%
cloud_lowcloud_lowCloud Cover (Low)%
cloud_midcloud_midCloud Cover (Mid)%
cloud_highcloud_highCloud Cover (High)%
visibilityvisibilityVisibilitym / ft
is_dayis_dayDay / Night1 = day, 0 = night
sunshinesunshineSunshine Durationseconds

Pressure & Radiation

Field IDResponse keyDescriptionUnit (°C / °F)
pressurepressurePressure (MSL)hPa
surf_pressurf_presSurface PressurehPa
shortwaveshortwaveShortwave RadiationW/m²
direct_raddirect_radDirect RadiationW/m²
diffuse_raddiffuse_radDiffuse RadiationW/m²
uvuvUV Indexindex
uv_clearuv_clearUV Index (Clear Sky)index

Atmosphere

Field IDResponse keyDescriptionUnit (°C / °F)
codecodeWeather CodeWMO code
capecapeCAPEJ/kg
vpdvpdVapour Pressure DeficitkPa
et0et0Evapotranspirationmm / inch

Soil

Field IDResponse keyDescriptionUnit (°C / °F)
soil_t0soil_t0Soil Temp (0cm)°C / °F
soil_t6soil_t6Soil Temp (6cm)°C / °F
soil_t18soil_t18Soil Temp (18cm)°C / °F
soil_t54soil_t54Soil Temp (54cm)°C / °F
soil_m01soil_m01Soil Moisture (0–1cm)m³/m³
soil_m13soil_m13Soil Moisture (1–3cm)m³/m³
soil_m39soil_m39Soil Moisture (3–9cm)m³/m³
soil_m927soil_m927Soil Moisture (9–27cm)m³/m³
soil_m2781soil_m2781Soil Moisture (27–81cm)m³/m³

Air Quality

Field IDResponse keyDescriptionUnit (°C / °F)
eu_aqieu_aqiEuropean AQIindex — EU AQI 0–100+, US AQI 0–500
us_aqius_aqiUS AQIindex — EU AQI 0–100+, US AQI 0–500
pm25pm25PM2.5μg/m³
pm10pm10PM10μg/m³
cocoCarbon Monoxideμg/m³
no2no2Nitrogen Dioxideμg/m³
so2so2Sulphur Dioxideμg/m³
ozoneozoneOzoneμg/m³
dustdustDustμg/m³
alder_polalder_polAlder Pollengrains/m³
birch_polbirch_polBirch Pollengrains/m³
grass_polgrass_polGrass Pollengrains/m³
mugwort_polmugwort_polMugwort Pollengrains/m³
olive_pololive_polOlive Pollengrains/m³
ragweed_polragweed_polRagweed Pollengrains/m³

Daily Fields

Available on /forecast-daily. Sums and durations cover the whole local day.

Alerts

Field IDResponse keyDescriptionUnit (°C / °F)
daily_alertsdaily_alertsWeather Alertsarray (Weather Alerts)

Temperature

Field IDResponse keyDescriptionUnit (°C / °F)
daily_temp_maxdaily_temp_maxMax Temperature°C / °F
daily_temp_mindaily_temp_minMin Temperature°C / °F
daily_temp_meandaily_temp_meanMean Temperature°C / °F
daily_apt_maxdaily_apt_maxFeels Like Max°C / °F
daily_apt_mindaily_apt_minFeels Like Min°C / °F
daily_apt_meandaily_apt_meanFeels Like Mean°C / °F

Precipitation

Field IDResponse keyDescriptionUnit (°C / °F)
daily_precipdaily_precipPrecipitation Totalmm / inch
daily_raindaily_rainRain Totalmm / inch
daily_showersdaily_showersShowers Totalmm / inch
daily_snowdaily_snowSnowfall Totalcm / inch
daily_precip_hdaily_precip_hPrecip Hourshours
daily_precip_pdaily_precip_pPrecip Probability%

Wind

Field IDResponse keyDescriptionUnit (°C / °F)
daily_wind_maxdaily_wind_maxMax Wind Speedkm/h, mph or m/s
daily_gust_maxdaily_gust_maxMax Wind Gustskm/h, mph or m/s
daily_wind_dirdaily_wind_dirDominant Directiondegrees (0–360)

Sky

Field IDResponse keyDescriptionUnit (°C / °F)
daily_codedaily_codeWeather CodeWMO code
daily_daylightdaily_daylightDaylight Durationseconds
daily_sunshinedaily_sunshineSunshine Durationseconds

Radiation & Energy

Field IDResponse keyDescriptionUnit (°C / °F)
daily_radiationdaily_radiationShortwave RadiationMJ/m²
daily_et0daily_et0Evapotranspirationmm / inch

UV

Field IDResponse keyDescriptionUnit (°C / °F)
daily_uv_maxdaily_uv_maxUV Index Maxindex
daily_uv_csdaily_uv_csUV Index (Clear Sky)index

Legacy Field Names

Accounts configured with an older dashboard may still have legacy field names published (for example temperature, feels_like, wind_speed, heat_index, air_quality, ozone_level, temperature_max, sunrise). These keep working and are returned under the same legacy name. Re-publish from the Weather Data page to switch to the current field IDs.


🧾 XML Format

With format=xml (or XML chosen as the API response format on the Weather Data page) the same structure is returned as XML: the root is <response>, each array element is an <item>, and keys that aren’t valid XML names (such as forecast dates) become <entry key="…">.

<?xml version="1.0"?>
<response>
<item>
  <city>Berlin</city>
  <data>
    <forecast>
      <entry key="2025-05-17">
        <time>2025-05-17</time>
        <icon>https://cdn.skycaster.tv/set-2/01d.gif</icon>
        <weather_description>Clear sky</weather_description>
        <daily_temp_max>24.9</daily_temp_max>
      </entry>
    </forecast>
    <type>daily</type>
    <days>1</days>
  </data>
</item>
</response>

📞 Need Assistance?

If you have questions or need support, email us at support@skycaster.tv.

Last updated on