API und Claude-Zugang
Mit der Voltdoc-API legen eigene Programme, deine Hausverwaltung, ein Fachbetrieb oder ein KI-Assistent wie Claude Akten, Einheiten, Einträge, Akkus und Teile an, lesen sie aus und liefern Rechnungen ein. Ohne Abtippen. Es gilt immer: Jede Kategorie erlaubt nur, was es dort gibt. Einheiten gibt es nur beim Haus, Kilometer nicht beim Haus, Akkus nicht beim Fahrrad ohne Motor.
Version 1 · Stand 31.10.2026 · Änderungen kündigen wir hier an.
So kommst du rein
- Freischalten lassen. Die API ist ein Zusatzpaket. Wir schalten sie je Konto frei, mit einer Anzahl Akten, die das Konto per API nutzen darf. Schreib uns über „Problem melden“.
- Selbst einschalten. In der App unter Konto → API und Claude → „API für mein Konto einschalten“. Ausschalten sperrt alle Schlüssel sofort.
- Schlüssel anlegen. Name (für wen), Rechte, für welche Akten, Laufzeit. Der Schlüssel (
vd_…) wird nur einmal angezeigt. Widerrufen geht jederzeit.
Hausverwaltung oder Fachbetrieb: Der Eigentümer legt einen Schlüssel für dich an und gibt ihn dir. Oder du nutzt die API mit deinem eigenen Konto für deine eigenen Objekte.
Rechte eines Schlüssels
| Recht | erlaubt |
|---|---|
lesen | Akten, Einheiten, Einträge, Akkus, Teile, Posteingang und Dateien ansehen |
einliefern | Belege in den Posteingang „Zu prüfen“ legen; der Eigentümer bestätigt in der App |
anlegen | Akten, Einheiten, Einträge, Akkus und Teile anlegen und ändern |
Löschen geht per API nicht. Ein Schlüssel kann auf bestimmte Akten beschränkt sein; legt er eine neue Akte an, gilt er auch für diese.
Mit Claude nutzen (MCP)
Voltdoc spricht das Model Context Protocol. Claude kann damit selbst Objekte anlegen, Einheiten eintragen, Rechnungen zuordnen und Unklares markieren.
- Claude (Web, Desktop): Einstellungen → Connectors → eigenen Connector hinzufügen, Adresse:
https://voltdoc.app/api/voltdoc/mcp/vd_DEIN_SCHLÜSSEL(die App zeigt sie beim Anlegen zum Kopieren an). - Claude Code:
claude mcp add --transport http voltdoc https://voltdoc.app/api/voltdoc/mcp --header "Authorization: Bearer vd_…"
Werkzeuge: konto, kategorien, objekte_liste, objekt_details, objekt_anlegen, objekt_aendern, einheiten_anlegen, einheit_aendern, eintraege_liste, eintrag_anlegen, eintrag_aendern, akku_anlegen, teil_anlegen, eingang_einliefern, eingang_liste.
Beispiel: „Leg meine drei Häuser aus dieser Liste mit allen Wohnungen an und ordne die Rechnungen aus dem Ordner zu. Was du nicht sicher zuordnen kannst, markier als zu klären.“
Die Adresse mit Schlüssel ist wie ein Passwort. Behandle sie so. Was Claude abruft, geht an Anthropic; dort gelten deren Bestimmungen (Datenschutz).
REST-API
Basis: https://voltdoc.app/api/voltdoc/v1 · Anmeldung: Header Authorization: Bearer vd_… · Daten als JSON (UTF-8) · Datum als JJJJ-MM-TT · Beträge in Euro brutto, Zahl oder Text wie "289,50".
| Methode und Pfad | Recht | Zweck |
|---|---|---|
| GET /kategorien[/{kind}] | ohne | Was es je Kategorie gibt: Felder, Eintragsarten, Einheiten, Akkus, Teile in km oder Jahren |
| GET /konto | gültig | Schlüssel, Rechte, Paket (erlaubte und vorhandene Akten) |
| GET /objekte?kind= | lesen | Alle Akten |
| POST /objekte | anlegen | Akte anlegen, beim Haus mit einheiten, sonst optional akkus, teile |
| GET /objekte/{id} | lesen | Akte mit Einheiten, Akkus, Teilen, Zahlen und Regeln der Kategorie |
| PATCH /objekte/{id} | anlegen | Felder ändern (Kategorie bleibt) |
| GET / POST /objekte/{id}/einheiten | lesen / anlegen | Einheiten (nur Haus), POST mit {"einheiten":[…]} bis 500 auf einmal |
| PATCH /einheiten/{id} | anlegen | Einheit ändern |
| GET /objekte/{id}/eintraege | lesen | Filter: unit, kind, zu_klaeren=true, von, bis, limit, seite |
| POST /objekte/{id}/eintraege | anlegen | Eintrag direkt anlegen, optional mit dateien |
| GET / PATCH /eintraege/{id} | lesen / anlegen | Eintrag lesen, ändern, Einheit zuordnen, klären, Belege anhängen |
| GET / POST /objekte/{id}/akkus, PATCH /akkus/{id} | lesen / anlegen | Akkus und Stromspeicher |
| GET / POST /objekte/{id}/teile, PATCH /teile/{id} | lesen / anlegen | Verschleißteile (km) oder Bauteile (Jahre) |
| GET /objekte/{id}/eingang?status= | lesen | Posteingang: zu_pruefen, uebernommen, verworfen |
| POST /objekte/{id}/eingang | einliefern | Beleg einliefern, der Eigentümer bestätigt |
| GET /dateien/{eintraege|eingang|akkus|objekte}/{id}/{name} | lesen | Datei herunterladen (Link steht in dateien[].url) |
Kategorien
fahrrad, ebike, escooter, emoped, motorrad, emotorrad, auto, eauto, hybrid, haus, wohnmobil, boot, speicher, sonstiges (mit kind_label). Die genauen Felder liefert GET /kategorien. Felder, die es in einer Kategorie nicht gibt, lehnt die API mit einer klaren Meldung ab.
| Kategorie | Akte | Eintragsarten | Extras |
|---|---|---|---|
| haus | name, house_type (efh, dhh, rh, wohnung, mfh), area, year, heating, heat_year, energy_class, energy_kwh, cert_type, cert_until | energetisch, renovierung, wartung, reparatur, pruefung, mangel, massnahme, kauf, sonstiges | Einheiten, labor_cost, funding_ref, Bauteile in Jahren, Stromspeicher |
| Fahrzeuge | name, brand, model, ident, year, km (nicht bei boot) | wartung, inspektion, reparatur, reifen, akku, pruefung, mangel, kauf, sonstiges | Akkus (nicht fahrrad, motorrad, auto), Teile in km (boot in Jahren) |
| speicher | name, brand, model, ident, year | wartung, pruefung, reparatur, mangel, kauf, sonstiges | Akkus, Teile in Jahren |
Einträge haben immer date, optional title, shop, cost, notes, part, unclear und unclear_note (zu klären), bei Mangel und Maßnahme state (offen, erledigt).
Beispiel: Haus mit Wohnungen anlegen
curl -X POST https://voltdoc.app/api/voltdoc/v1/objekte \
-H "Authorization: Bearer vd_…" -H "Content-Type: application/json" \
-d '{"kind":"haus","name":"Musterstraße 5","house_type":"mfh","area":640,"year":1972,
"einheiten":[{"name":"EG links","kind":"wohnung","area":72},
{"name":"Garage 1","kind":"stellplatz"}]}'
Arten von Einheiten: wohnung, gewerbe, stellplatz, keller, allgemein, sonstiges. Bitte keine Namen von Mietern eintragen.
Beispiel: Rechnung anlegen, Einheit zuordnen, als zu klären markieren
curl -X POST https://voltdoc.app/api/voltdoc/v1/objekte/AKTEN_ID/eintraege \
-H "Authorization: Bearer vd_…" -H "Content-Type: application/json" \
-d '{"kind":"wartung","date":"2026-10-01","title":"Heizungswartung",
"shop":"Heizung Muster GmbH","cost":"289,50","labor_cost":120,
"unit":"EINHEITEN_ID","unclear":true,"unclear_note":"Umlagefähig?",
"dateien":[{"name":"rechnung.pdf","type":"application/pdf","data":"BASE64…"}]}'
Geklärt: PATCH /eintraege/{id} mit {"unclear":false}. Offene Punkte: GET /objekte/{id}/eintraege?zu_klaeren=true.
Beispiel: Beleg einliefern (Eigentümer bestätigt)
curl -X POST https://voltdoc.app/api/voltdoc/v1/objekte/AKTEN_ID/eingang \
-H "Authorization: Bearer vd_…" \
-F 'subject=Rechnung Schornsteinfeger' \
-F 'fields={"date":"2026-09-12","shop":"Huber","cost":84.2,"kind":"pruefung"}' \
-F 'dateien=@rechnung.pdf'
Dateien gehen als JSON (dateien: Base64 mit name, type, data) oder als Formular-Upload (Feld dateien). Erlaubt: PDF, JPEG, PNG, WebP, je höchstens 1 MB, bis 5 je Eintrag. Mit "auslesen":true und ohne fields liest Voltdoc den ersten Beleg per KI aus; das zählt auf die monatlichen KI-Auslesungen des Kontos.
Grenzen und Fehler
- Höchstens 120 Anfragen pro Minute je Adresse, 300 eingelieferte Belege je Akte und Tag, 1000 Einheiten je Haus.
- Paket: Hat das Konto mehr Akten, als das Paket umfasst, antwortet die API mit
402, bis das Paket größer ist. - Fehler kommen als
{"status":400,"message":"…"}auf Deutsch:400Angabe falsch oder in der Kategorie nicht vorhanden,401Schlüssel fehlt, ungültig oder abgelaufen,402Paket zu klein,403Recht fehlt, nicht freigeschaltet oder ausgeschaltet,404nicht gefunden,429zu viele Anfragen. - Jede Änderung steht im Verlauf der Akte mit Datum und Name des Schlüssels; Lesen höchstens einmal pro Stunde. Einträge tragen
source: "API: …". - Alle Angaben sind ohne Gewähr. Fristen, Kosten und Hinweise sind Richtwerte, keine Rechts- oder Steuerberatung. Was Voltdoc bewusst nicht macht.
Fragen?
Tipp unten auf „Problem melden“ oder schreib über das Kontaktformular.