FLASH Edge Point Forecast - 180 Hour

## FLASH Edge Point Forecast

FLASH Edge Point Forecast

Enhanced weather intelligence powered by dual-source data fusion and advanced meteorological modeling.

This API delivers high-resolution weather forecasts by intelligently blending multiple weather model sources into a unified, seamless product. FLASH Weather provides value-add post processing, derived products, uncertainty quantification, and optimized delivery for production applications.


🌍 Dual-Grid Architecture

Seamless coverage with location-aware resolution:

CONUS High-Resolution:

  • Coverage: 24-50°N, -125 to -65°W (Continental United States)
  • Resolution: ~2.5km native grid (~1597 x 2345 points)
  • Update frequency: Hourly updates
  • Variables: 50+ including hourly snow percentiles, categorical precip type
  • Performance: <100ms response time

Global Standard-Resolution:

  • Coverage: worldwide (-90 to 90°) once worldwide coverage is enabled, 0-90°N (entire Northern Hemisphere) until then
  • Resolution: 0.25° (~25km, 721 x 1440 points worldwide)
  • Update frequency: 6-hourly cycles (00Z, 06Z, 12Z, 18Z)
  • Variables: 40+ with ensemble-derived statistical spreads
  • Performance: 500-1000ms response time
  • Values are matched to the response's hourly timestamps by valid time; metadata.lr_run names the global cycle used
  • When an observation correction is available for the global grid, the first hours of TEMP, DPT, WSPD10 and GUST are corrected toward the latest surface observations and metadata.nowcast.LR gives the observation hour and how many hours changed (not applied to historical requests)
  • Open ocean: served from this grid once worldwide coverage is enabled (until then OCEAN_LOCATION_UNSUPPORTED). Land-surface products (WBGT, concrete pourability, ET rate, frost and dew probability, hot-dry-windy index) are omitted over open water and named in metadata.warnings
  • Accuracy: expect lower accuracy than the CONUS grid, especially in the Southern Hemisphere and other regions with few surface observations (much of Africa, inland South America, remote coasts and islands)

Automatic Grid Selection:

  • API intelligently routes to high-resolution for CONUS locations
  • Seamlessly falls back to global resolution outside CONUS
  • No user configuration required

⚡ Performance Optimizations

  • A full 180-hour point forecast is returned in one read, with no reassembly
  • High-resolution data is served from a fast cache; global data is read on demand

Time Alignment:

  • Forecasts auto-slice to the current UTC hour
  • 15:09 UTC → starts at 15:00 UTC
  • 15:31 UTC → starts at 15:00 UTC
  • Index 0 is always the hour in progress, whatever the request minute
  • That first hour is partly elapsed by definition, it is a forecast for an hour already underway, not an observation. Every later hour is in the future.
  • Check metadata.time_alignment.current_hour_included before labelling index 0 "now": a late or stale model run can begin after the current hour
  • With include=current, index 0 POP is 100 while precipitation is observed at the point (current_hour.overrides keeps the forecast value), so the hour in progress never shows a low chance during observed rain

Frost outlook (include=frost_outlook):

  • One entry per night (local date of the morning it ends), CONUS only; null outside the high-resolution grid or before the fields are published for the served run, an empty list where no night is covered
  • frost_probability: chance of visible frost on open ground at some point of the night, the night's peak of the hourly frost probability
  • coverage: the expected share of the surrounding 5-10 km with frost (none, low_spots_only, scattered, widespread) with percent and its range (percent_p10 to percent_p90) and a confidence (high, medium, low). "Scattered, low confidence, range 0-95%" reads as "scattered frost possible, could be widespread or none"
  • intensity: where frost forms, light, moderate, heavy or killing_freeze, with its confidence
  • ground_min and shelter_min: the night's minimum on open ground (frost forms there) and in the air at 5 ft, as p10/p50/p90; the p10-p90 range holds about 80% of nights
  • freeze_probability and hard_freeze_probability: chance the air at 5 ft reaches 32F and 28F
  • Temperatures in F (english) or C (metric)

