{"generated_at_utc":"2026-09-02T08:56:18.159135+00:00","sources":[{"id":"regulatory-pm25","name":"Regulatory PM2.5 monitors","authority":"Federal, provincial and territorial air-quality agencies","purpose":"Hourly preliminary PM2.5 observations and NowCast","terms_url":"https://www.airnow.gov/","access":"Public files and provincial feeds","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T07:00:00+00:00","accepted_record_count":271,"state":"current","stale_after_minutes":180,"serving_last_good":false,"warning_code":null},{"id":"firesmoke","name":"FireSmoke","authority":"BlueSky Canada / firesmoke.ca","purpose":"Wildfire-smoke dispersion forecasts","terms_url":"https://firesmoke.ca/","access":"Public forecast grid","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-01T21:00:00+00:00","accepted_record_count":271,"state":"current","stale_after_minutes":720,"serving_last_good":false,"warning_code":null},{"id":"firework","name":"FireWork","authority":"Environment and Climate Change Canada","purpose":"Total PM2.5 and wildfire-plume forecasts","terms_url":"https://weather.gc.ca/firework/","access":"ECCC open data","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T00:00:00+00:00","accepted_record_count":271,"state":"current","stale_after_minutes":720,"serving_last_good":false,"warning_code":null},{"id":"hrrr","name":"HRRR-Smoke","authority":"NOAA","purpose":"High-resolution smoke forecasts over southern Canada","terms_url":"https://rapidrefresh.noaa.gov/hrrr/","access":"NOAA public model data","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T07:00:00+00:00","accepted_record_count":271,"state":"current","stale_after_minutes":360,"serving_last_good":false,"warning_code":null},{"id":"wildfires","name":"Active wildfires","authority":"BC Wildfire Service and Natural Resources Canada CWFIS","purpose":"Active incident points and BC fire details","terms_url":"https://cwfis.cfs.nrcan.gc.ca/","access":"Independent five-minute snapshot poller","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T08:55:05.840740+00:00","accepted_record_count":556,"state":"current","stale_after_minutes":20,"serving_last_good":false,"warning_code":null},{"id":"aqhi","name":"Air Quality Health Index","authority":"Environment and Climate Change Canada","purpose":"Current and forecast AQHI community values","terms_url":"https://weather.gc.ca/airquality/pages/index_e.html","access":"Public ECCC feed","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T08:54:44.330419+00:00","accepted_record_count":134,"state":"current","stale_after_minutes":180,"serving_last_good":false,"warning_code":null},{"id":"air-quality-alerts","name":"Air-quality alerts","authority":"Environment and Climate Change Canada","purpose":"Official air-quality advisories and warnings","terms_url":"https://weather.gc.ca/warnings/","access":"ECCC GeoMet","last_attempted_utc":"2026-09-02T08:56:18.159135+00:00","last_successful_utc":"2026-09-02T08:24:13.624767+00:00","accepted_record_count":1,"state":"current","stale_after_minutes":180,"serving_last_good":false,"warning_code":null}]}