Response Format
All endpoints return JSON. Responses include data, source attribution, and cache metadata.
Common fields
Every successful response includes a sources array for attribution:
{
"sources": [
{
"name": "NWS",
"url": "https://www.weather.gov",
"license": "Public Domain"
}
]
}
See Attribution for display requirements.
Forecast schema
| Field | Type | Description |
h3 | string | H3 cell index |
updated | string | ISO 8601 timestamp |
periods | array | NWS forecast periods used for hourly views |
periods[].startTime | string | ISO 8601 period start |
periods[].endTime | string | ISO 8601 period end |
periods[].temperature | number | Period temperature |
periods[].temperatureUnit | string | Temperature unit |
periods[].precipitationProbability | number | null | Precipitation probability (0-100) |
periods[].windSpeed | string | Wind speed summary |
periods[].windDirection | string | Cardinal direction (N, NE, E, etc.) |
periods[].shortForecast | string | Human-readable condition |
dailyPeriods | array | 10 daily forecast objects when available |
dailyPeriods[].date | string | Forecast date |
dailyPeriods[].highTemperature | number | Daily high temperature |
dailyPeriods[].lowTemperature | number | Daily low temperature |
dailyPeriods[].shortForecast | string | Representative condition |
dailyPeriods[].precipitationProbability | number | null | Daily precipitation probability (0-100) |
dailyPeriods[].windSummary | string | Daily dominant wind direction and speed |
sources | array | Attribution array |
Current conditions schema
| Field | Type | Description |
h3 | string | H3 cell index |
observedAt | string | ISO 8601 timestamp |
station | string | METAR station identifier |
tempF | number | Temperature in Fahrenheit |
feelsLikeF | number | Feels-like temperature |
humidity | number | Relative humidity percentage |
windSpeedMph | number | Wind speed in mph |
windDirection | string | Cardinal direction |
condition | string | Human-readable condition |
icon | string | Icon identifier |
sources | array | Attribution array |
Alerts schema
| Field | Type | Description |
zone | string | NWS forecast zone ID |
alerts | array | Active alerts (empty array if none) |
alerts[].event | string | Alert event type |
alerts[].severity | string | minor, moderate, severe, or extreme |
alerts[].headline | string | Short description |
alerts[].description | string | Full alert text |
alerts[].onset | string | ISO 8601 start time |
alerts[].expires | string | ISO 8601 expiry time |
sources | array | Attribution array |
Air quality schema
| Field | Type | Description |
h3 | string | H3 cell index |
observedAt | string | ISO 8601 timestamp |
aqi | number | Air Quality Index (0-500) |
category | string | AQI category (Good, Moderate, etc.) |
primaryPollutant | string | Primary pollutant (PM2.5, O3, etc.) |
sources | array | Attribution array |
Cache headers
Responses include standard HTTP cache headers:
| Endpoint | Cache-Control max-age |
| Forecast | 900 (15 minutes) |
| Current | 900 (15 minutes) |
| Alerts | 60 (1 minute) |
| Air Quality | 900 (15 minutes) |
Next: Rate Limits & Errors →