DealPilot · Schnittstelle

Rechenkerne per API

Restnutzungsdauer und Verkehrswert aus deiner eigenen Software berechnen, mit denselben Rechenkernen wie in der DealPilot-App.

Zugang

Die Schnittstelle ist ein Zusatz zu den Plänen Pro und Partner. Sie ist in der Testphase nicht enthalten und wird von DealPilot je Konto freigeschaltet.

  1. In der App unter Einstellungen → Account & Sicherheit → DealPilot API einen Schlüssel anlegen. Er wird nur einmal angezeigt.
  2. Jeden Aufruf mit der Kopfzeile x-api-key: dpk_live_… schicken, Inhalt als JSON.
  3. Basis-Adresse: https://app.dealpilot.immo/api/v1/rechenkerne
Höchstens 120 Aufrufe je Minute und Schlüssel. Ist für dein Konto ein Monatskontingent vereinbart, zählen nur erfolgreiche Aufrufe.

POST /rnd · Restnutzungsdauer

Restnutzungsdauer nach Anlage 2 ImmoWertV mit technischer Prüfung über die Gewerke. Das Ergebnis ist das Niedrigere aus Modell und Technik; die Modernisierung zählt über die Punkte, der Zustand der Gewerke kann nur kürzen. Ohne Baujahr gibt es keine Zahl.

Eingabe

FeldPflichtBedeutung
eingabe.baujahrjaBaujahr (bei Kernsanierung das Sanierungsjahr)
eingabe.stichtagneinWertermittlungsstichtag JJJJ-MM-TT, sonst heute
eingabe.gndneinGesamtnutzungsdauer in Jahren, Vorgabe 70
eingabe.modPointsneinModernisierungspunkte nach Anlage 2 (0–20)
eingabe.kernsaniertneintrue bei Kernsanierung (Deckel 90 % statt 70 %)
eingabe.gewerkeBewertungneinZustand je Gewerk: dach, fenster, leitungen, heizung, aussenwand, baeder, decken, technik, grundriss, jeweils veraltet · standard · erneuert · gehoben
afaneinSteuervergleich: gebaeudeanteil (€, Pflicht), grenzsteuersatz (0,42), standardAfaSatz (0,02), gutachterkosten (1500)
external_refneindeine eigene Kennung, wird mitgezählt

Statt eingabe kann auch ein ganzer DealPilot-Datensatz als objekt geschickt werden (wie im Portfolio-Export).

curl -X POST https://app.dealpilot.immo/api/v1/rechenkerne/rnd \
  -H "x-api-key: dpk_live_…" -H "Content-Type: application/json" \
  -d '{ "eingabe": { "baujahr": 1998, "stichtag": "2024-07-31", "gnd": 70, "modPoints": 1,
        "gewerkeBewertung": { "dach":"veraltet", "fenster":"veraltet", "leitungen":"veraltet",
          "heizung":"erneuert", "aussenwand":"veraltet", "baeder":"veraltet",
          "decken":"veraltet", "technik":"veraltet", "grundriss":"veraltet" } } }'

Antwort (gekürzt)

{ "kern": "restnutzungsdauer",
  "ergebnis": {
    "final_rnd": 28.6,
    "verfahren": "technisch",
    "final_source": "technische Alterswertminderung - Basis Anlage 2 mit 1 Punkten, …",
    "methods": { "punktraster": { … }, "technisch": { … }, "linear": { … } },
    "grenzen": [ … ] } }

verfahren ist punktraster (Modell), technisch (die Gewerke kürzen) oder keines (keine Zahl, Grund in grenzen).

POST /verkehrswert · Wertermittlung

Bodenwert, Ertragswert und Sachwert nach ImmoWertV mit den amtlichen Kennzahlen der Gutachterausschüsse (Liegenschaftszins, Sachwertfaktor, Bodenrichtwert). Dauer etwa 10–30 Sekunden.

Eingabe: objekt

FeldPflichtBedeutung
str, hnr, plz, ortjaAnschrift (oder lat/lon auf oberster Ebene)
objartjaETW · EFH · ZFH · MFH · DHH · RH · BUERO · GESCH · GEW
wfljaWohnfläche in m²
baujahrjaBaujahr
nkmfür ErtragswertNettokaltmiete je Monat in €
gsflfür BodenwertGrundstücksfläche in m²
meaETWMiteigentumsanteil in Prozent, z. B. 7.06 (ohne ihn kein Bodenwert)
bgfSachwert ETWBrutto-Grundfläche in m²
mod_punkteneinModernisierungspunkte nach Anlage 2
kpneinKaufpreis in €, für den Vergleich
brw, lzs_pct, sachwertfaktorneineigene Werte, wo kein amtlicher vorliegt (im Ergebnis als „eigene Angabe“)

Weitere Felder wie in der App (Ausstattung, Stellplätze, Erbbaurecht, Einheiten des Mehrfamilienhauses) werden ebenfalls gelesen. Optional auf oberster Ebene: wert_stufe (Vorgabe 3 = volle Wertermittlung), external_ref.

curl -X POST https://app.dealpilot.immo/api/v1/rechenkerne/verkehrswert \
  -H "x-api-key: dpk_live_…" -H "Content-Type: application/json" \
  -d '{ "objekt": { "str":"Musterstraße", "hnr":"1", "plz":"32609", "ort":"Hüllhorst",
        "objart":"EFH", "wfl":140, "baujahr":1975, "gsfl":650, "nkm":800 },
        "external_ref": "Auftrag-4711" }'

Antwort (gekürzt)

{ "kern": "verkehrswert",
  "ergebnis": {
    "report_id": …,
    "data": {
      "cross_check": {
        "bodenwert":   { … },
        "ertragswert": { "available": true, … },
        "sachwert":    { "available": false, "grund": "…", "sachwertfaktor_quelle_link": { … } },
        "quellen_nachweis": [ … ] } } } }

GET /kontingent · dein Stand

Freigabe, vereinbartes Monatskontingent und Aufrufe im laufenden Monat (n alle, n_ok erfolgreiche). null heißt ohne Grenze.

{ "freigeschaltet": true,
  "monat": { "rnd": { "n": 12, "n_ok": 12 }, "verkehrswert": { "n": 3, "n_ok": 2 } },
  "kontingent": { "rnd": null, "verkehrswert": 50 } }

Fehlercodes

StatuserrorBedeutung
400bad_requestEingabe fehlt oder hat die falsche Form
401–Schlüssel fehlt, ist falsch, abgelaufen oder widerrufen
403plan_ohne_schnittstelleder Plan enthält keine Schnittstelle (nur Pro, Partner)
403testphasein der Testphase nicht enthalten
403zusatz_nicht_freigeschaltetder Zusatz ist für dein Konto nicht freigeschaltet
422rechenfehlerdie Eingabe lässt sich nicht rechnen, Grund in message
429kontingent_erschoepftMonatskontingent aufgebraucht (oder mehr als 120 Aufrufe je Minute)
502 / 503–Dienst vorübergehend nicht erreichbar, später erneut versuchen

Grundsätze