Hourly Smoke/AQI Forecast
Hourly PM2.5 and AQI smoke forecast out to 120 hours, combined from three internal forecast tiers (primary, fallback and backstop) into one hourly series.
Hourly PM2.5 and AQI smoke forecast out to 120 hours, combined from three internal forecast tiers (primary, fallback and backstop) into one hourly series.
Coverage. The contiguous US (20-52.9N, -130 to -60.1W). A point no forecast covers gets a
400 with code: LOCATION_OUT_OF_BOUNDS; a covered point whose forecast is briefly missing gets
a 503 DATA_UNAVAILABLE.
forecast starts at the current UTC hour (fhr 0) and is sorted by fhr. Each tier's hours
are matched to the series by valid_time, so it can be treated as a single series without
needing to know which tier produced which hour. Every hour carries its own valid_time.
How far it reaches. Each tier runs on its own schedule, so the series ends where the
furthest-reaching fresh tier ends: usually the backstop, whose run can be up to about 36 hours
old, so expect roughly 84-110 hours. max_fhr gives the last hour returned.
Gaps. Where a higher tier has no value for an hour, the next tier fills it. If no tier
has a value, pm25_ugm3 and aqi are null for that hour. If the backstop is briefly
unavailable, the series ends where the primary and fallback tiers end, and an hour none of them
covers is left out, so read fhr or valid_time rather than relying on list position.
Total-column smoke mass (colmd_kgm2) is only available from the primary and fallback tiers
and is null elsewhere.
Token-based authentication with required prefix "Token"
In: header
Query Parameters
Latitude in decimal degrees (Northern Hemisphere only).
floatLongitude in decimal degrees.
floatResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/forecast/smoke/point/?lat=32.78&lon=-96.8"{ "location": { "property1": null, "property2": null }, "primary_run": "string", "fallback_run": "string", "backstop_run": "string", "hours": 0, "max_fhr": 0, "model_note": "string", "forecast": [ { "fhr": 0, "valid_time": "string", "source": "primary", "pm25_ugm3": 0, "aqi": 0, "aqi_category": "string", "aqi_color": "string", "colmd_kgm2": 0 } ]}
