Kostenlose REST-API

Cyanoware API

Satellitenbasierte WasserqualitĂ€tsdaten fĂŒr ĂŒber 1.892 Badeseen – kostenlos, kein API-Key erforderlich.

Kein API-KeySentinel-2 SatellitendatenWöchentlich aktualisiertDauerhaft kostenlos
Basis-URL
https://cyanoware-backend-production.up.railway.app

Badeseen

3 Endpunkte

GET/api/v1/bathing-lakes/status

Alle Seen – Status

Gibt alle deutschen EU-Badeseen mit aktuellem CHL-Wert, WHO-Warnstufe und Trophiestatus zurĂŒck. Daten werden wöchentlich per Sentinel-2 Satellit aktualisiert.

Kein API-Key erforderlich

Parameter

NameTypBeschreibung
min_latfloatMinimale Breitengrad-Filtergrenze
max_latfloatMaximale Breitengrad-Filtergrenze
min_lonfloatMinimale LĂ€ngengrad-Filtergrenze
max_lonfloatMaximale LĂ€ngengrad-Filtergrenze
riskstringFilter: low | medium | high

Antwortfelder

FeldTyp
idstring
namestring
lat / lonfloat
chlfloat | null
who_levelint | null
cell_density_cells_mlfloat | null
riskstring
colorstring
measured_atISO 8601

Beispiel-Antwort

{
  "generated_at": "2026-08-18T06:00:00Z",
  "total_lakes": 1892,
  "lakes_with_data": 1784,
  "lakes": [
    {
      "id": "DEBB_PR_0123",
      "name": "MĂŒggelsee",
      "lat": 52.44,
      "lon": 13.65,
      "chl": 18.5,
      "who_level": 2,
      "risk": "medium",
      "color": "#f59e0b",
      "trophic": "eutrophic",
      "cell_density_cells_ml": 24000,
      "measured_at": "2026-08-12T00:00:00Z"
    }
  ]
}
GET/api/v1/bathing-lakes/history/{lake_id}

See-Verlauf

Gibt den historischen CHL-Zeitreihenverlauf fĂŒr einen einzelnen See zurĂŒck. NĂŒtzlich fĂŒr Trendanalysen und Charts.

Kein API-Key erforderlich

Parameter

NameTypBeschreibung
lake_idstringSee-ID, z.B. DEBB_PR_0123
limitintegerMaximale Anzahl EintrÀge (Standard: 104)

Antwortfelder

FeldTyp
lake_idstring
history[].dateISO 8601
history[].chlfloat | null
history[].who_levelint | null
history[].data_typestring

Beispiel-Antwort

{
  "lake_id": "DEBB_PR_0123",
  "name": "MĂŒggelsee",
  "history": [
    {
      "date": "2026-08-12",
      "chl": 18.5,
      "who_level": 2,
      "cell_density_cells_ml": 24000,
      "data_type": "satellite"
    },
    {
      "date": "2026-08-05",
      "chl": 15.2,
      "who_level": 1,
      "cell_density_cells_ml": 12000,
      "data_type": "satellite"
    },
    {
      "date": "2026-07-29",
      "chl": 21,
      "who_level": 2,
      "cell_density_cells_ml": 31000,
      "data_type": "ai_forecast"
    }
  ]
}
GET/api/v1/bathing-lakes/geojson

GeoJSON Karte

Gibt alle Seen als GeoJSON FeatureCollection zurĂŒck – direkt verwendbar in Mapbox, Leaflet, MapLibre, QGIS oder jeder anderen kartenfĂ€higen Applikation.

Kein API-Key erforderlich

Antwortfelder

FeldTyp
typestring
features[].geometryGeoJSON Point
features[].propertiesobject

Beispiel-Antwort

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          13.65,
          52.44
        ]
      },
      "properties": {
        "id": "DEBB_PR_0123",
        "name": "MĂŒggelsee",
        "chl": 18.5,
        "who_level": 2,
        "color": "#f59e0b"
      }
    }
  ]
}

Code-Beispiele

Alle Endpunkte sind ohne API-Key zugÀnglich. Direkt kopieren und loslegen.

JavaScript / TypeScript
const res = await fetch('https://cyanoware-backend-production.up.railway.app/api/v1/bathing-lakes/status')
const data = await res.json()
console.log(data.lakes)
Python
import requests

res = requests.get('https://cyanoware-backend-production.up.railway.app/api/v1/bathing-lakes/status')
lakes = res.json()['lakes']
print(f"{len(lakes)} lakes loaded")
MapLibre / Mapbox — Heatmap Layer
map.addSource('cyanoware-tiles', {
  type: 'raster',
  tiles: ['https://cyanoware-backend-production.up.railway.app/api/v1/tiles/{z}/{x}/{y}.png'],
  tileSize: 256
})
map.addLayer({ id: 'chl-heatmap', type: 'raster', source: 'cyanoware-tiles' })
Daten basieren auf Copernicus Sentinel-2 MSI · WHO Recreational Water Guidelines (2003) · Wöchentliche Aktualisierung