Air Quality (include=air_quality):

  • Adds air_quality.aqi, pm25_ugm3, category and source, one entry per timestamps hour
  • The same fused smoke forecast /forecast/smoke/point/ serves (primary, then fallback, then backstop), matched by valid time
  • Hours past the smoke forecast's reach (about 120 hours) are null; the whole block is null where no smoke forecast covers the point
  • observation, observation_status and smoke_forecast are the /forecast/aqi/point/ cross-check for the hour in progress; discrepancy_flag marks that hour when the nearest monitor and the forecast differ by 50+ AQI points. With smoke_forecast discrepancy_direction: observed_higher, air quality may be worse than forecast
  • smoke_source, where enabled, names the likely source: recent prescribed burns within 25 miles or the nearest uncontained wildfire (100+ acres) within 60 miles, from NIFC wildland fire incident data; null otherwise
  • WX_CODE smoke codes (13 patchy smoke, 14 smoke, 15 dense smoke) mean visibly smoky air, AQI 101 and up; a Moderate AQI (51-100) shows only here, not as a weather code

Observation Nowcast (CONUS):

  • Each hour, the first 0-6 hours of TEMP, DPT, WSPD10 and GUST are corrected toward the latest surface observations, fading out with lead time
  • Their _LOW/_MEDIAN/_HIGH bands shift with them; RH, HEAT_INDEX, WIND_CHILL and the degree days move by the change the correction makes to their formula, and TMAX/TMIN stay at or beyond the corrected hours of the same day. WBGT is not adjusted
  • When applied, metadata.nowcast.HR gives the observation hour and how many hours changed
  • Not applied to historical requests (lookback_hours)

Convection Correction (CONUS, where enabled):

  • The first 6 hours (CONVECTION_OVERLAY_MAX_LEAD) of PROB_TS, POP and the hourly liquid precipitation (with every total, 24 h sum and percentile that carries it) are corrected toward the latest radar and lightning
  • In the first five forecast hours POP is never lowered by it
  • Added rain only lands in hours that are warm enough for rain or already typed as rain
  • Where it moves POP, PROB_TS or rain, up or down, PTYPE_PRIMARY/PTYPE_SECONDARY, the PROB_*_ABS values and WX_CODE_PRIMARY/WX_CODE_SECONDARY follow, so the icon matches the numbers
  • It never raises a code to a severe storm code (95-98). A served severe storm code drops to the matching thunder, rain or quiet code when the correction takes PROB_TS below 50% or POP below 25%. Extreme winter codes are kept
  • When applied, metadata.convection.HR gives the run, the anchor hour and how many hours changed

🔬 Value-Added Derived Products

Beyond raw model output - production-ready meteorological intelligence:

Heat Stress Indices (WBGT):

  • Calculated for 4 surface types: asphalt, concrete, grass, turf
  • Uses natural wet bulb + surface-adjusted globe temperature
  • Critical for outdoor worker safety, athletics, construction planning
  • Surface-specific solar absorption and heat retention modeling
  • WBGT_SITE: Site-specific WBGT for registered locations, automatically included when the requested lat/lon matches a registered site profile (within 500 m). Applies site-calibrated surface mix, wind shelter, and solar exposure corrections. No extra parameters needed.
  • National Weather Service fallback: when the current FLASH forecast has no WBGT value for the point in the requested window, the National Weather Service gridpoint WBGT forecast fills every requested WBGT variable, matched to timestamps by valid time in the requested units, and metadata.wbgt_source is nws. That forecast has no surface type, so all four surfaces carry the same value. US states and territories only; elsewhere, or where no WBGT forecast is published for the point, the variables stay unavailable as before. FLASH and National Weather Service values are never mixed in one response.
  • heat_policy (optional, e.g. heat_policy=kshsaa): adds a top-level heat_policy object mapping every WBGT series in data to a published activity-modification policy's zones. heat_policy.zones lists each zone once (key, name, color, °F bounds, guidance text); heat_policy.data holds one zone key per hour for each WBGT variable, aligned with timestamps. Thresholds are °F whatever units is. Request a WBGT variable (e.g. vars=wbgt_grass) or a registered site location so there is something to classify.

