{"authentication":{"description":"Pass your API key in the X-API-Key HTTP header on every request to protected endpoints. Keys are provisioned per integration.","example_header":"X-API-Key: <your-api-key>","header":"X-API-Key","missing_key_response":"HTTP 401 Unauthorized","scheme":"API key"},"documentation":{"interactive_ui":"https://api.weatherxanalytics.com/redoc","openapi_spec":"https://api.weatherxanalytics.com/apispec.json","swagger_ui":"https://api.weatherxanalytics.com/docs"},"endpoints":[{"auth_required":false,"description":"API quick reference (this response).","method":"GET","path":"/","rate_limit":"100 requests/minute per IP"},{"auth_required":true,"description":"15-day hourly weather forecast with 20 variables. Optionally includes human-readable condition labels (conditions=1).","example_requests":["GET /forecast?lat=52.52&lon=13.41","GET /forecast?lat=52.52&lon=13.41&conditions=1"],"method":"GET","parameters":{"conditions":{"default":"0","description":"Set to 1 or true to include a weather_conditions object in the response with human-readable condition labels at Hourly, 6-hourly, and Daily resolutions.","required":false,"type":"string","valid_values":["0","1","true","false"]},"lat":{"description":"Latitude in decimal degrees (WGS 84).","required":true,"type":"float","valid_range":"-90.0 to 90.0"},"lon":{"description":"Longitude in decimal degrees (WGS 84).","required":true,"type":"float","valid_range":"-180.0 to 180.0"}},"path":"/forecast","rate_limit":"60 requests/minute per IP"},{"auth_required":true,"description":"Hourly observed weather for a past date range, 1990-01-01 to 2025-12-31. Measured values only - no derived metrics. Any unrecognised query parameter or variable name is rejected with HTTP 400, as are dates outside the supported window.","example_requests":["GET /historical?lat=52.52&lon=13.41&start_date=2020-01-01&end_date=2020-01-31","GET /historical?lat=52.52&lon=13.41&start_date=2020-01-01&end_date=2020-12-31&hourly=temperature_2m,precipitation,wind_speed_10m"],"method":"GET","notes":["Times are UTC.","All hourly arrays are the same length as hourly.time.","A null means no value is held for that hour; nulls are never replaced with zero."],"parameters":{"end_date":{"description":"Last day of the range, inclusive. Must not precede start_date. There is no limit on range length within the supported window.","format":"YYYY-MM-DD","required":true,"type":"string","valid_range":"1990-01-01 to 2025-12-31"},"hourly":{"default":"temperature_2m","description":"Comma-separated variable names. Any name outside the supported list is rejected with HTTP 400.","required":false,"type":"string","valid_values":["temperature_2m","relative_humidity_2m","pressure_msl","precipitation","snowfall","cloud_cover","snow_depth","wind_speed_10m","wind_direction_10m","wind_gusts_10m"]},"lat":{"description":"Latitude in decimal degrees (WGS 84).","required":true,"type":"float","valid_range":"-90.0 to 90.0"},"lon":{"description":"Longitude in decimal degrees (WGS 84).","required":true,"type":"float","valid_range":"-180.0 to 180.0"},"start_date":{"description":"First day of the range, inclusive.","format":"YYYY-MM-DD","required":true,"type":"string","valid_range":"1990-01-01 to 2025-12-31"}},"path":"/historical","rate_limit":"10 requests/minute per API key","response_units":{"cloud_cover":"%","precipitation":"mm","pressure_msl":"hPa","relative_humidity_2m":"%","snow_depth":"cm","snowfall":"cm","temperature_2m":"\u00b0C","wind_direction_10m":"\u00b0","wind_gusts_10m":"m/s","wind_speed_10m":"m/s"}}],"error_response_format":{"http_status_codes":{"400":"Invalid or missing query parameter","401":"Missing or invalid X-API-Key header","429":"Rate limit exceeded \u2014 includes retry_after field","500":"Unexpected internal server error","502":"Upstream weather data provider returned an error","503":"Weather data backend is unreachable"},"schema":{"error":"string \u2014 short machine-readable error identifier","hint":"string \u2014 optional remediation hint (present on 401 errors)","message":"string \u2014 human-readable description"}},"forecast_variables":{"accumulated_precipitation":{"description":"Cumulative precipitation from the start of this forecast response. Resets to 0 at index 0 of each API response.","precision":"2 decimal places","range":"0 to 1000","unit":"mm"},"accumulated_snowfall":{"description":"Cumulative snowfall from the start of this forecast response.","precision":"2 decimal places","unit":"cm"},"cloud_cover":{"description":"Total cloud cover fraction across all atmospheric levels.","range":"0 to 100","unit":"%"},"feels_like_temperature":{"description":"Apparent temperature accounting for humidity and wind effects.","precision":"1 decimal place","range":"-50 to 70","unit":"\u00b0C"},"frost_probability":{"description":"Probability of frost formation at the surface.","range":"0 to 100 (integer)","unit":"%"},"hail_probability":{"description":"Probability of hail.","range":"0.0 to 100.0 (1 decimal place)","unit":"%"},"lightning_probability":{"description":"Probability of lightning strikes.","range":"0.0 to 100.0 (1 decimal place)","unit":"%"},"precipitation":{"description":"Total liquid-water-equivalent precipitation for the hour (all phases). Use precipitation_type to determine the phase.","range":"0 to 100","unit":"mm"},"precipitation_type":{"codes":{"1":"Rain","5":"Snow","7":"Sleet / rain-snow mix"},"note":"Populated for every hour regardless of whether precipitation is occurring. Combine with precipitation > 0 to identify active precipitation events.","unit":"integer code"},"pressure_msl":{"description":"Atmospheric pressure reduced to mean sea level.","range":"500 to 1100","unit":"hPa"},"probability_of_precipitation":{"description":"Probability of precipitation occurrence. Defaults to 0 if unavailable.","range":"0 to 100 (integer)","unit":"%"},"relative_humidity_2m":{"description":"Relative humidity at 2 metres above ground level.","range":"0 to 100","unit":"%"},"snow_depth":{"description":"Total snowpack depth on the ground. This is the existing snowpack depth, NOT the hourly snowfall increment.","range":"0 to 2000","unit":"cm"},"snowfall":{"description":"Snowfall depth for the hour. Non-zero only when precipitation_type = 5.","precision":"2 decimal places","range":"0 to 500","unit":"cm"},"temperature_2m":{"description":"Air temperature at 2 metres above ground level.","range":"-50 to 70","unit":"\u00b0C"},"thunderstorm_probability":{"description":"Probability of thunderstorm occurrence.","range":"0.0 to 100.0 (1 decimal place)","unit":"%"},"tornado_probability":{"description":"Probability of tornado occurrence.","range":"0.00 to 100.00 (2 decimal places)","unit":"%"},"wind_direction_10m":{"description":"Wind direction at 10 metres. Meteorological convention: direction FROM which the wind is blowing. 0 = North, 90 = East, 180 = South, 270 = West.","range":"0 to 360","unit":"degrees"},"wind_gusts_10m":{"description":"Maximum wind gust speed at 10 metres. Peak gust within the forecast hour.","range":"0 to 200","unit":"m/s"},"wind_speed_10m":{"description":"Mean wind speed at 10 metres above ground level.","range":"0 to 150","unit":"m/s"}},"service":"WeatherX Analytics API","timestamp_conventions":{"forecast_hourly_time":{"example":"2024-01-15T14:00","field":"hourly.time","format":"ISO 8601 UTC string: YYYY-MM-DDTHH:MM","note":"No timezone suffix \u2014 implicitly UTC. No seconds component."},"weather_conditions_daily":{"field":"weather_conditions.Daily[n].Current date","format":"Unix timestamp (integer seconds since epoch)","note":"Unix timestamp of local midnight in the location's timezone. Always format using the timezone field from the response \u2014 do NOT format as UTC."}},"version":"2.0.0","weather_condition_labels":{"precipitation_intensity_labels":{"mixed":["Sleet"],"rain":["Drizzle","Light Rain","Moderate Rain","Heavy Rain","Very Heavy Rain","Cloudburst"],"snow":["Drizzle Snow","Light Snow","Moderate Snow","Heavy Snow","Very Heavy Snow","Snowstorm","Blizzard"]},"priority_hierarchy":["1. Severe \u2014 Hail, Tornado, Thunderstorm","2. Precipitation \u2014 Rain, Snow, Sleet","3. Wind \u2014 Strong Wind, Gale, Strong Gale, Storm, Violent Storm, Hurricane","4. Temperature extremes \u2014 Frost, Freezing Weather, Scorching Heat","5. Cloud cover \u2014 Sunny / Clear Sky (night), Mostly Sunny / Mostly Clear (night), Partly Cloudy, Mostly Cloudy, Cloudy"]}}
