API

Öffentliche Read-only API. Kein API-Key erforderlich. Rate-Limit: 60 Anfragen/Minute.

Basis-URLhttps://api.melde.monster

Kategorien

potholetrashlightingfurnituredrainageother
GET/api/monsters

Alle Monster (paginiert). Filterbar nach Stadt, Kategorie, Status und Standort.

Parameter

cityStadtname (z.B. Leipzig)
categorypothole | trash | lighting | furniture | drainage | other
statusopen | in_progress | resolved
lat + lng + radiusKoordinaten + Radius in Metern für Umkreissuche
sortage | votes | created_at (Standard: created_at)
limitAnzahl Ergebnisse (Standard: 20, Max: 100)
offsetVersatz für Paginierung (Standard: 0)

Beispiel

GET https://api.melde.monster/api/monsters?city=Leipzig&category=pothole&limit=5

Beispiel-Response

{
  "total": 142,
  "limit": 5,
  "offset": 0,
  "data": [
    {
      "id": "abc12345",
      "name": "Rumpelfried der Zähe",
      "category": "pothole",
      "status": "open",
      "city": "Leipzig",
      "lat": 51.3397,
      "lng": 12.3731,
      "votes": 17,
      "created_at": "2026-05-12T08:23:00Z",
      "age_days": 14
    }
  ]
}
GET/api/monsters/:id

Ein einzelnes Monster mit allen Details.

Beispiel

GET https://api.melde.monster/api/monsters/abc12345

Beispiel-Response

{
  "id": "abc12345",
  "name": "Rumpelfried der Zähe",
  "category": "pothole",
  "status": "open",
  "city": "Leipzig",
  "lat": 51.3397,
  "lng": 12.3731,
  "description": "Riesiges Schlagloch vor dem Supermarkt. Schon drei Fahrräder kaputt.",
  "photo_url": "https://cdn.melde.monster/photos/abc12345.webp",
  "votes": 17,
  "created_at": "2026-05-12T08:23:00Z",
  "age_days": 14,
  "weather": {
    "temp_c": 18,
    "condition": "cloudy"
  },
  "ai_excluded": false
}
GET/api/cities

Top-10 Städte sortiert nach Anzahl offener Monster.

Beispiel

GET https://api.melde.monster/api/cities

Beispiel-Response

[
  {
    "city": "Leipzig",
    "open_monsters": 312,
    "total_monsters": 890
  },
  {
    "city": "Berlin",
    "open_monsters": 278,
    "total_monsters": 1204
  },
  {
    "city": "Köln",
    "open_monsters": 215,
    "total_monsters": 643
  }
]
GET/api/cities/:city/monsters

Alle Monster einer Stadt. Unterstützt dieselben Filterparameter wie /api/monsters.

Parameter

sortage | votes | created_at
statusopen | in_progress | resolved
categoryKategorie-Filter
limit / offsetPaginierung

Beispiel

GET https://api.melde.monster/api/cities/Leipzig/monsters?sort=age

Beispiel-Response

{
  "city": "Leipzig",
  "total": 312,
  "limit": 20,
  "offset": 0,
  "data": [
    {
      "id": "xyz99001",
      "name": "Glibbert der Beharrliche",
      "category": "trash",
      "status": "open",
      "lat": 51.3452,
      "lng": 12.3801,
      "votes": 9,
      "created_at": "2026-01-04T14:00:00Z",
      "age_days": 141
    }
  ]
}

Nutzungsbedingungen

Die API darf für nicht-kommerzielle Zwecke frei genutzt werden. Bei kommerzieller Nutzung oder hohem Volumen bitte kurze Mail an kontakt@melde.monster.