BzA-API – Anleitung

Diese Schnittstelle nimmt eine Bestätigung zum Antrag (BzA) der KfW-Heizungsförderung für elektrisch angetriebene Wärmepumpen entgegen. Der Ablauf ist asynchron: Anfrage absenden → Energieberatung Schneider startet den Durchlauf → Status abfragen, bis das PDF bereitsteht.

Authentifizierung

Jede Anfrage benötigt den Header X-API-Key mit dem Ihnen zugeteilten Schlüssel. Ein fehlender oder ungültiger Schlüssel wird mit 404 beantwortet (nicht 401/403) – ein 404 auf dem Endpunkt bedeutet also nicht „offline".

Schritt 1 – Anfrage absenden

curl -X POST https://api.energieberater-schneider.com/v1/request-document \
  -H "X-API-Key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "objekt": {
        "strasse": "Hagenburger Str.",
        "hausnummer": "1",
        "plz": "31515",
        "ort": "Wunstorf"
      },
      "wohneinheiten": 1,
      "wohnflaeche_m2": 100,
      "waermepumpe": { "typ_label": "Luft-Wasser-Wärmepumpe", "kw": 14 },
      "foerderfaehige_kosten": 28000,
      "klimageschwindigkeitsbonus": { "alte_heizung": "gas" }
    }
  }'

Antwort (202):

{ "jobId": "9f8e7d6c5b4a39281706f1e2d3c4b5a6", "status": "queued" }

Schritt 2 – Status abfragen

Die jobId aus Schritt 1 wiederholt abfragen, bis status = done (oder error):

curl https://api.energieberater-schneider.com/v1/request-document/JOB_ID \
  -H "X-API-Key: IHR_API_SCHLUESSEL"

Solange der Durchlauf noch nicht gestartet wurde oder wartet: { "status": "queued" }. Während der Verarbeitung: { "status": "running" }. Wenn fertig:

{
  "jobId": "9f8e...",
  "status": "done",
  "finishedAt": "2026-06-25T18:42:10+00:00",
  "pdfUrl": "https://storage.googleapis.com/.../bza.pdf?..."
}

Das PDF unter pdfUrl herunterladen – der Link ist 1 Stunde gültig (bei Ablauf einfach erneut abfragen).

Felder

FeldTypPflichtHinweis
objekt.strasse / hausnummer / plz / ortTextjaAdresse des Objekts
wohneinheitenGanzzahl ≥ 1jaAnzahl Wohneinheiten (WE)
wohnflaeche_m2ZahljaWohnfläche in m²
waermepumpe.typ_labelTextjaz. B. "Luft-Wasser-Wärmepumpe"
waermepumpe.kwZahljaNennleistung (kW)
foerderfaehige_kostenZahl (€)jawird auf die Höchstgrenze gedeckelt: 28.000 € für die erste WE, +15.000 € je WE 2–6, danach +8.000 € je WE
klimageschwindigkeitsbonusObjektoptional{ "alte_heizung": "gas" | "biomasse" | "oel_kohle" } – weglassen, wenn kein Bonus

Optional: BzA per E-Mail

Auf oberster Ebene (neben data) kann email_kopie gesetzt werden. Bei true wird die fertige BzA zusätzlich als PDF-Anhang an Ihre bei uns hinterlegte E-Mail-Adresse gesendet. Standard ist false – dann erfolgt die Zustellung nur über die pdfUrl (Schritt 2).

{
  "email_kopie": true,
  "data": { ... wie oben ... }
}

Hinweise

Komplettes Beispiel-Skript

Anfrage absenden, warten und PDF speichern (benötigt jq; die Anfrage-Daten stehen in request.json):

#!/usr/bin/env bash
set -euo pipefail
API="https://api.energieberater-schneider.com/v1/request-document"
KEY="IHR_API_SCHLUESSEL"

# request.json enthält den {"data": {...}}-Body aus Schritt 1.
job=$(curl -sS -X POST "$API" -H "X-API-Key: $KEY" \
        -H "Content-Type: application/json" -d @request.json | jq -r .jobId)
echo "Job: $job"

while true; do
  resp=$(curl -sS "$API/$job" -H "X-API-Key: $KEY")
  status=$(echo "$resp" | jq -r .status)
  echo "  Status: $status"
  if [ "$status" = "error" ]; then echo "$resp" | jq .; exit 1; fi
  if [ "$status" = "done" ]; then
    url=$(echo "$resp" | jq -r .pdfUrl)
    curl -sS "$url" -o bza.pdf
    echo "Gespeichert: bza.pdf"
    break
  fi
  sleep 5
done

Zur Ausstellung eines API-Schlüssels oder bei Fragen wenden Sie sich an Heinrich Schneider.