Concrete Pourability Index (0-100):

  • Evaluates optimal conditions for concrete placement
  • Factors: temperature, evaporation rate, precipitation, solar load, wind
  • Provides best/worst/likely scenarios using temperature percentiles
  • Industry-specific decision support

UV Index:

  • Derived from downwelling shortwave radiation (DSWRF), cloud-adjusted
  • Scale 0–11 (dimensionless UVI, clamped at extreme per WHO standard); same value in metric and english modes
  • Covers the full 180-hour forecast window

Daily Temperature Envelope (TMAX / TMIN):

  • One value per local calendar day (midnight to 11pm local, by longitude), the same at every hour of that day
  • TMAX is the daytime max (12Z-00Z) for that day, sub-hourly peaks included. TMIN is the overnight min (00Z-12Z) ending that morning
  • In the first 48 hours, the day's hourly max or min replaces them when it is clearly beyond them (e.g. a front passing at night)
  • The first, partial day's TMIN looks ahead to the next morning's low. A day with no TMAX/TMIN value uses the hourly max/min
  • CONUS, and outside CONUS where worldwide coverage provides them (otherwise listed under metadata.warnings as not available); full forecast array; inherits TEMP units (°C metric, °F english)

Wind Chill & Heat Index:

  • Apparent temperature calculations using NWS algorithms
  • Automatically applied based on ambient conditions
  • Critical for public safety messaging

Precipitation Type Separation:

  • Rain, snow, freezing rain, sleet separated using NBM precipitation type probabilities (CONUS) and GEFS precipitation type (worldwide)
  • SNOW_HOURLY is an expected value: in a mixed or uncertain hour it carries only the snow share of the precipitation
  • CONUS snowfall is NBM snowfall through the full 180 hours, shaped to the hourly precipitation; outside CONUS it is the snow share of the precipitation at a temperature-dependent Snow-to-Liquid Ratio (SLR) from 3:1 (above freezing) to 28:1 (near -15 °C)
  • Snow bands SNOW_HOURLY_P10/P50/P90 are NBM's to 48 hours, then the precipitation percentiles at the hour's snow per mm of liquid
  • asnow in vars is an alias of SNOW_HOURLY

Accumulation Products:

  • Total accumulation (since forecast start)
  • 24-hour rolling accumulation
  • Separate rain/snow tracking with uncertainty bands
  • Freezing rain: FICEAC (hourly ice accumulation) with uncertainty bands FICEAC_P10, FICEAC_P50, FICEAC_P90. In CONUS FICEAC is NBM's through the full 180 hours; the bands are NBM's to 54 hours, then the precipitation percentiles at the hour's ice per mm of liquid. The bands are CONUS only; FICEAC itself is also served outside CONUS where worldwide coverage provides it

