API
A free, read-only JSON API for the current modeled conditions at every curated US launch field — wind and steadiness, density altitude, storm potential, the moisture read, sky, air quality, and today's peaks. No API key, no rate limits, no cost. CORS-open (Access-Control-Allow-Origin: *) — call it straight from a browser. It's static JSON — no query parameters; fetch a file and filter client-side. Refreshed about hourly; check meta.json for the exact generated_at.
Base URL
https://window.fusionspace.co/api/v1
| Endpoint | Returns |
|---|---|
| /conditions.json | The feed — current conditions at every field: wind, steadiness, density altitude, storm potential, moisture, sky, and today's peaks. |
| /conditions.geojson | The same feed as a GeoJSON FeatureCollection — drop it straight into Leaflet, Mapbox, QGIS, or kepler.gl. |
| /sites.json | The curated field roster — name, state, slug, coordinates, board link. Static, no weather data. |
| /sites/{slug}.json | One field on its own — the same conditions for a single site, keyed by its slug (e.g. /sites/sears-samson.json). |
| /meta.json | Self-describing metadata: schema version, generation time, counts, endpoints, docs, license. |
| /openapi.json | OpenAPI 3.1 specification for the endpoints above. |
Try it
# the calmest field right now curl -s https://window.fusionspace.co/api/v1/conditions.json \ | jq '.sites | sort_by(.wind_mph)[0]' # just one field, by its slug curl -s https://window.fusionspace.co/api/v1/sites/sears-samson.json | jq '.site.density_altitude_ft'
Response shape
conditions.json is { schema_version, generated_at, model, count, sites[] }. Each entry in sites:
| Field | Type | Notes |
|---|---|---|
| name | string | Field name, e.g. "SEARS — Samson". |
| state | string | USPS two-letter code. |
| slug | string | Stable URL-safe id — also the per-site filename (/sites/{slug}.json). |
| lat / lon | number | Approximate launch-area coordinates (~1 km). |
| url | string | Deep link to this field's interactive board. |
| wind_mph | number | Sustained surface wind (10 m), mph — rounded. |
| gust_mph | number | null | Gust, mph (rounded) — null when the model omits it. |
| dir_deg | number | Direction the wind blows FROM, degrees (rounded). |
| steadiness | "steady" | "gusty" | "very-gusty" | null | How much the gusts overshoot the sustained wind — the turbulence the sustained limit misses. |
| temp_f | number | null | Temperature, °F (rounded). |
| apparent_temp_f | number | null | "Feels like" temperature, °F (rounded). |
| humidity_pct | number | null | Relative humidity, % (rounded). |
| dewpoint_f | number | null | Dew point, °F — a tight spread with temp_f warns of fog/condensation on cold gear. |
| pressure_hpa | number | null | Station (surface) pressure, hPa (rounded). |
| density_altitude_ft | number | null | Density altitude, ft (to 10) — thin air cuts thrust and speeds descent. The number to watch on a hot, high day. |
| cape_jkg | number | null | Convective energy (CAPE), J/kg (rounded). |
| storm | "none" | "marginal" | "moderate" | "strong" | null | Storm-potential band from CAPE (SPC bands). |
| cloud_cover_pct | number | null | Cloud cover, % (rounded). |
| weather_code | number | null | WMO weather-interpretation code. |
| conditions | string | null | Short sky/precip label from weather_code — e.g. "Clear", "Overcast", "Thunderstorm". |
| is_day | boolean | null | Daylight flag (true = day). |
| aqi | number | null | US EPA Air Quality Index (0–500). null if the Air-Quality API was unreachable. |
| aqi_category | "good" | "moderate" | "usg" | "unhealthy" | "very-unhealthy" | "hazardous" | null | EPA AQI band — smoke/haze cuts tracking visibility. |
| pm2_5 / pm10 | number | null | Fine (≈ smoke) and coarse (≈ dust) particulate, µg/m³. |
| tone | "emerald" | "amber" | "red" | Against the 20 mph line: emerald < 15, amber 15–20, red ≥ 20 mph. |
| today | object | null | Today's peaks + daylight: max_wind_mph, max_gust_mph, dominant_dir_deg, high_f, low_f, precip_in, precip_chance_pct, sunrise, sunset. |
generated_at is null, and sitesmay be empty, if the most recent refresh couldn't reach the provider. Fields with no usable wind are omitted.
Terms & honesty
- Modeled, not observed. This is model surface wind (
gfs_seamless), not live station readings. It leans the picture; it is not authoritative — open a field's full board, or confirm at the field, before you fly. - Best-effort & provided as-is. Coordinates are approximate launch-area points (~1 km), the feed can be up to an hour stale (or empty on a failed refresh), and it comes with no warranty — verify before relying on it.
- Free to use; attribution appreciated. A credit to
window.fusionspace.cois appreciated. Weather data by Open-Meteo (CC BY 4.0). The code itself is under the repo's MIT license — fork it, deploy your own.
Source and issues on GitHub. Prefer the picker? Back to Window.