Startseite
Startseite
← Zurück zur Startseite

API-Dokumentation

Die HTTP-Schnittstelle von interessenabwaegung.ch. Damit lassen sich Abwägungen aus eigenen Fachanwendungen heraus anstossen, der Urteilskorpus abfragen und Parzellen verorten. Alle Antworten sind JSON, alle Pfade beginnen mit https://interessenabwaegung.ch.

Zugang und Authentifizierung

Jede Anfrage braucht einen persönlichen Schlüssel — entweder als Kopfzeile X-API-Key: … oder als Authorization: Bearer …. Der Schlüssel gehört zu einem Konto, und jede Antwort nennt unter queried_by, wem sie zugerechnet wurde.

Schlüssel werden nicht selbst erzeugt: schreiben Sie an info@spekt.ch mit einem Satz zum Einsatzzweck. Widerrufene Schlüssel antworten sofort mit 401.

Shell
export IAW_KEY="iaw_…"

curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung?limit=1"

Rechtsprechung

Abfrage des eigenen, annotierten Urteilskorpus zur Interessenabwägung. Jeder Entscheid trägt Planungsanlass, betroffenes Schutzgut, berührte Prüfdimensionen, angerufene Normen und den Verfahrensausgang — diese Verknüpfung gibt es nur hier. Die Antworten stammen aus dem eigenen Datensatz, sind deterministisch und brauchen keinen fremden Dienst.

GET/api/v1/rechtsprechung

Entscheide filtern

Liefert gefilterte Entscheide, die Trefferzahlen je Merkmal (Facetten) und die Ausgangsstatistik zur Auswahl. Sortiert nach Datum, neuester zuerst.

FeldTypBedeutung
anlassstringEin Planungsanlass, siehe Vokabular unten.
killerstring, kommagetrenntBetroffene Schutzgüter. Mehrere Werte wirken als ODER.
dimensionstringEine Prüfdimension des IAW-Checks.
ausgangstring, kommagetrenntVerfahrensausgang. Mehrere Werte wirken als ODER.
normstringKlartext („Art. 24 RPG“) oder Slug („art-24-rpg“).
gerichtstringEtwa „BGer“, „BVGer“, „VGer ZH“.
ab / bisstringJahr oder ISO-Datum. „bis“ schliesst das genannte Jahr ein.
suchestringFreitext in Leitsatz, Aktenzeichen und Normen. Alle Wörter müssen vorkommen.
limit / offsetnumberSeitengrösse (1–200, Standard 20) und Versatz.
Shell
curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung?anlass=einzonung&killer=fff&limit=2"
Antwort (gekürzt)
JSON
{
  "total": 4,
  "korpus": 414,
  "stand": "2026-08-28",
  "results": [
    {
      "az": "1C_306/2022",
      "slug": "1c_306-2022",
      "datum": "2024-03-28",
      "gericht": "BGer",
      "ausgang": "gutgeheissen",
      "ausgangLabel": "Gutgeheissen",
      "leitsatz": "…",
      "anlaesse": ["einzonung"],
      "killer": ["fff"],
      "normen": ["Art. 15 RPG", "…"],
      "quelle": "https://entscheidsuche.ch/…"
    }
  ],
  "facetten": { "anlaesse": {…}, "killer": {…}, "ausgang": {…} },
  "statistik": {
    "total": 4,
    "verteilung": { "gutgeheissen": 1, "abgewiesen": 3 },
    "erfolgsquote": 25,
    "erfolgsquoteGesamt": 39
  }
}
GET/api/v1/rechtsprechung/urteil/{slug}

Einzelnen Entscheid holen

Ein Entscheid im Volldatensatz. Akzeptiert den Slug aus der Trefferliste ebenso wie das rohe Aktenzeichen — dieses URL-kodiert, weil es einen Schrägstrich enthält.

Shell
curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung/urteil/1c_161-2025"

# Aktenzeichen statt Slug (URL-kodiert):
curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung/urteil/1C_161%2F2025"
Antwort (gekürzt)
JSON
{
  "az": "1C_161/2025",
  "slug": "1c_161-2025",
  "datum": "2026-06-25",
  "gericht": "BGer",
  "ausgangLabel": "Gutgeheissen",
  "leitsatz": "…",
  "normen": ["Art. 36a GSchG", "Art. 41c Abs. 1 GSchV", "…"],
  "zitat": "BGer 1C_161/2025 vom 25.06.2026 (Gutgeheissen)",
  "quelle": "https://entscheidsuche.ch/…"
}
GET/api/v1/rechtsprechung/normen

Normenregister

