Skip to main content

Migrating from the 1-Minute Observations API

This page is for developers moving an existing integration from the legacy 1-Minute Observations API to the Weather Stations API. If you're integrating for the first time, you don't need anything on this page — everything here concerns a predecessor API you were never on.

The legacy API remains available with no sunset date. Migrating gets you bulk querying, relative time windowing (last_minutes), and observation-interval control (timestep), none of which the legacy API supports.

Request shape​

The legacy API baked the time mode into the URL path. In v2 the same choice is a query parameter on one consistent path:

Legacy 1-Minute Observations callWeather Stations v2 equivalent
GET /weatherStation/{stationId}/latestGET /weather-stations/v2/stations/{station_id}/observations/latest
GET /weatherStation/{stationId}/last/{minutes}/minutesGET /weather-stations/v2/stations/{station_id}/observations?last_minutes={minutes}
GET /weatherStation/{stationId}/range/{fromDateTime}/{toDateTime}GET /weather-stations/v2/stations/{station_id}/observations?from_date_time={fromDateTime}&to_date_time={toDateTime}
GET /weatherStationGET /weather-stations/v2/stations
(no equivalent)GET /weather-stations/v2/stations/observations/latest — every entitled station in one call, no station list to build

For the current request parameters and response shape, see the Weather Stations API guide and the Technical Reference.

Variable names​

Every variable name has changed. If you have alarm or threshold rules that embed a variable name — for example "alarm when windspd_01mnavg > 80" — swap the name for the v2 equivalent ("alarm when wind_speed_1min_mean > 80"). Units are unchanged unless the Notes column below says otherwise.

Legend: → direct equivalent · ⚠ unit or semantic difference (see Notes) · — no v2 equivalent.

