Entwickler

API-Referenz

Mit der Cordimo-API lesen eigene Programme den Stand Ihrer Objekte, zum Beispiel für ein Dashboard, eine Tabelle oder Ihre Buchhaltung. Die API kann nur lesen und gehört zum Tarif Profi.

Grundlagen

Basis-Adressehttps://app.cordimo.de/api/v1
FormatJSON, Zeichensatz UTF-8
AnmeldungAPI-Schlüssel im Kopf Authorization: Bearer cdm_…
ZeitangabenISO 8601, Zeitpunkte mit Zeitzone (UTC), Tage als JJJJ-MM-TT
UmfangNur der Arbeitsbereich, zu dem der Schlüssel gehört

API-Schlüssel

Einen Schlüssel erstellen Inhaber unter Einstellungen → API-Schlüssel. Er beginnt mit cdm_ und wird nur einmal angezeigt. Speichern Sie ihn wie ein Passwort, zum Beispiel in einem Passwort-Manager oder als Umgebungsvariable, niemals im Quelltext. Ein widerrufener Schlüssel funktioniert sofort nicht mehr.

curl -H "Authorization: Bearer $CORDIMO_API_KEY" https://app.cordimo.de/api/v1/objekte

Objekte auflisten

GET/api/v1/objekte

Alle Objekte des Arbeitsbereichs mit Ampel und Fortschritt, auch archivierte.

{
  "objekte": [
    {
      "id": 12,
      "titel": "Bürgerstraße 12, 3. OG",
      "adresse": "Bürgerstraße 12, 04109 Leipzig",
      "lage": "3. OG links · 68 m²",
      "start": "2026-11-10",
      "uebergabe": "2026-12-12",
      "archiviert": false,
      "beispiel": false,
      "ampel": {
        "farbe": "gruen",
        "text": "Im Plan",
        "grund": "Alles im Plan.",
        "fortschritt": 43,
        "verzug_tage": 0
      }
    }
  ]
}
FeldBedeutung
ampel.farbegruen, gelb, rot oder grau (noch keine Gewerke)
ampel.fortschrittAnteil fertiger oder abgehakter Gewerke in Prozent
ampel.verzug_tageTage über dem geplanten Ende bzw. der Übergabe, sonst 0
beispieltrue beim Beispielobjekt mit erfundenen Daten

Ein Objekt mit Gewerken

GET/api/v1/objekte/{id}

Wie oben, zusätzlich mit Gewerken in Reihenfolge und Mängeln.

{
  "id": 12,
  "titel": "Bürgerstraße 12, 3. OG",
  "ampel": { "farbe": "gelb", "text": "Wackelt", "grund": "Sanitär: Problem gemeldet.", "fortschritt": 29, "verzug_tage": 0 },
  "gewerke": [
    {
      "id": 101, "position": 1, "name": "Rückbau", "status": "abgehakt",
      "start": "2026-11-10", "ende": "2026-11-11", "fertig_am": "2026-11-11T14:05:22+00:00",
      "handwerker": { "name": "Jonas Berger", "firma": "Berger Rückbau" }
    }
  ],
  "maengel": [
    { "id": 7, "gewerk_id": 101, "text": "Fuge am Fenster offen", "frist": "2026-11-20", "erledigt_am": null }
  ]
}

Werte für status: geplant, informiert, vor_ort, problem, fertig, abgehakt. Bedeutung siehe Stand eines Gewerks.

Meldungen abrufen

GET/api/v1/ereignisse?seit={Zeitpunkt}

Meldungen und Änderungen, neueste zuerst, höchstens 500. Mit seit holen Sie nur Neues, zum Beispiel alle fünf Minuten seit dem letzten Abruf.

curl -G -H "Authorization: Bearer $CORDIMO_API_KEY" \
  --data-urlencode "seit=2026-11-07T08:00:00+01:00" \
  https://app.cordimo.de/api/v1/ereignisse
{
  "ereignisse": [
    { "id": 812, "objekt_id": 12, "gewerk_id": 102, "art": "problem",
      "text": "Steigleitung marode", "von": "Ben Sanitär (Firma B)", "zeit": "2026-11-07T09:14:03+00:00" }
  ]
}

Werte für art: vor_ort, fertig, problem, abgehakt, rueckfrage, mangel, notiz, info, aushang.

Fehler

Fehler kommen als JSON mit dem Feld fehler, zum Beispiel {"fehler": "API-Schlüssel fehlt oder ist ungültig."}.

CodeBedeutung
200In Ordnung
400Ungültige Angabe, zum Beispiel seit nicht im ISO-Format
401Schlüssel fehlt, ist falsch oder wurde widerrufen
403Die API ist im aktuellen Tarif nicht enthalten oder der Arbeitsbereich ist gesperrt
404Objekt nicht gefunden oder gehört nicht zu Ihrem Arbeitsbereich
429Zu viele fehlerhafte Anfragen von Ihrer Adresse, bitte 10 Minuten warten

Beispiele

Python

import os, httpx

kopf = {"Authorization": f"Bearer {os.environ['CORDIMO_API_KEY']}"}
objekte = httpx.get("https://app.cordimo.de/api/v1/objekte", headers=kopf).json()["objekte"]
for o in objekte:
    if not o["archiviert"]:
        print(o["titel"], o["ampel"]["text"], f'{o["ampel"]["fortschritt"]} %')

JavaScript

const antwort = await fetch("https://app.cordimo.de/api/v1/objekte", {
  headers: { Authorization: `Bearer ${process.env.CORDIMO_API_KEY}` },
});
const { objekte } = await antwort.json();
console.table(objekte.map(o => ({ titel: o.titel, ampel: o.ampel.text })));

Rufen Sie die API nur von Ihrem Server oder Ihrem Rechner auf, nicht aus einer öffentlichen Webseite. Sonst wäre Ihr Schlüssel für jeden sichtbar.

Änderungen

Version 1 bleibt stabil: Neue Felder können dazukommen, bestehende ändern ihre Bedeutung nicht. Größere Änderungen kündigen wir vorab per E-Mail an Inhaber mit aktivem Schlüssel an.