{"openapi":"3.1.0","info":{"title":"FCST API","description":"Forecasts for other applications: ECMWF-WRF 5.4 km over Europe, WRF 1.8 km wave over southern Poland,\nICON-D2 2 km wave over the Alps.\n\nSend your key in the `X-API-Key` header (button **Authorize**), from your server only. Plans, limits, units and\nterms: https://polska.fcst.pl/api-docs.html. Keys: https://polska.fcst.pl/api.html. Show \"Forecast: FCST (fcst.pl)\"\nnext to the data.","version":"1.7.0"},"servers":[{"url":"/api"}],"paths":{"/v1/xcsoar":{"get":{"summary":"Xcsoar Index","description":"Regions of today's XCSoar RASP file with name, description and URL (also the XCSoar repository entries).","operationId":"xcsoar_index_v1_xcsoar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["xcsoar"]}},"/v1/xcsoar/{name}.dat":{"get":{"summary":"Xcsoar File","description":"Today's RASP ZIP of one region (format in xcsoar_rasp.py); 404 before the first run of the day. HEAD answers\nwithout building the file (the XCSoar repository checks every URL with HEAD each night).","operationId":"xcsoar_file_v1_xcsoar__name__dat_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["xcsoar"]},"head":{"summary":"Xcsoar File","description":"Today's RASP ZIP of one region (format in xcsoar_rasp.py); 404 before the first run of the day. HEAD answers\nwithout building the file (the XCSoar repository checks every URL with HEAD each night).","operationId":"xcsoar_file_v1_xcsoar__name__dat_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["xcsoar"]}},"/v1/airfields":{"get":{"summary":"List Airfields","operationId":"list_airfields_v1_airfields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["airfields"]}},"/v1/airfields/{site_id}/forecast":{"get":{"summary":"Airfield Forecast","description":"Daily thermal / ridge / wave scores for one airfield or slope site. Needs an API key since 2026-10:\nmobile apps used the free JSON for their customers; aeroclubs get a free \"club\" key limited to their airfields.\nThe airfield list and the widget stay free.","operationId":"airfield_forecast_v1_airfields__site_id__forecast_get","parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","title":"Site Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":7,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["airfields"],"security":[{"ApiKey":[]}]}},"/v1/widget/{site_id}":{"get":{"summary":"Airfield Widget","description":"HTML for <iframe src=\"https://polska.fcst.pl/api/v1/widget/EPZR?lang=pl\">.","operationId":"airfield_widget_v1_widget__site_id__get","parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","title":"Site Id"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(pl|en|de|cs|fr|it)$","default":"pl","title":"Lang"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","pattern":"^(|light|dark)$","default":"","title":"Theme"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":7,"minimum":1,"default":5,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["airfields"]}},"/v1/partner/usage":{"get":{"tags":["partner"],"summary":"Usage","operationId":"usage_v1_partner_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/outlook":{"get":{"tags":["partner"],"summary":"Outlook","description":"Daily thermal / ridge / wave scores (0-100) with the best window and reasons.","operationId":"outlook_v1_partner_outlook_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":7,"minimum":1,"default":5,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/point":{"get":{"tags":["partner"],"summary":"Point","description":"Hourly values at the nearest grid cell.","operationId":"point_v1_partner_point_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD, default today","title":"Date"},"description":"YYYY-MM-DD, default today"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"comma separated model fields, or 'all'","title":"Fields"},"description":"comma separated model fields, or 'all'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/wind-profile":{"get":{"tags":["partner"],"summary":"Wind Profile","description":"Hourly wind 10-600 m above ground (m/s, direction the wind blows from).","operationId":"wind_profile_v1_partner_wind_profile_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD, default today","title":"Date"},"description":"YYYY-MM-DD, default today"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/paragliding":{"get":{"tags":["partner"],"summary":"Paragliding","description":"Paragliding scores, warnings and hourly details for a launch site given by the caller.","operationId":"paragliding_v1_partner_paragliding_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(slope|dune|winch)$","default":"slope","title":"Kind"}},{"name":"dirs","in":"query","required":false,"schema":{"type":"integer","maximum":65535,"minimum":0,"description":"16-bit mask, bit i = wind from i*22.5 deg","default":0,"title":"Dirs"},"description":"16-bit mask, bit i = wind from i*22.5 deg"},{"name":"elevation_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":5000,"minimum":-100},{"type":"null"}],"title":"Elevation M"}},{"name":"pilot","in":"query","required":false,"schema":{"type":"string","pattern":"^(beginner|intermediate|xc)$","default":"intermediate","title":"Pilot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/maps":{"get":{"tags":["partner"],"summary":"Maps","description":"Map overlays around a point: bounds, and per field the model, hours and legend (for /map).","operationId":"maps_v1_partner_maps_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD, default today","title":"Date"},"description":"YYYY-MM-DD, default today"},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","maximum":200,"minimum":25,"default":100.0,"title":"Radius Km"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}},"/v1/partner/map":{"get":{"tags":["partner"],"summary":"Map Png","description":"One transparent PNG overlay (~2 km pixels) for the bounds of /maps (also in the X-Bounds header).","operationId":"map_png_v1_partner_map_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"field","in":"query","required":true,"schema":{"type":"string","title":"Field"}},{"name":"hour","in":"query","required":true,"schema":{"type":"integer","maximum":23,"minimum":0,"title":"Hour"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD, default today","title":"Date"},"description":"YYYY-MM-DD, default today"},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","maximum":200,"minimum":25,"default":100.0,"title":"Radius Km"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]}]}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}