Welche Bestimmungen werden in Entscheiden zur Interessenabwägung angerufen, und wie oft. Liefert die Slugs für den Parameter „norm“.

FeldTypBedeutung
minnumberNur Normen mit mindestens so vielen Treffern. Standard 1.
Shell
curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung/normen?min=20"
Antwort (gekürzt)
JSON
{
  "total": 12,
  "normen": [
    { "norm": "Art. 24 RPG", "slug": "art-24-rpg", "anzahl": 69 },
    { "norm": "Art. 21 Abs. 2 RPG", "slug": "art-21-abs-2-rpg", "anzahl": 26 }
  ]
}
POST/api/v1/rechtsprechung/suche

Live-Suche bei entscheidsuche.ch

Sucht tagesaktuell im Volltextbestand von entscheidsuche.ch. Ergänzung zum Korpus, kein Ersatz: die Treffer sind aktueller, aber ohne Annotation, und die Route hängt von einem fremden Dienst ab.

FeldTypBedeutung
themastringZusätzlicher Suchbegriff.
planungsanlassstringPlanungsanlass als Suchkontext.
kantonstringKantonskürzel, ergänzt kantonale Suchbegriffe.
limitnumber1–20, Standard 5.
Shell
curl -X POST -H "X-API-Key: $IAW_KEY" \
  -H "Content-Type: application/json" \
  -d '{"thema":"Gewässerraum","kanton":"BE","limit":3}' \
  "https://interessenabwaegung.ch/api/v1/rechtsprechung/suche"

Antwortet mit 504 und dem Fehler „search_timeout“, wenn entscheidsuche.ch nicht rechtzeitig liefert. Wer verlässliche Antwortzeiten braucht, nimmt den Korpus-Endpunkt.

Interessenabwägung

Eine Abwägung anstossen, ihren Stand verfolgen, Unterlagen beilegen und das Ergebnis abholen. Der Ablauf ist bewusst nicht vollautomatisch: die Gewichtung der Interessen nimmt ein Mensch im Browser vor. Die API liefert dafür den Link.

POST/api/v1/iaw/start

Abwägung anlegen

Legt einen Fall an und gibt eine Fall-ID sowie die Web-Adresse zurück, unter der die Gewichtung vorgenommen wird.

FeldTypBedeutung
gemeindePflichtstringName der Gemeinde.
kantonPflichtstringKantonskürzel, etwa „ZH“.
planungsanlassPflichtstringSiehe Vokabular unten.
beschreibungPflichtstringVorhaben in Worten. Wird auf 500 Zeichen gekürzt.
parzellestringParzellennummer, optional.
Shell
curl -X POST -H "X-API-Key: $IAW_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "gemeinde": "Uster",
        "kanton": "ZH",
        "planungsanlass": "einzonung",
        "beschreibung": "Einzonung von 1.2 ha für Wohnnutzung am Siedlungsrand."
      }' \
  "https://interessenabwaegung.ch/api/v1/iaw/start"
Antwort (gekürzt)
JSON
{
  "case_id": "iaw_a1b2c3d4e5f6a7b8",
  "status": "created",
  "web_url": "https://interessenabwaegung.ch/agent?gemeinde=Uster&kanton=ZH&…"
}
GET/api/v1/iaw/{case_id}/status

Stand abfragen

Liefert den Status (created, in_progress, completed, exported) und einzelne Fortschrittsmerkmale — etwa ob gewichtet wurde und ob der Export bereitsteht.

Shell
curl -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/iaw/iaw_a1b2c3d4e5f6a7b8/status"
Antwort (gekürzt)
JSON
{
  "case_id": "iaw_a1b2c3d4e5f6a7b8",
  "status": "in_progress",
  "progress": {
    "interessen_erfasst": true,
    "gewichtung_abgeschlossen": true,
    "debatte_durchgefuehrt": false,
    "export_bereit": false,
    "dokumente_hochgeladen": true
  }
}
POST/api/v1/iaw/{case_id}/upload

Unterlage beilegen

Lädt ein Dokument zum Fall hoch, als multipart/form-data im Feld „file“. Höchstens 10 MB je Datei. Ein GET auf denselben Pfad listet die bereits hinterlegten Dokumente.

Shell
curl -X POST -H "X-API-Key: $IAW_KEY" \
  -F "file=@Planungsbericht.pdf" \
  "https://interessenabwaegung.ch/api/v1/iaw/iaw_a1b2c3d4e5f6a7b8/upload"
POST/api/v1/iaw/{case_id}/export

Ergebnis abholen

Schliesst den Fall ab und liefert die Abwägungsdaten. Der Parameter „format“ akzeptiert docx oder pdf.