Weather Codes:

  • WX_CODE_PRIMARY / WX_CODE_SECONDARY, standardized integer codes 0-98
  • Not a WMO code table. Ask FLASH for the full code reference rather than assuming a code's meaning
  • IS_DAYTIME: 1 when the sun is above the horizon at that hour and pixel (from modeled solar irradiance), 0 otherwise. Use this for day/night icon selection instead of a fixed clock-hour range, it is correct at every latitude and season, a fixed range is not
  • daily: top-level array in the response, one entry per local calendar day in the point's own time zone, daylight saving aware (date, wx_code, wx_code_secondary, pop, temperature_high, temperature_low, temperature_low_observed, temperature_low_night, summary, precip_range, precip_total, cloud_cover_day, upside_risk, thunder_chance). wx_code is the highest-priority code across that day's hours, not the most frequent one, so a day with a brief severe event shows the severe code even if most hours were clear. Within one tier the most significant code wins (heavy rain over light rain), a day with 1 inch or more of rain reads Heavy Rain (44), and a fog secondary is dropped from an hour whose rain (0.1 in/hr or more) explains the low visibility. Isolated or scattered thunderstorms (92, 93) on a day whose rain is likelier or 1 inch or more read as the rain with the thunder code as wx_code_secondary. A sky, wind or temperature day with measurable rain names the shower chance (primary at 20% or more, secondary at 10-20%), and a quiet day's sky word comes from cloud_cover_day when TCC and IS_DAYTIME are requested. In CONUS, through 48 h, the day's peak 1 h PROB_TS adds a thunder code calibrated to observed thunder days (6% isolated, 10% scattered, 18% likely), since NBM's 1 h chance rarely reaches the hourly 20% step. thunder_chance is that calibrated chance (0-100) of a thunderstorm during the local day, from the day's peak 1 h PROB_TS; null outside CONUS, when PROB_TS is not requested, when the peak is under 6%, or when the response does not reach the day's last hour within 48 h (past 48 h PROB_TS is a 3 h chance; an end_hour that cuts the day short leaves its peak partial). Once thunder is observed at the point today's thunder_chance is 100. upside_risk is null, or &#123;thunder, rain, rain_local_max, message, source_run} when HRRR runs well above the forecast (lightning on a day without a thunder code, or a 20 km rain maximum of 1.5 inches and 3 times the day's QPF); its message is also appended to summary. pop is the day's peak hourly probability, as NWS reports a period's PoP. summary is one plain sentence built from the hourly values (when rain starts, peaks and ends, the likely amount, thunder, gusts of 30 mph or more), null on a quiet day. PRECIP is hour-ending, so the value at local midnight counts for the day before. precip_total is the day's PRECIP sum and precip_range is [low, high] from RAIN_24H_LOW and RAIN_24H_HIGH at local midnight, both full days only and only when those are requested. cloud_cover_day is the mean TCC over the day's daylight hours. sky_trend (increasing, decreasing or null) and sky_trend_label (Increasing Clouds, Becoming Cloudy, Decreasing Clouds, Becoming Sunny or null) are set only when wx_code is a sky code (0-4) and the median TCC of the last third of the daylight hours left differs from the first third's by 40 points and 2 sky codes or more, with 6 or more daylight hours. Show the label in place of the sky word when it is set; wx_code stays the mean-based sky code. When TMAX/TMIN are requested, temperature_high and temperature_low come from those (TMIN on full days only). TMAX includes peaks between hours, and on some days an hourly value sits above it. Full-day TMIN is the overnight min ending that morning (roughly 7pm the prior evening to 7am local), so on some days an hourly TEMP sits below temperature_low. Otherwise they are the calendar-day max and min of the hourly temperatures (midnight to 11:59pm local). For today, when a nearby station reported in the last 75 minutes, the observed high since local midnight is folded into temperature_high; TMAX still counts while the afternoon peak is ahead or when the station's record does not reach back to midnight. When that record does reach back to midnight, temperature_low is the observed low combined with the hours still ahead and temperature_low_observed is true. It is false otherwise and on every other day; when it is false, today's temperature_low is only the coolest hour left, so show temperature_low_night as today's low. temperature_low_night is "tonight's low" in the usual forecasting sense, dusk through the following dawn, which for most locations is early the next calendar day, null when no night segment exists for that day

🔥 Fire Weather Products (CONUS Only)

Four fire weather products are available for the contiguous United States, computed from model output and enhanced with real-time observational data for the near-term window.

FLASH_FWX_INDEX, Fire Weather Index (0-100)

