{"name": "AceWeather API", "description": "Weather dashboard API with a plain-text report endpoint for LLM-friendly summaries.", "docs": {"human": "https://www.aceweather.app/report-api.md", "llms": "https://www.aceweather.app/llms.txt", "openapi": "https://www.aceweather.app/openapi.json"}, "regionalDigests": {"cropdynamics": {"json": "https://www.aceweather.app/api/cropdynamics", "jsonWithDailyRows": "https://www.aceweather.app/api/cropdynamics?include=daily", "digest": "https://www.aceweather.app/api/digest?set=cropdynamics", "last14DaysDigest": "https://www.aceweather.app/api/digest?set=cropdynamics&history_days=14", "shortDigest": "https://www.aceweather.app/api/digest?set=cropdynamics&history_days=29&format=short", "last29DaysDigest": "https://www.aceweather.app/api/digest?set=cropdynamics&history_days=29", "fullDigest": "https://www.aceweather.app/api/digest?set=cropdynamics&mode=full", "reportUrls": ["https://www.aceweather.app/api/report?query=Scotch%20Corner", "https://www.aceweather.app/api/report?query=Boroughbridge", "https://www.aceweather.app/api/report?query=Pocklington", "https://www.aceweather.app/api/report?query=Alford%2C%20Lincolnshire", "https://www.aceweather.app/api/report?query=Sleaford", "https://www.aceweather.app/api/report?query=Longhirst%2C%20Northumberland%2C%20England", "https://www.aceweather.app/api/report?query=Berwick-upon-Tweed"]}}, "reportEndpoint": {"path": "/api/report", "method": "GET", "responseFormat": "text/plain", "description": "Returns a plain-text weather report for a place name or coordinates. Supports flexible historical windows via period shortcuts or explicit date ranges.", "queryOptions": [{"mode": "place search", "required": ["query"], "example": "https://www.aceweather.app/api/report?query=Pocklington"}, {"mode": "coordinates", "required": ["lat", "lon"], "optional": ["timezone", "label"], "example": "https://www.aceweather.app/api/report?lat=53.9093&lon=-0.7810&timezone=Europe/London&label=Pocklington,%20England,%20United%20Kingdom"}], "optionalParams": ["timezone", "label", "period", "history_days", "history_start", "history_end", "format"], "supportedPeriods": ["last_7d", "last_14d", "last_30d", "last_90d", "last_365d", "last_week", "this_week", "last_month", "mtd", "ytd", "same_week_last_year", "same_month_last_year", "same_period_last_year"], "historyExamples": {"lastWeek": "https://www.aceweather.app/api/report?query=Pocklington&period=last_week", "sameWeekLastYear": "https://www.aceweather.app/api/report?query=Pocklington&period=same_week_last_year", "sameMonthLastYear": "https://www.aceweather.app/api/report?query=Pocklington&period=same_month_last_year", "monthToDate": "https://www.aceweather.app/api/report?query=Pocklington&period=mtd", "yearToDate": "https://www.aceweather.app/api/report?query=Pocklington&period=ytd", "customRange": "https://www.aceweather.app/api/report?query=Pocklington&history_start=2024-06-01&history_end=2024-06-30", "csvTable": "https://www.aceweather.app/api/report?query=Pocklington&period=last_30d&format=csv", "jsonPayload": "https://www.aceweather.app/api/report?query=Pocklington&period=last_30d&format=json"}}, "snapshotEndpoint": {"snapshot": "https://www.aceweather.app/api/snapshot", "method": ["GET", "POST"], "responseFormat": "application/json", "description": "Returns a flat weather snapshot intended for AppSheet webhook return values.", "examples": {"getByQuery": "https://www.aceweather.app/api/snapshot?query=Pocklington&target_date=2026-05-08", "period": "https://www.aceweather.app/api/snapshot?query=Pocklington&period=last_30d", "post": {"url": "https://www.aceweather.app/api/snapshot", "jsonBody": {"query": "Pocklington", "station": "demo-station-1", "target_date": "2026-05-08"}}}, "fields": ["history_period_precip_mm", "rain_last_7_days_mm", "cumulative_rainfall_since_aug_1_prev_year_mm", "wind_avg_last_7_days_mph", "actual_day_weather", "actual_day_rain_mm", "actual_day_temp_high_c", "actual_day_temp_low_c"], "auth": "Optional bearer token via ACEWEATHER_WEBHOOK_TOKEN environment variable."}, "endpoints": [{"path": "/api/search", "method": "GET", "responseFormat": "application/json", "requiredParams": ["query"], "description": "Searches for places and returns matching coordinates."}, {"path": "/api/weather", "method": "GET", "responseFormat": "application/json", "requiredParams": ["lat", "lon"], "optionalParams": ["timezone", "label", "history_days", "history_start", "history_end"], "description": "Returns the structured weather payload that powers the dashboard."}, {"path": "/api/report", "method": "GET", "responseFormat": "text/plain (or text/csv / application/json when format= is set)", "requiredParamsOneOf": [["query"], ["lat", "lon"]], "optionalParams": ["timezone", "label", "period", "history_days", "history_start", "history_end", "format"], "supportedPeriods": ["last_7d", "last_14d", "last_30d", "last_90d", "last_365d", "last_week", "this_week", "last_month", "mtd", "ytd", "same_week_last_year", "same_month_last_year", "same_period_last_year"], "description": "Plain-text report with a configurable historical window. Use period= for natural ranges like last_week or same_week_last_year, or history_start/history_end for custom ranges, or history_days=N for the last N days. format=csv returns just the observed table, format=json returns the structured payload."}, {"path": "/api/snapshot", "method": "GET, POST", "responseFormat": "application/json", "requiredParamsOneOf": [["query"], ["lat", "lon"]], "optionalParams": ["timezone", "label", "history_days", "history_start", "history_end", "period", "station", "site_id", "target_date"], "supportedPeriods": ["last_7d", "last_14d", "last_30d", "last_90d", "last_365d", "last_week", "this_week", "last_month", "mtd", "ytd", "same_week_last_year", "same_month_last_year", "same_period_last_year"], "description": "Compact JSON weather snapshot. Same period / history_start / history_end / history_days controls as /api/report."}, {"path": "/api/providers", "method": "GET", "responseFormat": "application/json", "description": "Reports optional provider availability such as Meteomatics credentials."}, {"path": "/api/digest", "method": "GET", "responseFormat": "text/plain", "optionalParams": ["set", "mode", "history_days", "format"], "description": "Returns a bundled plain-text digest for a canonical regional set such as cropdynamics. Use format=short for a fast historical-only summary table. history_days controls the observed historical window ending yesterday."}, {"path": "/api/cropdynamics", "method": "GET", "responseFormat": "application/json", "optionalParams": ["days", "history_days", "include=daily"], "description": "Returns a fast JSON Crop Dynamics summary for LLM fetching. Defaults to the last 29 historical days ending yesterday. Includes summary, rankings, confidence metadata, and compact per-location rain/high/low totals. Add include=daily for daily rows."}, {"path": "/api/onthisday", "method": "GET", "responseFormat": "application/json", "requiredParamsOneOf": [["query"], ["lat", "lon"]], "optionalParams": ["timezone", "label", "date", "month", "day", "years"], "description": "Returns the same calendar date across the last N years (Open-Meteo ERA5 archive back to 1940). Default years=40. Includes hottest/coldest/wettest/windiest year for the date."}, {"path": "/api/tropical", "method": "GET", "responseFormat": "application/json", "description": "Aggregates active tropical systems from NHC (Atlantic + East Pacific JSON) and JTWC (West Pacific + Indian Ocean RSS). Returns one storm list normalized across both agencies with category, winds, pressure, position, and advisory link."}], "agentHint": "If you need one standard Crop Dynamics regional summary, call /api/cropdynamics first. It returns compact JSON with summary, rankings, confidence, and per-location totals. If you need daily rows, call /api/cropdynamics?include=daily or /api/report for a single place."}