{"info":{"version":"1.0.0","description":"Calibrated forecasts, climate outlooks, terrain context, and active public weather alerts. Timestamp ranges are start-inclusive and end-exclusive; date ranges include both the start and end dates.","title":"Weatherkind Weather API"},"components":{"schemas":{"Location":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"maximum":90,"type":"number","minimum":-90},"longitude":{"maximum":180,"type":"number","minimum":-180}},"additionalProperties":false},"Warning":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true},"ForecastUnits":{"type":"object","required":["system","degrees","elevation","percentage","precipitation","precipitation_rate","pressure","temperature","visibility","wind_speed"],"properties":{"system":{"type":"string","enum":["metric","us","si"]},"percentage":{"const":"%"},"elevation":{"type":"string","enum":["m","ft"]},"temperature":{"type":"string","enum":["degC","degF","K"]},"precipitation":{"type":"string","enum":["mm","in","m"]},"precipitation_rate":{"type":"string","enum":["mm/h","in/h","m/s"]},"pressure":{"type":"string","enum":["hPa","inHg","Pa"]},"wind_speed":{"type":"string","enum":["km/h","mph","m/s"]},"visibility":{"type":"string","enum":["km","mi","m"]},"degrees":{"const":"degree"}},"additionalProperties":false},"HistoricalUnitOverrides":{"type":"object","properties":{"temperature":{"type":"string","enum":["degC","degF","K"]},"precipitation":{"type":"string","enum":["mm","in","m"]}},"additionalProperties":false},"HistoricalUnits":{"type":"object","required":["system","temperature","precipitation"],"properties":{"system":{"type":"string","enum":["metric","us","si"]},"temperature":{"type":"string","enum":["degC","degF","K"]},"precipitation":{"type":"string","enum":["mm","in","m"]}},"additionalProperties":false},"UnitOverrides":{"type":"object","properties":{"elevation":{"type":"string","enum":["m","ft"]},"temperature":{"type":"string","enum":["degC","degF","K"]},"precipitation":{"type":"string","enum":["mm","in","m"]},"precipitation_rate":{"type":"string","enum":["mm/h","in/h","m/s"]},"pressure":{"type":"string","enum":["hPa","inHg","Pa"]},"wind_speed":{"type":"string","enum":["km/h","mph","m/s"]},"visibility":{"type":"string","enum":["km","mi","m"]}},"additionalProperties":false},"UnitSystem":{"default":"metric","type":"string","enum":["metric","us","si"]},"AccuracyRequest":{"type":"object","required":["scope"],"properties":{"scope":{"$ref":"#/components/schemas/AccuracyScope"},"include":{"default":[],"type":"array","items":{"type":"string","enum":["stations"]},"uniqueItems":true},"units":{"$ref":"#/components/schemas/UnitSystem"},"days":{"default":30,"maximum":365,"type":"integer","minimum":7},"daily":{"$ref":"#/components/schemas/DailyAccuracyRequest"},"minutely":{"$ref":"#/components/schemas/MinutelyAccuracyRequest"},"hourly":{"$ref":"#/components/schemas/HourlyAccuracyRequest"},"compare_to":{"default":[],"type":"array","items":{"type":"string","enum":["persistence"]},"uniqueItems":true},"unit_overrides":{"$ref":"#/components/schemas/HistoricalUnitOverrides"}},"additionalProperties":false,"anyOf":[{"required":["minutely"]},{"required":["hourly"]},{"required":["daily"]}]},"AccuracyResponse":{"type":"object","required":["scope","evaluation_period","coverage","units","updated_at","stale","warnings"],"properties":{"scope":{"type":"object"},"coverage":{"type":"object","required":["available","basis","verified_areas"],"properties":{"available":{"type":"boolean"},"radius_km":{"type":"number"},"basis":{"type":"string"},"verified_areas":{"type":"integer"}}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"units":{"$ref":"#/components/schemas/HistoricalUnits"},"stale":{"type":"boolean"},"updated_at":{"type":"string","format":"date-time"},"daily":{"type":"array","items":{"type":"object","required":["lead_days"],"properties":{"lead_days":{"type":"integer","minimum":0}},"additionalProperties":true}},"stations":{"type":"array","items":{"type":"object"}},"minutely":{"type":"array","items":{"type":"object","required":["lead_minutes"],"properties":{"lead_minutes":{"type":"integer","minimum":0}},"additionalProperties":true}},"hourly":{"type":"array","items":{"type":"object","required":["lead_hours"],"properties":{"lead_hours":{"type":"integer","minimum":0}},"additionalProperties":true}},"evaluation_period":{"type":"object","required":["start","end","data_through","days"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"days":{"type":"integer"},"data_through":{"type":["string","null"],"format":"date"}}}},"additionalProperties":false},"AccuracyScope":{"oneOf":[{"type":"object","required":["type","location"],"properties":{"type":{"const":"local"},"location":{"$ref":"#/components/schemas/AlertLocation"}},"additionalProperties":false},{"type":"object","required":["type","region"],"properties":{"type":{"const":"region"},"region":{"type":"string","enum":["mountain","arid_interior","pacific_coast","northern_continental","central_plains","humid_east","gulf_coast","tropical","arctic"]}},"additionalProperties":false},{"type":"object","required":["type"],"properties":{"type":{"const":"network"}},"additionalProperties":false}]},"Alert":{"type":"object","required":["id","status","message_type","sent_at","effective_at","onset_at","expires_at","ends_at","event","headline","description","instruction","categories","response_types","urgency","severity","certainty","language","issuer","references","affected_areas"],"properties":{"id":{"type":"string","description":"Stable public identifier for this alert message"},"status":{"type":"string","enum":["actual","exercise","system","test","draft"]},"description":{"type":["string","null"]},"references":{"type":"array","items":{"type":"string"}},"severity":{"type":"string","enum":["extreme","severe","moderate","minor","unknown"]},"issuer":{"type":"object","required":["name"],"properties":{"name":{"type":["string","null"]}},"additionalProperties":false},"event":{"type":["string","null"]},"expires_at":{"type":["string","null"],"format":"date-time"},"language":{"type":"string"},"sent_at":{"type":["string","null"],"format":"date-time"},"categories":{"type":"array","items":{"type":"string"}},"geometry":{"description":"Present only when geometry is requested.","oneOf":[{"type":"null"},{"type":"object","description":"GeoJSON geometry"}]},"ends_at":{"type":["string","null"],"format":"date-time"},"affected_areas":{"type":"array","items":{"type":"object","required":["description"],"properties":{"description":{"type":"string"}},"additionalProperties":false}},"certainty":{"type":"string","enum":["observed","likely","possible","unlikely","unknown"]},"effective_at":{"type":["string","null"],"format":"date-time"},"headline":{"type":["string","null"]},"instruction":{"type":["string","null"]},"message_type":{"type":"string","enum":["alert","update","cancel","ack","error"]},"onset_at":{"type":["string","null"],"format":"date-time"},"response_types":{"type":"array","items":{"type":"string"}},"urgency":{"type":"string","enum":["immediate","expected","future","past","unknown"]}},"additionalProperties":false},"AlertLocation":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"maximum":90,"type":"number","minimum":-90},"longitude":{"maximum":180,"type":"number","minimum":-180}},"additionalProperties":false},"AlertsRequest":{"type":"object","required":["location"],"properties":{"include":{"default":[],"type":"array","items":{"type":"string","enum":["geometry"]},"uniqueItems":true},"location":{"$ref":"#/components/schemas/AlertLocation"}},"additionalProperties":false},"AlertsResponse":{"type":"object","required":["location","alerts","updated_at","stale","warnings"],"properties":{"location":{"$ref":"#/components/schemas/AlertLocation"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"stale":{"type":"boolean"},"updated_at":{"type":"string","format":"date-time"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}}},"additionalProperties":false},"CurrentRequest":{"type":"object","required":["variables"],"properties":{"variables":{"type":"array","items":{"type":"string","enum":["temperature","apparent_temperature","dew_point","condition","humidity","pressure","wind_speed","wind_gust","wind_direction","precipitation","rain_total","snow_total","precipitation_probability","cloud_cover","uv_index","air_quality_index"]},"minItems":1,"uniqueItems":true}},"additionalProperties":false},"DailyAccuracyRequest":{"type":"object","required":["variables"],"properties":{"variables":{"type":"array","items":{"type":"string","enum":["temperature_max","temperature_min","precipitation","precipitation_probability"]},"minItems":1,"uniqueItems":true},"lead_days":{"type":"array","items":{"type":"integer","enum":[1,2,3,4,5,6,7,8,9,10,11,12,13,14]},"minItems":1,"uniqueItems":true}},"additionalProperties":false},"DailyForecastRequest":{"oneOf":[{"type":"object","required":["days","variables"],"properties":{"variables":{"type":"array","items":{"type":"string","enum":["temperature_max","temperature_min","condition","precipitation","rain_total","snow_total","precipitation_probability","sunrise","sunset"]},"minItems":1,"uniqueItems":true},"days":{"maximum":16,"type":"integer","minimum":1}},"additionalProperties":false},{"type":"object","required":["start","end","variables"],"properties":{"start":{"type":"string","format":"date","description":"First local date, inclusive"},"end":{"type":"string","format":"date","description":"Last local date, inclusive"},"variables":{"type":"array","items":{"type":"string","enum":["temperature_max","temperature_min","condition","precipitation","rain_total","snow_total","precipitation_probability","sunrise","sunset"]},"minItems":1,"uniqueItems":true}},"additionalProperties":false}]},"ForecastRequest":{"type":"object","required":["location"],"properties":{"location":{"$ref":"#/components/schemas/Location"},"units":{"$ref":"#/components/schemas/UnitSystem"},"current":{"$ref":"#/components/schemas/CurrentRequest"},"timezone":{"default":"auto","type":"string","description":"auto or an IANA timezone"},"daily":{"$ref":"#/components/schemas/DailyForecastRequest"},"hourly":{"$ref":"#/components/schemas/HourlyRequest"},"quarter_hourly":{"$ref":"#/components/schemas/QuarterHourlyRequest"},"unit_overrides":{"$ref":"#/components/schemas/UnitOverrides"}},"additionalProperties":false},"ForecastResponse":{"type":"object","required":["location","units","updated_at","stale","warnings"],"properties":{"location":{"type":"object","required":["latitude","longitude","timezone","forecast_elevation_m"],"properties":{"timezone":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"forecast_elevation_m":{"type":["number","null"]}},"additionalProperties":false},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"units":{"$ref":"#/components/schemas/ForecastUnits"},"current":{"type":"object"},"stale":{"type":"boolean"},"updated_at":{"type":["string","null"],"format":"date-time"},"daily":{"type":"array","items":{"type":"object","required":["date"],"properties":{"date":{"type":"string","format":"date"}},"additionalProperties":true}},"hourly":{"type":"array","items":{"type":"object","required":["time"],"properties":{"time":{"type":"string","format":"date-time"}},"additionalProperties":true}},"quarter_hourly":{"type":"array","items":{"type":"object","required":["time"],"properties":{"time":{"type":"string","format":"date-time"}},"additionalProperties":true}}},"additionalProperties":false},"HistoricalRequest":{"type":"object","required":["location","start","end","variables"],"properties":{"start":{"type":"string","format":"date","description":"First local date, inclusive"},"include":{"default":[],"type":"array","items":{"type":"string","enum":["stations","sources"]},"uniqueItems":true},"location":{"$ref":"#/components/schemas/Location"},"end":{"type":"string","format":"date","description":"Last local date, inclusive"},"variables":{"type":"array","items":{"type":"string","enum":["temperature_max","temperature_min","precipitation","rain_total","snow_total","air_quality_index"]},"minItems":1,"uniqueItems":true},"units":{"$ref":"#/components/schemas/UnitSystem"},"timezone":{"default":"auto","type":"string","description":"auto or an IANA timezone"},"unit_overrides":{"$ref":"#/components/schemas/HistoricalUnitOverrides"}},"additionalProperties":false},"HistoricalResponse":{"type":"object","required":["location","units","start","end","daily","updated_at","stale","warnings"],"properties":{"start":{"type":"string","format":"date","description":"First local date, inclusive"},"sources":{"type":"array","items":{"type":"object"}},"location":{"type":"object","required":["latitude","longitude","timezone"],"properties":{"timezone":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"additionalProperties":false},"end":{"type":"string","format":"date","description":"Last local date, inclusive"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"units":{"$ref":"#/components/schemas/HistoricalUnits"},"stale":{"type":"boolean"},"updated_at":{"type":["string","null"],"format":"date-time"},"daily":{"type":"array","items":{"type":"object","required":["date"],"properties":{"date":{"type":"string","format":"date"}},"additionalProperties":true}},"stations":{"type":"array","items":{"type":"object"}}},"additionalProperties":false},"HourlyAccuracyRequest":{"type":"object","required":["variables"],"properties":{"variables":{"type":"array","items":{"type":"string","enum":["temperature","precipitation","precipitation_probability"]},"minItems":1,"uniqueItems":true},"lead_hours":{"type":"array","items":{"type":"integer","enum":[0,1,2,3,6,12,24]},"minItems":1,"uniqueItems":true}},"additionalProperties":false},"HourlyRequest":{"type":"object","required":["hours","variables"],"properties":{"hours":{"maximum":384,"type":"integer","minimum":1},"variables":{"type":"array","items":{"type":"string","enum":["temperature","apparent_temperature","dew_point","condition","humidity","pressure","wind_speed","wind_gust","wind_direction","precipitation","rain_total","snow_total","precipitation_probability","cloud_cover","uv_index","air_quality_index"]},"minItems":1,"uniqueItems":true},"past_hours":{"default":0,"maximum":48,"type":"integer","minimum":0}},"additionalProperties":false},"MinutelyAccuracyRequest":{"type":"object","required":["variables"],"properties":{"variables":{"type":"array","items":{"type":"string","enum":["precipitation","precipitation_probability"]},"minItems":1,"uniqueItems":true},"lead_minutes":{"type":"array","items":{"type":"integer","enum":[5,15,30,60,90,115]},"minItems":1,"uniqueItems":true}},"additionalProperties":false},"NowcastRequest":{"type":"object","required":["location"],"properties":{"location":{"$ref":"#/components/schemas/Location"},"variables":{"type":"array","description":"Minute variables to return. Defaults to every nowcast variable.","items":{"type":"string","enum":["condition","precipitation","precipitation_rate","rain_total","snow_total","precipitation_probability","confidence","hail_probability","hail_size","lightning_probability","source"]},"minItems":1,"uniqueItems":true},"units":{"$ref":"#/components/schemas/UnitSystem"},"timezone":{"default":"auto","type":"string","description":"auto or an IANA timezone"},"unit_overrides":{"$ref":"#/components/schemas/UnitOverrides"}},"additionalProperties":false},"NowcastResponse":{"type":"object","required":["location","units","status","start","end","minutes","updated_at","stale","radar_pending","onset_uncertainty_minutes","warnings"],"properties":{"start":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["active","dry","pending"]},"location":{"type":"object","required":["latitude","longitude","timezone","forecast_elevation_m"],"properties":{"timezone":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"forecast_elevation_m":{"type":["number","null"]}},"additionalProperties":false},"end":{"type":"string","format":"date-time"},"minutes":{"type":"array","items":{"type":"object","required":["time"],"properties":{"time":{"type":"string","format":"date-time"}},"additionalProperties":true},"maxItems":120},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"units":{"$ref":"#/components/schemas/ForecastUnits"},"stale":{"type":"boolean"},"updated_at":{"type":["string","null"],"format":"date-time"},"radar_pending":{"type":"boolean"},"onset_uncertainty_minutes":{"type":["integer","null"]}},"additionalProperties":false},"OutlookRequest":{"type":"object","required":["location","start","end","variables"],"properties":{"start":{"type":"string","format":"date","description":"First local date, inclusive"},"location":{"$ref":"#/components/schemas/Location"},"end":{"type":"string","format":"date","description":"Last local date, inclusive"},"variables":{"type":"array","items":{"type":"string","enum":["temperature_max","temperature_min","condition","precipitation","rain_total","snow_total","precipitation_probability","sunrise","sunset"]},"minItems":1,"uniqueItems":true},"units":{"$ref":"#/components/schemas/UnitSystem"},"timezone":{"default":"auto","type":"string","description":"auto or an IANA timezone"},"unit_overrides":{"$ref":"#/components/schemas/UnitOverrides"}},"additionalProperties":false},"Problem":{"type":"object","required":["type","title","status","detail"],"properties":{"status":{"type":"integer"},"type":{"type":"string","format":"uri"},"instance":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}},"QuarterHourlyRequest":{"type":"object","required":["hours","variables"],"properties":{"hours":{"maximum":48,"type":"integer","minimum":1},"variables":{"type":"array","items":{"type":"string","enum":["temperature","apparent_temperature","dew_point","condition","humidity","pressure","wind_speed","wind_gust","wind_direction","precipitation","rain_total","snow_total","precipitation_probability","cloud_cover","uv_index"]},"minItems":1,"uniqueItems":true}},"additionalProperties":false}},"securitySchemes":{"appInstallToken":{"scheme":"bearer","type":"http","description":"Signed token issued by the Weatherkind App Attest flow.","bearerFormat":"Weatherkind signed app-install token"},"publicApiKey":{"scheme":"bearer","type":"http","description":"Opaque Weatherkind public API key.","bearerFormat":"wk_live_<key-id>_<secret>"}}},"paths":{"/v1/accuracy":{"post":{"summary":"Query forecast accuracy for a locality, weather region, or verified network","operationId":"createAccuracyQuery","responses":{"200":{"description":"Forecast accuracy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccuracyResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Forecast accuracy temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccuracyRequest"},"example":{"scope":{"type":"region","region":"mountain"},"units":"metric","days":30,"hourly":{"variables":["temperature","precipitation","precipitation_probability"],"lead_hours":[1,6,12,24]},"compare_to":["persistence"]}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["accuracy:read"]}},"/v1/accuracy/catalog":{"get":{"summary":"List accuracy regions, variables, leads, metrics, and methodology","operationId":"getAccuracyCatalog","responses":{"200":{"description":"Accuracy catalog","content":{"application/json":{"schema":{"type":"object"}}}},"304":{"description":"Catalog has not changed"}}}},"/v1/alerts":{"post":{"summary":"List active public alerts for an exact point","operationId":"listActiveAlerts","responses":{"200":{"description":"Active alerts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertsResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Active alerts temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertsRequest"},"example":{"include":["geometry"],"location":{"latitude":39.7392,"longitude":-104.9903}}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["alerts:read"]}},"/v1/forecast":{"post":{"summary":"Create a point forecast","operationId":"createForecast","responses":{"200":{"description":"Forecast","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Forecast temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastRequest"},"example":{"location":{"latitude":39.7392,"longitude":-104.9903},"units":"metric","current":{"variables":["temperature","condition"]},"daily":{"variables":["temperature_max","temperature_min","precipitation_probability"],"days":10},"hourly":{"hours":48,"variables":["temperature","precipitation_probability"]}}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["forecast:read"]}},"/v1/forecast/variables":{"get":{"summary":"List forecast variables and supported intervals","operationId":"listForecastVariables","responses":{"200":{"description":"Variable catalog","content":{"application/json":{"schema":{"type":"object"}}}},"304":{"description":"Catalog has not changed"}}}},"/v1/historical":{"post":{"summary":"Query daily historical weather observations","operationId":"createHistoricalQuery","responses":{"200":{"description":"Historical observations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Historical observations temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalRequest"},"example":{"start":"2020-01-01","include":["stations","sources"],"location":{"latitude":39.7392,"longitude":-104.9903},"end":"2020-12-31","variables":["temperature_max","temperature_min","precipitation","rain_total","snow_total","air_quality_index"],"units":"metric","timezone":"auto"}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["historical:read"]}},"/v1/historical/variables":{"get":{"summary":"List historical variables, units, coverage limits, and methodology","operationId":"listHistoricalVariables","responses":{"200":{"description":"Historical variable catalog","content":{"application/json":{"schema":{"type":"object"}}}},"304":{"description":"Catalog has not changed"}}}},"/v1/map-tiles/{layer}/{z}/{x}/{y}":{"get":{"parameters":[{"in":"path","name":"layer","required":true,"schema":{"type":"string","enum":["radar","precipitation-global","radar-future","radar-site","temperature","temperature-global","air-quality","air-quality-global","smoke","fire-smoke","smoke-global","fire-global","alerts"]}},{"in":"path","name":"z","required":true,"schema":{"type":"integer","minimum":0}},{"in":"path","name":"x","required":true,"schema":{"type":"integer","minimum":0}},{"in":"path","name":"y","required":true,"schema":{"type":"integer","minimum":0}}],"summary":"Get a cacheable XYZ weather-map tile","operationId":"getMapTile","responses":{"200":{"description":"PNG weather-map tile","content":{"image/png":{"schema":{"type":"string","format":"binary"}}},"headers":{"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"X-Weatherkind-Tile-Cache":{"schema":{"type":"string"}}}},"304":{"description":"Tile has not changed"},"400":{"description":"Invalid tile coordinate or layer parameter","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["detail"],"properties":{"reason":{"type":"string"},"detail":{"type":"string"}}}}}}}},"404":{"description":"Map tile layer not found","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["detail"],"properties":{"reason":{"type":"string"},"detail":{"type":"string"}}}}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["detail"],"properties":{"reason":{"type":"string"},"detail":{"type":"string"}}}}}}}},"502":{"description":"Map tile provider unavailable","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["detail"],"properties":{"reason":{"type":"string"},"detail":{"type":"string"}}}}}}}}}}},"/v1/nowcast":{"post":{"summary":"Create a two-hour minute-by-minute precipitation nowcast","operationId":"createNowcast","responses":{"200":{"description":"Precipitation nowcast","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NowcastResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Precipitation nowcast temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NowcastRequest"},"example":{"location":{"latitude":39.7392,"longitude":-104.9903},"variables":["condition","precipitation_rate","precipitation_probability"],"units":"metric","timezone":"auto"}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["nowcast:read"]}},"/v1/outlook":{"post":{"summary":"Create a daily climate outlook for days 15 through 365","operationId":"createOutlook","responses":{"200":{"description":"Climate outlook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}},"headers":{"Retry-After":{"description":"Seconds before refreshing stale data","schema":{"type":"integer"}},"X-Request-ID":{"description":"Identifier for support and request tracing","schema":{"type":"string"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Insufficient scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Climate outlook temporarily unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutlookRequest"},"example":{"start":"2026-08-15","location":{"latitude":39.7392,"longitude":-104.9903},"end":"2026-09-01","variables":["temperature_max","temperature_min","precipitation"]}}}},"security":[{"appInstallToken":[]},{"publicApiKey":[]}],"x-required-scopes":["forecast:read"]}}},"x-weatherkind-contract-sha256":"dc5a5b12a3f94d53053ea664cad8d0ddacd1673003b3fab47ce0dcfe71231bc2","openapi":"3.1.0","servers":[{"url":"https://api.weatherkind.com"}],"x-weatherkind-accuracy-catalog":{"variables":[{"id":"temperature","description":"Near-surface air-temperature accuracy for hourly forecasts.","metrics":["mean_absolute_error","bias","root_mean_square_error","samples"],"intervals":["1h"],"unit_family":"temperature"},{"id":"temperature_max","description":"Daily maximum-temperature accuracy.","metrics":["mean_absolute_error","bias","root_mean_square_error","samples"],"intervals":["1d"],"unit_family":"temperature"},{"id":"temperature_min","description":"Daily minimum-temperature accuracy.","metrics":["mean_absolute_error","bias","root_mean_square_error","samples"],"intervals":["1d"],"unit_family":"temperature"},{"id":"precipitation","description":"Wet/dry event skill and, where available, precipitation-amount error on wet comparisons.","metrics":["occurrence","amount"],"intervals":["1m","1h","1d"],"unit_family":"precipitation"},{"id":"precipitation_probability","description":"Calibration accuracy for the probability of precipitation.","metrics":["brier_score","bias","samples"],"intervals":["1m","1h","1d"],"unit_family":"probability"}],"units":{"temperature":["degC","degF","K"],"precipitation":["mm","in","m"],"ratios":"0..1","systems":["metric","us","si"]},"regions":[{"id":"mountain","label":"Mountain towns","description":"High-elevation towns and mountain-weather locations."},{"id":"arid_interior","label":"Arid interior","description":"Dry inland, desert, and high-desert locations."},{"id":"pacific_coast","label":"Pacific coast","description":"Marine-influenced locations along the Pacific coast."},{"id":"northern_continental","label":"Northern continental","description":"Cold-winter continental locations across the northern United States."},{"id":"central_plains","label":"Central plains","description":"Interior plains locations with strongly continental weather."},{"id":"humid_east","label":"Humid East","description":"Humid continental and subtropical locations in the eastern United States."},{"id":"gulf_coast","label":"Gulf coast","description":"Warm, humid locations influenced by the Gulf of Mexico."},{"id":"tropical","label":"Tropical","description":"Tropical and strongly maritime warm-climate locations."},{"id":"arctic","label":"Arctic","description":"Arctic and subarctic locations with extreme cold-season conditions."}],"comparisons":{"persistence":{"description":"A same-time previous-period observation used as a naive forecast.","error_skill_score":"1 - weatherkind_error / persistence_error","occurrence_skill_score":"(weatherkind_csi - persistence_csi) / (1 - persistence_csi)"}},"intervals":{"1d":{"variables":["temperature_max","temperature_min","precipitation","precipitation_probability"],"leads":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],"lead_unit":"day"},"1h":{"variables":["temperature","precipitation","precipitation_probability"],"leads":[0,1,2,3,6,12,24],"lead_unit":"hour"},"1m":{"variables":["precipitation","precipitation_probability"],"leads":[5,15,30,60,90,115],"lead_unit":"minute"}},"methodology":{"description":"Out-of-sample forecasts as served by Weatherkind are compared with quality-controlled station observations and pooled using sample-weighted error numerators.","window":"days selects trailing verification dates; the response reports the actual data-through date.","region_definition":"Regions are cohorts of verified locations with similar weather regimes, not geographic polygons."},"precipitation_thresholds":{"amount_evaluation":"Amount errors include comparisons where either the forecast or observation was wet.","daily_mm":1.0,"hourly_mm":0.1},"sample_minimums":{"general":12,"daily":6,"precipitation_amount":6}},"x-weatherkind-historical-variable-catalog":{"variables":[{"id":"temperature_max","type":"number","description":"Maximum near-surface air temperature during the local calendar day, adjusted to the effective elevation.","units":["degC","degF","K"],"intervals":["1d"],"unit_family":"temperature","nullable":true,"data_kind":"observation"},{"id":"temperature_min","type":"number","description":"Minimum near-surface air temperature during the local calendar day, adjusted to the effective elevation.","units":["degC","degF","K"],"intervals":["1d"],"unit_family":"temperature","nullable":true,"data_kind":"observation"},{"id":"precipitation","type":"number","description":"Total liquid-equivalent precipitation during the local calendar day.","units":["mm","in","m"],"intervals":["1d"],"unit_family":"precipitation","nullable":true,"data_kind":"observation"},{"id":"rain_total","type":"number","description":"Total liquid precipitation during the local calendar day. This is null when the observed precipitation phase cannot be separated defensibly.","units":["mm","in","m"],"intervals":["1d"],"unit_family":"precipitation","nullable":true,"data_kind":"derived"},{"id":"snow_total","type":"number","description":"Total observed snowfall depth during the local calendar day, not snow-water equivalent.","units":["mm","in","m"],"intervals":["1d"],"unit_family":"precipitation","nullable":true,"data_kind":"observation"},{"id":"air_quality_index","type":"number","description":"Daily US EPA air-quality index where available. US values use reporting-area observations; other coverage may use modeled analysis.","units":[],"intervals":["1d"],"unit_family":null,"nullable":true,"data_kind":"observation_or_analysis"}],"units":{"temperature":["degC","degF","K"],"precipitation":["mm","in","m"],"systems":["metric","us","si"]},"intervals":{"1d":{"range":"Local ISO dates; both start and end are inclusive.","air_quality_index_maximum_span":"366 days","maximum_span":"50 calendar years"}},"methodology":{"coverage":"Coverage is location, date, and variable dependent. Missing observations are returned as null.","air_quality":"AQI provenance is returned through the optional sources projection and warnings.","temperature":"Station temperatures are terrain-adjusted to the request's effective elevation.","rain_total":"Rain is derived only when precipitation phase can be separated from an observed snowfall value."}},"x-weatherkind-variable-catalog":{"variables":[{"id":"temperature","type":"number","description":"Near-surface air temperature at a nominal 2 metres above ground, adjusted to the effective elevation.","units":["degC","degF","K"],"intervals":["current","15m","1h"],"unit_family":"temperature","nullable":true},{"id":"apparent_temperature","type":"number","description":"Human-perceived temperature accounting for wind and humidity.","units":["degC","degF","K"],"intervals":["current","15m","1h"],"unit_family":"temperature","nullable":true},{"id":"temperature_max","type":"number","description":"Maximum air temperature during the local day.","units":["degC","degF","K"],"intervals":["1d"],"unit_family":"temperature","nullable":true},{"id":"temperature_min","type":"number","description":"Minimum air temperature during the local day.","units":["degC","degF","K"],"intervals":["1d"],"unit_family":"temperature","nullable":true},{"id":"dew_point","type":"number","description":"Near-surface dew-point temperature.","units":["degC","degF","K"],"intervals":["current","15m","1h"],"unit_family":"temperature","nullable":true},{"id":"condition","type":"string","description":"Canonical Weatherkind weather-condition code.","units":[],"intervals":["current","15m","1h","1d"],"unit_family":null,"nullable":true},{"id":"humidity","type":"number","description":"Relative humidity.","units":[],"intervals":["current","15m","1h"],"unit_family":"percentage","nullable":true},{"id":"pressure","type":"number","description":"Atmospheric pressure.","units":["hPa","inHg","Pa"],"intervals":["current","15m","1h"],"unit_family":"pressure","nullable":true},{"id":"wind_speed","type":"number","description":"Sustained wind speed.","units":["km/h","mph","m/s"],"intervals":["current","15m","1h"],"unit_family":"wind_speed","nullable":true},{"id":"wind_gust","type":"number","description":"Wind-gust speed.","units":["km/h","mph","m/s"],"intervals":["current","15m","1h"],"unit_family":"wind_speed","nullable":true},{"id":"wind_direction","type":"number","description":"Direction from which the wind is blowing, in degrees clockwise from true north.","units":[],"intervals":["current","15m","1h"],"unit_family":"degrees","nullable":true},{"id":"precipitation","type":"number","description":"Total liquid-equivalent precipitation during the interval.","units":["mm","in","m"],"intervals":["current","15m","1h","1d"],"unit_family":"precipitation","nullable":true},{"id":"rain_total","type":"number","description":"Total rainfall during the interval.","units":["mm","in","m"],"intervals":["current","15m","1h","1d"],"unit_family":"precipitation","nullable":true},{"id":"snow_total","type":"number","description":"Total snowfall during the interval.","units":["mm","in","m"],"intervals":["current","15m","1h","1d"],"unit_family":"precipitation","nullable":true},{"id":"precipitation_probability","type":"number","description":"Probability of measurable precipitation.","units":[],"intervals":["current","15m","1h","1d"],"unit_family":"percentage","nullable":true},{"id":"cloud_cover","type":"number","description":"Fraction of the sky covered by clouds.","units":[],"intervals":["current","15m","1h"],"unit_family":"percentage","nullable":true},{"id":"uv_index","type":"number","description":"Ultraviolet index.","units":[],"intervals":["current","15m","1h"],"unit_family":null,"nullable":true},{"id":"air_quality_index","type":"number","description":"US EPA air-quality index where available.","units":[],"intervals":["current","1h"],"unit_family":null,"nullable":true},{"id":"sunrise","type":"string","description":"Sunrise time for the local day.","units":[],"intervals":["1d"],"unit_family":null,"nullable":true},{"id":"sunset","type":"string","description":"Sunset time for the local day.","units":[],"intervals":["1d"],"unit_family":null,"nullable":true}],"intervals":{"15m":{"future":"48h","past":null},"1d":{"future":"16d","past":"365d"},"1h":{"future":"384h","past":"48h"},"current":{"future":null,"past":null}}}}