Composite fire danger index. Incorporates Fosberg fire weather atmospheric conditions, precipitation probability suppression, dry lightning amplification, and hot-dry-windy amplification. The structure is multiplicative: high values require dangerous atmospheric conditions AND low precipitation probability simultaneously. Values above 80 indicate exceptional fire danger typically associated with red-flag conditions.

  • Range: 0-100 (dimensionless)
  • Available: F001-F180, CONUS only
  • F001-F005: Atmospheric fire weather conditions with real-time lightning-enhanced dry thunderstorm probability
  • F006-F180: Extended forecast using model-native fire weather and dry lightning fields

FIRE_HOTSPOT_RISK, Fire Hotspot Risk (0-100)

Combines FLASH_FWX_INDEX with a point-level dry lightning ignition probability estimate. Useful for identifying specific locations at elevated risk from lightning-caused ignitions rather than broad regional fire weather assessment. Requires both elevated DRYTPROB and a high FLASH_FWX_INDEX to score high, neither alone is sufficient.

  • Range: 0-100 (dimensionless)
  • Available: F001-F180, CONUS only

HDW_INDEX, Hot-Dry-Windy Index (unbounded, hPa·m/s)

Atmospheric fire potential indicator based on Srock et al. (2018). Computed as surface gust speed (m/s) × vapor pressure deficit (hPa). Captures the combined effect of wind intensity and atmospheric drying demand on fuels. Does not account for fuel state, precipitation, or ignition, it is a measure of atmospheric potential for extreme fire behavior. Used internally as an amplifier in FLASH_FWX_INDEX but also available standalone.

  • Range: ≥ 0, unbounded. Typical values: 0-200 (low stress), 200-600 (elevated), 600+ (extreme). Significant fire weather events commonly exceed 800; Santa Ana / Diablo wind events can exceed 1500.
  • Available: F001-F180, CONUS only

DRYTPROB, Dry Thunderstorm Probability (%)

Probability of a dry thunderstorm (lightning without significant precipitation). Dry lightning is the primary ignition source for wildfires in the western US. Useful standalone for fire weather monitoring and as a trigger for pre-positioning or evacuation decisions.

  • Range: 0-100%
  • Available: F006-F072, CONUS only
  • F001-F005 enhanced in-place with real-time lightning probability data

FIRE_INDEX, Fosberg Fire Weather Index (dimensionless)

Physics-based fire weather severity index derived from equilibrium moisture content of fine dead fuels, wind speed, and relative humidity. Complements FLASH_FWX_INDEX by providing an atmospheric fire potential signal without multiplicative suppression weighting.

  • Range: 0-100+ (dimensionless)
  • Available: F001-F180, CONUS only

Accessing fire weather data:

GET /forecast/point?lat=37.5&lon=-119.5&vars=fire&units=english
GET /forecast/point?lat=37.5&lon=-119.5&vars=FLASH_FWX_INDEX,DRYTPROB,GUST_P90

📊 Uncertainty Quantification

Probabilistic forecasts from ensemble statistics:

Percentile Products (LOW, MEDIAN, HIGH):

  • Temperature: Normal distribution (symmetric)
  • Wind/Gust: Log-normal distribution (right-skewed)
  • Precipitation: Gamma distribution (zero-inflated, heavy tail)
  • Humidity/Cloud: Beta distribution (bounded 0-100%)

Derived from:

  • Multi-model ensemble spread and percentile fields
  • Scientific distribution fitting based on variable physics and post-processing

Confidence Metrics:

  • Temperature confidence: 0-100% based on ensemble agreement
  • Spread variables indicate forecast uncertainty
  • Larger spread = lower confidence, more scenario variability

🎯 Comprehensive Variable Catalog

70+ variables including:

Core Meteorology:

  • Temperature, dewpoint, humidity, pressure
  • Wind speed/gust, direction (WDIR on both grids; U/V components on global)
  • Precipitation rate, type, probability
  • Cloud cover, visibility, ceiling