Legacy (1-Min Obs)Weather Stations v2Notes
airtemp_01mnavgair_temperature_1min_mean→
airtemp_01hrmaxair_temperature_1h_max→
airtemp_01hrminair_temperature_1h_min→
dewtemp_01mnavgdew_point_temperature_1min_mean→
windspd_01mnavgwind_speed_1min_mean→
windspd_10mnavgwind_speed_10min_mean→
windspd_01hravgwind_speed_1h_mean→
winddir_01mnavgwind_from_direction_1min_mean→
winddir_10mnavgwind_from_direction_10min_mean→
winddir_01hravgwind_from_direction_1h_mean→
windgst_01mnmaxwind_gust_speed_1min_max→
windgst_10mnmaxwind_gust_speed_10min_max→
windgst_01hrmaxwind_gust_speed_1h_max→
windgst_01hrdirwind_gust_from_direction_1h→
windgst_01hrtimwind_gust_peak_time_1h→
windlul_01mnminwind_lull_speed_1min_min→
windlul_10mnminwind_lull_speed_10min_min→
windrun_01hraccwind_run_1h_sum→
presmsl_01mnavgsea_level_pressure_1min_mean→
presmsl_01hrmaxsea_level_pressure_1h_max→
presmsl_01hrminsea_level_pressure_1h_min→
relhumd_01mnavgrelative_humidity_1min_mean→
relhumd_01hrmaxrelative_humidity_1h_max→
relhumd_01hrminrelative_humidity_1h_min→
rainfal_01mnaccrainfall_1min_sum→
rainfal_10mnaccrainfall_10min_sum→
rainfal_01hraccrainfall_1h_sum→
rainfal_10mnmaxrainfall_rate_10min_max⚠ Unit label changes from mm to mm/min; values are unchanged. Both report the largest rainfall in any single minute during the past 10 minutes, so X mm in one minute is X mm/min
rainfal_01hrmaxrainfall_rate_1h_max⚠ Unit label changes from mm to mm/min; values are unchanged. Both report the largest rainfall in any single minute during the past hour, so X mm in one minute is X mm/min
earth05_01mnavgsoil_temperature_5cm_1min_mean→
earth10_01mnavgsoil_temperature_10cm_1min_mean→
earth20_01mnavgsoil_temperature_20cm_1min_mean→
earth50_01mnavgsoil_temperature_50cm_1min_mean→
earth1m_01mnavgsoil_temperature_1m_1min_mean→
soilwet_01mnavgsoil_moisture_1min_mean→
solradn_01mnavgsolar_irradiance_1min_mean→
solradn_01mnaccsolar_irradiance_1min_sum→
solradn_10mnaccsolar_irradiance_10min_sum→
solradn_01hraccsolar_irradiance_1h_sum→
visibil_01mnavgvisibility_1min_mean→
visibil_10mnavgvisibility_10min_mean→
cld1amt_30mnavgcloud_fraction_layer_1_30min_mean→
cld1hgt_30mnavgcloud_height_layer_1_30min_mean→
cld2amt_30mnavgcloud_fraction_layer_2_30min_mean→
cld2hgt_30mnavgcloud_height_layer_2_30min_mean→
cld3amt_30mnavgcloud_fraction_layer_3_30min_mean→
cld3hgt_30mnavgcloud_height_layer_3_30min_mean→
snowdep_01mnavgsnow_depth_1min_mean→
power_v_01mnavg—Not in v2. Station power supply voltage is station-engineering data and is not part of the public observations contract
sfctemp_01mnavgroad_surface_temperature_1min_mean⚠ Legacy = surface temp of grass or road; v2 field is road-sensor only
road_fz_01mnavgroad_freezing_temperature_1min_mean→ Road-sensor entitlement only
road_t1_01mnavgroad_subsurface_temperature_5cm_1min_mean⚠ Road-sensor entitlement only. The legacy "air 5 cm above road" label was incorrect; v2 corrects it to 5 cm below the surface
road_t2_01mnavgroad_subsurface_temperature_30cm_1min_mean⚠ Road-sensor entitlement only. The legacy "air 30 cm above road" label was incorrect; v2 corrects it to 30 cm below the surface
road_t3_01mnavgroad_subsurface_temperature_2cm_1min_mean⚠ Road-sensor entitlement only. The legacy "sensor internal temperature ~2 cm" label was incorrect; v2 corrects it to 2 cm below the surface
roadflm_01mnavgroad_water_film_height_1min_mean→ Road-sensor entitlement only
roadfrt_01mnavgroad_friction_1min_mean→ Road-sensor entitlement only
roadbki_01mnavgroad_ice_frequency_1min_mean→ Road-sensor entitlement only
roadsal_01mnavgroad_salt_concentration_1min_mean→ Road-sensor entitlement only
roadtxt_01mnavgroad_surface_state⚠ Legacy text ("Dry"); v2 is a categorical code
roadcdn_01mnavgroad_surface_state⚠ Legacy numeric code folded into the single categorical road_surface_state
road_t1_10mnavg / road_t2_10mnavg / road_t3_10mnavg—Under review (10-minute road variants not yet in v2)
roadflm_10mnavg—Under review (10-minute film-height variant)
roadlfp_01mnavg—Under review (liquidus temperature)
roadcvy_01mnavg / roadssg_01mnavg / roadsst_01mnavg—Under review (road conductivity / surface signal / surface status)
sfctemp_01hrmin—Under review (1-hour minimum surface temperature)
timeobservation_time⚠ v2 label is the right-closed window time; see also the top-level generated_at (response time) for the data-freshness/latency signal
latitude / longitudeper-station state block (also in the catalogue)Every observation response carries the position in its state block, which is always present, so plotting an observation needs no catalogue lookup. The catalogue (GET /stations/{id}) stays the source of truth for static site metadata. Mobile platforms report their position at each observation in the same block
level / stn_rnwayabvmslcatalogue station.elevationApproximate; provided as static station metadata in the catalogue
stn_magneticdevcatalogue station.magnetic_declination→ Restored as static station metadata, in degrees. Wind directions are served true (degrees_true); use magnetic_declination to convert to magnetic yourself
presqfe_01mnavg / presqfe_01hrmax / presqfe_01hrmin—No v2 equivalent (QFE pressure)
presqnh_01mnavg / presqnh_01hrmax / presqnh_01hrmin—No v2 equivalent (QNH pressure)
pressen_01mnavg / pressen_01hrmax / pressen_01hrmin / pressen_01hrchg—No v2 equivalent (sensor-level pressure)
prwxnum_15mnavg / prwxst1_15mnavg / prwxst2_15mnavg—No v2 equivalent (present-weather SYNOP/METAR codes)
windccw_* / windcw__*—No v2 equivalent (clockwise/counter-clockwise direction deviations)
wndccwm_* / wndcwm__* / wnddirm_* / wndgstm_01hrdir—No v2 equivalent (magnetic wind directions)
wv* (e.g. wvsight_xxmnavg, wvzrxpd_xxmnavg)—No v2 equivalent (wave-buoy variables)

Technical reference​

For request parameters, response schemas, and a live try-it console, see the Weather Stations API v2 — Technical Reference. You can also download the OpenAPI specification.