FeldTypBedeutung
formatquery, docx | pdfStandard docx.
Shell
curl -X POST -H "X-API-Key: $IAW_KEY" \
  "https://interessenabwaegung.ch/api/v1/iaw/iaw_a1b2c3d4e5f6a7b8/export?format=docx"

Dieser Endpunkt liefert derzeit die Abwägungsdaten als JSON und setzt den Fall auf „exported“ — noch keine fertige Word- oder PDF-Datei. Das gerenderte Dokument gibt es aktuell nur über die Weboberfläche.

Parzelle

Standortbezug herstellen, bevor eine Abwägung beginnt.

POST/api/v1/parzelle/geodaten

Parzelle verorten

Ermittelt über geo.admin.ch die LV95-Koordinaten und den EGRID zu einer Adresse oder Parzellennummer. Entweder „parzelle“ oder „adresse“ ist erforderlich.

FeldTypBedeutung
gemeindePflichtstringName der Gemeinde.
kantonPflichtstringKantonskürzel.
parzellestringParzellennummer.
adressestringStrasse und Hausnummer.
Shell
curl -X POST -H "X-API-Key: $IAW_KEY" \
  -H "Content-Type: application/json" \
  -d '{"gemeinde":"Uster","kanton":"ZH","adresse":"Bahnhofstrasse 1"}' \
  "https://interessenabwaegung.ch/api/v1/parzelle/geodaten"
Antwort (gekürzt)
JSON
{
  "status": "ok",
  "egrid": "CH…",
  "koordinaten": { "x": 2694000, "y": 1245000 },
  "koordinatensystem": "LV95 / EPSG:2056"
}

Liefert Verortung, nicht die Schutzgut-Abfrage. Die vollständige Auswertung der Bundesinventare (BLN, ISOS, FFF, Gewässerraum, Naturgefahren) läuft heute nur über die Weboberfläche; die Antwort enthält dafür unter „geodaten_query“ den passenden Folgeaufruf.

Vokabular

Die Werte, die Filter und Antwortfelder verwenden. Links steht der Schlüssel für die Anfrage, rechts die Bezeichnung in der Oberfläche. Diese Tabelle wird aus demselben Modul erzeugt wie die Anwendung selbst und kann deshalb nicht veralten.

planungsanlass / anlass
ortsplanungsrevisionOrtsplanungsrevision
baubewilligungBaubewilligung
gestaltungsplanGestaltungsplan
richtplanungRichtplanung
auszonungAuszonung
einzonungEinzonung
umzonungUmzonung
ausserhalb_bauzoneBauen ausserhalb Bauzone
sondernutzungsplanSondernutzungsplan
killer
gewaesserraumGewässerraum
isosISOS
blnBLN
moorMoorlandschaft
ivsIVS
waldWald
fffFruchtfolgeflächen
biotopBiotop / Aue / Trockenwiese
gewaesserschutzGewässerschutz
dimension
sachverhaltSachverhalt
vollstaendigkeitVollständigkeit
konfliktanalyseKonfliktanalyse
gewichtungKonsistenzGewichtung und Konsistenz
verhaeltnismaessigkeitVerhältnismässigkeit
variantenVarianten
standortgebundenheitStandortgebundenheit
rechtsgrundlagenRechtsgrundlagen
abwaegungsentscheidAbwägungsentscheid
auflagenAuflagen
killerKriterienKiller-Kriterien
ausgang
gutgeheissenGutgeheissen
teilweise_gutgeheissenTeilweise gutgeheissen
abgewiesenAbgewiesen
rueckweisungRückweisung
nichteintretenNichteintreten
andersBesonderer Ausgang

Fehler

Fehlerantworten tragen immer ein Feld error mit einem stabilen Schlüssel, oft ergänzt um message im Klartext.

Status und SchlüsselBedeutung
400 invalid_jsonDer Rumpf ist kein gültiges JSON.
400 missing_fieldsPflichtfelder fehlen. Die Antwort nennt sie unter „required“.
401 missing_api_keyWeder X-API-Key noch Authorization-Kopfzeile gesetzt.
401 invalid_api_keySchlüssel unbekannt oder widerrufen.
404 not_foundEntscheid, Fall oder Norm existiert nicht.
504 search_timeoutNur bei der Live-Suche: entscheidsuche.ch hat nicht rechtzeitig geantwortet.

Die Urteilszusammenfassungen sind eigene, KI-gestützte Texte zu amtlichen Volltexten und ersetzen deren Lektüre nicht. Ohne Schlüssel lässt sich der Korpus auch über die Urteilssuche durchsuchen.