Derived Indices:

  • WBGT (4 surfaces), wind chill, heat index
  • UV Index (from shortwave radiation, cloud-adjusted)
  • TMAX / TMIN (daily high and low per local day; CONUS, and outside CONUS where available)
  • Concrete pourability (3 scenarios)
  • Weather classification codes

Fire Weather (CONUS):

  • FLASH_FWX_INDEX, FIRE_INDEX, FIRE_HOTSPOT_RISK, DRYTPROB, HDW_INDEX

Energy:

  • HDD_HOURLY, CDD_HOURLY (hourly degree day increments)
  • HDD_TOTAL, CDD_TOTAL (cumulative from forecast run start)
  • PRECIP_CONFIDENCE (precipitation forecast confidence)

Probabilities:

  • Probability of Precipitation (PoP)
  • Categorical probabilities: rain, snow, freezing rain, sleet
  • Thunderstorm and dry thunderstorm probability
  • Absolute probabilities (phase-specific)

Uncertainty:

  • Temperature: LOW, MEDIAN, HIGH percentiles + TEMP_CONFIDENCE
  • Wind/Gust: P10, P50, P90 percentiles
  • Precipitation: P10, P50, P90 + PRECIP_CONFIDENCE
  • Accumulation uncertainty bands for rain and snow

Accumulations:

  • Total and 24h rolling for rain and snow
  • With full uncertainty bands (P10/P50/P90)

📦 User-Friendly Features

Variable Groups: "- basic: temperature, precipitation, wind_speed, humidity, gust, clouds, dewpoint, weather_code (8 variables) " "- weather: All basic + visibility, wind_chill, heat_index, rain, snow, pop, secondary wx code (15 variables) " "- winter: Temperature, snow accumulation, wind_chill, ice, probabilities, uncertainty bands (25 variables) " "- summer: Temperature, heat_index, WBGT indices, thunderstorms, solar, rain accumulation (21 variables) " "- construction: Temperature, precipitation, heat stress, concrete pourability, wind, solar (19 variables) " "- aviation: Temperature, wind, visibility, ceiling, icing, thunderstorms, pressure (21 variables) " "- athletics: Heat/cold safety, precipitation, wind, lightning, WBGT indices (24 variables) " "- agronomy: Growing conditions, freeze risk, water management, solar, heat stress (21 variables) " "- marine: Wind components, visibility, pressure, sea conditions, severe weather (21 variables) " "- energy: Temperature, degree days (hourly + cumulative), solar, wind power, ice, severe weather (24 variables) " "- fire: Fire weather indices, dry lightning, atmospheric drivers, CONUS only (13 variables) " "- all: Everything available "

Automatic Unit Conversion:

  • Metric: °C, km/h, mm, mb
  • English: °F, mph, inches, inHg
  • Converts at request time - no re-processing needed

Time Filtering:

  • Request specific hour ranges (e.g., next 48 hours)
  • Applied after time alignment for intuitive hour numbering

🚀 Example Requests

# Basic weather (auto-detects grid, returns 'basic' group)
GET /forecast/point?lat=40.7128&lon=-74.0060

# Human-readable names
GET /forecast/point?lat=40.7&lon=-74.0&vars=temperature,precipitation,wind_speed

# Variable groups
GET /forecast/point?lat=40.7&lon=-74.0&vars=construction

# English units
GET /forecast/point?lat=40.7&lon=-74.0&vars=temperature&units=english

# UV index and daily temp envelope
GET /forecast/point?lat=34.05&lon=-118.25&vars=uv_index,tmax,tmin&units=english

# Fire weather (CONUS only)
GET /forecast/point?lat=37.5&lon=-119.5&vars=fire&units=english

# Current AQI
GET /forecast/aqi/point?lat=32.78&lon=-96.80

# Time filtering (next 48 hours after alignment)
GET /forecast/point?lat=40.7&lon=-74.0&start_hour=1&end_hour=48

# Everything with uncertainty
GET /forecast/point?lat=40.7&lon=-74.0&vars=all

📋 Response Structure

