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.
- In der App unter Einstellungen → Account & Sicherheit → DealPilot API einen Schlüssel anlegen. Er wird nur einmal angezeigt.
- Jeden Aufruf mit der Kopfzeile
x-api-key: dpk_live_…schicken, Inhalt als JSON. - Basis-Adresse:
https://app.dealpilot.immo/api/v1/rechenkerne
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
| Feld | Pflicht | Bedeutung |
|---|---|---|
eingabe.baujahr | ja | Baujahr (bei Kernsanierung das Sanierungsjahr) |
eingabe.stichtag | nein | Wertermittlungsstichtag JJJJ-MM-TT, sonst heute |
eingabe.gnd | nein | Gesamtnutzungsdauer in Jahren, Vorgabe 70 |
eingabe.modPoints | nein | Modernisierungspunkte nach Anlage 2 (0–20) |
eingabe.kernsaniert | nein | true bei Kernsanierung (Deckel 90 % statt 70 %) |
eingabe.gewerkeBewertung | nein | Zustand je Gewerk: dach, fenster, leitungen, heizung, aussenwand, baeder, decken, technik, grundriss, jeweils veraltet · standard · erneuert · gehoben |
afa | nein | Steuervergleich: gebaeudeanteil (€, Pflicht), grenzsteuersatz (0,42), standardAfaSatz (0,02), gutachterkosten (1500) |
external_ref | nein | deine 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
| Feld | Pflicht | Bedeutung |
|---|---|---|
str, hnr, plz, ort | ja | Anschrift (oder lat/lon auf oberster Ebene) |
objart | ja | ETW · EFH · ZFH · MFH · DHH · RH · BUERO · GESCH · GEW |
wfl | ja | Wohnfläche in m² |
baujahr | ja | Baujahr |
nkm | für Ertragswert | Nettokaltmiete je Monat in € |
gsfl | für Bodenwert | Grundstücksfläche in m² |
mea | ETW | Miteigentumsanteil in Prozent, z. B. 7.06 (ohne ihn kein Bodenwert) |
bgf | Sachwert ETW | Brutto-Grundfläche in m² |
mod_punkte | nein | Modernisierungspunkte nach Anlage 2 |
kp | nein | Kaufpreis in €, für den Vergleich |
brw, lzs_pct, sachwertfaktor | nein | eigene 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
| Status | error | Bedeutung |
|---|---|---|
| 400 | bad_request | Eingabe fehlt oder hat die falsche Form |
| 401 | – | Schlüssel fehlt, ist falsch, abgelaufen oder widerrufen |
| 403 | plan_ohne_schnittstelle | der Plan enthält keine Schnittstelle (nur Pro, Partner) |
| 403 | testphase | in der Testphase nicht enthalten |
| 403 | zusatz_nicht_freigeschaltet | der Zusatz ist für dein Konto nicht freigeschaltet |
| 422 | rechenfehler | die Eingabe lässt sich nicht rechnen, Grund in message |
| 429 | kontingent_erschoepft | Monatskontingent aufgebraucht (oder mehr als 120 Aufrufe je Minute) |
| 502 / 503 | – | Dienst vorübergehend nicht erreichbar, später erneut versuchen |
Grundsätze
- Kein Verfahren rechnet halb. Fehlt eine Pflichtangabe, erscheint das Verfahren nicht, dafür steht im Ergebnis der Grund und was fehlt.
- Kein Treffer heißt kein Wert. Wo kein amtlicher Wert vorliegt, nennen wir den zuständigen Gutachterausschuss und den Weg zu seiner Quelle. Ausnahme ist der Liegenschaftszins: er hat immer einen Wert, unterhalb der örtlichen Ebene ausdrücklich gekennzeichnet.
- Jede Zahl trägt ihre Herkunft: Stufe, Modellvermerk, Ausschuss, Jahrgang.
- Die Ergebnisse sind eine rechnerische Ermittlung. Sie ersetzen kein Gutachten mit Ortsbesichtigung und sachverständiger Würdigung.