Current AQI with Smoke Cross-Check

Current AQI observation from the nearest US air quality monitoring station within 50 miles, plus an optional forecast cross-check for locations where the nearest station may be too far away to catch...

Current AQI observation from the nearest US air quality monitoring station within 50 miles, plus an optional forecast cross-check for locations where the nearest station may be too far away to catch a nearby smoke event.

observation is null when no monitoring station reports within 50 miles (observation_status: no_station) or when observations are temporarily unavailable (observation_status: unavailable, with a message in warnings); the smoke forecast cross-check is still returned in that case. During an outage a recent reading may be served instead (observation_status: stale). smoke_forecast is null where no smoke forecast covers the point (the same coverage as /forecast/smoke/point/) or when no forecast tier is fresh. The cross-check never overrides observation; it only flags a discrepancy when a forecast tier and the station differ by 50 or more AQI points (the higher one at 51 or above), so the caller can decide how to present it. discrepancy_direction says which way: forecast_higher (smoke the monitors may be missing) or observed_higher (air quality may be worse than forecast).

GET
/forecast/aqi/point/

Authorization

Authorization<token>

Token-based authentication with required prefix "Token"

In: header

Query Parameters

lat*number

Latitude in decimal degrees (Northern Hemisphere only).

Formatfloat
lon*number

Longitude in decimal degrees.

Formatfloat

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/forecast/aqi/point/?lat=32.78&lon=-96.8"

{  "location": {    "lat": 46.42,    "lon": -120.31  },  "observation": {    "aqi": 42,    "category": "Good",    "color": "#00E400",    "parameter": "PM2.5",    "reporting_area": "Yakima",    "site_name": "Yakima-4th Ave",    "search_radius_miles": 50,    "data_confidence": "found",    "observation_time_local": "2026-08-01T11:00:00 PDT"  },  "observation_status": "found",  "smoke_forecast": {    "primary": "primary",    "models": [      {        "tier": "primary",        "current_pm25_ugm3": 91.7,        "current_aqi": 166,        "current_category": "Unhealthy",        "current_color": "#FF0000",        "discrepancy_flag": true,        "discrepancy_note": "The primary smoke forecast estimates AQI 166 (Unhealthy), well above the nearest monitoring station's AQI 42. Smoke may be present but not yet reflected by nearby ground monitors."      },      {        "tier": "fallback",        "current_pm25_ugm3": 88.4,        "current_aqi": 162,        "current_category": "Unhealthy",        "current_color": "#FF0000",        "discrepancy_flag": true,        "discrepancy_note": "The fallback smoke forecast estimates AQI 162 (Unhealthy), well above the nearest monitoring station's AQI 42. Smoke may be present but not yet reflected by nearby ground monitors."      }    ]  },  "warnings": [],  "aqi_standard": "EPA 40 CFR Part 58 Appendix G (2024 NAAQS, Good <= 9.0 ug/m3)"}