{
  "location": {
    "lat": 40.7128,
    "lon": -74.0060,
    "grid_y": 1234,
    "grid_x": 5678,
    "recommended_grid": "HR",
    "region": "CONUS"
  },
  "run": "2025122912",
  "timestamps": ["2025-12-29T16:00:00", "2025-12-29T17:00:00", ...],
  "units": "metric",
  "data": {
    "TEMP": [5.2, 4.8, 4.1, ...],
    "TEMP_LOW": [3.1, 2.9, 2.4, ...],
    "TEMP_HIGH": [7.3, 6.7, 5.8, ...],
    "PRECIP": [0.0, 0.2, 0.8, ...],
    "WBGT_GRASS": [18.5, 17.2, 16.8, ...],
    "WBGT_SITE": [32.1, 31.4, 30.8, ...]
  },
  "metadata": {
    "time_alignment": {
      "current_utc": "2025-12-29T15:47:23+00:00",
      "target_hour": "2025-12-29T16:00:00+00:00",
      "hours_skipped": 4,
      "remaining_hours": 176
    },
    "path": "hot",
    "variables_returned": 8,
    "variables_requested": 8,
    "variables_masked": 0,
    "site_id": "green-level-hs",
    "site_name": "Green Level High School",
    "units": {
      "TEMP": "°C",
      "WBGT_GRASS": "°C",
      "WBGT_SITE": "°C"
    }
  },
  "processing_time_ms": 120.4
}

⚠️ Error Handling

Detailed error responses with:

  • Human-readable descriptions
  • Machine-readable error codes
  • Retry guidance for temporary failures
  • Contextual debugging details

Common error codes:

  • CYCLE_NOT_FOUND: (404) Historical run requested is beyond 72-hour retention or invalid
  • LOCATION_OUT_OF_BOUNDS: Point outside the coverage area (the Northern Hemisphere until worldwide coverage is enabled)
  • OCEAN_LOCATION_UNSUPPORTED: Point is over open ocean with no forecast data. Open ocean is served once worldwide coverage is enabled, so this is returned only until then
  • INVALID_VARIABLES: Unrecognized variable names
  • CACHE_WARMING: System loading data (retry in 60s)
  • REDIS_UNAVAILABLE: Temporary cache issue (retry in 10s)
  • S3_UNAVAILABLE: Storage temporarily unavailable (retry in 30s)
  • GLOBAL_DATA_UNAVAILABLE: Global grid data temporarily unavailable outside CONUS (retry in 60s)
  • DATA_MASKED_CONUS: Requested LR data in CONUS (use HR)
  • DATA_MASKED_GLOBAL: Requested HR data outside CONUS (use LR)
GET
/forecast/point/

Authorization

Authorization<token>

Token-based authentication with required prefix "Token"

In: header

Query Parameters

end_hour?integer

Ending hour, as an inclusive 1-based index into the returned (time-aligned) array. Clamped silently to the hours available. Must be sent together with start_hour.

heat_policy?"kshsaa"

Optional. Adds a heat_policy block that maps each WBGT value in the response to the named policy's activity-modification zone, with the zone's color and guidance text. Thresholds are in °F whatever units is. Omit it and the response is unchanged.

Value in

  • "kshsaa"
include?string

Optional extra blocks, comma-separated, e.g. current,nws_alerts. current adds a current object holding the observed conditions at the point, the same body as /observations/current/ (or its error body with code when no observation qualifies; the forecast still returns), and a current_hour object: while precipitation is observed at the point, POP for index 0 (the hour in progress) is served as 100, observed thunder or rain that outranks the forecast code replaces WX_CODE_PRIMARY at index 0 and today's daily row, and current_hour.overrides gives the forecast value it replaced. nws_alerts adds an nws_alerts object with the NWS watches, warnings and advisories in effect at the point: count, alerts and metadata, the same as /alerts/nws/?lat=&lon= (or ALERTS_NOT_READY with retry_after before the first alert load; the forecast still returns). nws_alerts needs NWS alerts access, the same as /alerts/nws/, or a weather widget key or partner_weather embed token: any other caller gets a 403 for the whole request. current needs Observations access or a widget key: a forecast-only API key gets a 403 for the whole request. air_quality adds an air_quality object with the hourly smoke/AQI forecast on the same timestamps, the values /forecast/smoke/point/ serves (null when no smoke forecast covers the point; the forecast still returns). air_quality needs smoke forecast access, a widget key or a partner_weather embed token: any other API key or embed token gets a 403 for the whole request. frost_outlook adds a frost_outlook list, one entry per night: frost chance, coverage category with its range and confidence, intensity, ground and air minimum ranges, freeze and hard freeze chances (null outside the CONUS grid).

lat*number

Latitude in decimal degrees (-90 to 90). Worldwide coverage is rolling out: until it is enabled, only 0 to 90 is accepted and southern latitudes return INVALID_LATITUDE.

Formatfloat
lon*number

Longitude in decimal degrees (-180 to 180)

Formatfloat
lookback_hours?integer

Optional: Number of hours to look back for a historical forecast cycle (1-70). Overrides the latest forecast and serves an earlier forecast cycle. Returns 404 if cycle is beyond retention window or hasn't finished generating.

start_hour?integer

Starting hour, as a 1-based index into the returned (time-aligned) array, not an offset. start_hour=1 is the current UTC hour. Must be sent together with end_hour.

units?string

Unit system for returned data. Metric: Celsius, km/h, mm, mb (hPa). English: Fahrenheit, mph, inches, inHg

Default"english"

Value in

  • "english"
  • "metric"
vars?string

Optional: Comma-separated list of variables to return. Use human-readable names (e.g., 'temperature', 'precipitation', 'wind_speed'). The API automatically selects high-resolution (_HR) or global (_LR) data based on location.

Variable Groups:

  • basic: temperature, precipitation, wind_speed, humidity, gust, clouds, dewpoint, weather_code
  • weather: All basic + visibility, wind_chill, heat_index
  • winter: Temperature, snow accumulation, wind_chill, ice, probabilities
  • summer: Temperature, heat_index, WBGT indices, thunderstorms
  • construction: Temperature, precipitation, heat stress, concrete pourability, wind
  • aviation: Temperature, wind, visibility, ceiling, icing, thunderstorms
  • athletics: Heat/cold safety, precipitation, wind, lightning
  • agronomy: Growing conditions, freeze risk, water management, solar
  • marine: Wind components, visibility, pressure, sea conditions
  • energy: Temperature, solar, wind power, ice accumulation, severe weather
  • all: Everything available

Examples: temperature, precip, wind, humidity, snow_total

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/forecast/point/?end_hour=24&heat_policy=kshsaa&lat=40.7128&lon=-74.006&lookback_hours=4&start_hour=1&units=metric&vars=temperature%2Cprecipitation%2Cwind_speed%2Chumidity"
{  "location": {    "lat": 40.7128,    "lon": -74.006,    "grid_y": 1523,    "grid_x": 1842,    "recommended_grid": "HR",    "region": "CONUS"  },  "run": "2026041412",  "timestamps": [    "2026-04-14T12:00:00",    "2026-04-14T13:00:00"  ],  "units": "english",  "processing_time_ms": 87.4,  "data": {    "TEMP": [      58.2,      60.1    ],    "WSPD10": [      8.3,      9.1    ],    "UV_INDEX": [      4.2,      5.8    ],    "TMAX": [      64.5,      64.5    ],    "TMIN": [      52.1,      53    ]  },  "metadata": {    "path": "hot",    "variables_returned": 5,    "variables_requested": 5,    "variables_masked": 0,    "units": {      "TEMP": "°F",      "WSPD10": "mph",      "UV_INDEX": "UVI",      "TMAX": "°F",      "TMIN": "°F"    }  }}

On this page