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-Adresse | https://app.cordimo.de/api/v1 |
| Format | JSON, Zeichensatz UTF-8 |
| Anmeldung | API-Schlüssel im Kopf Authorization: Bearer cdm_… |
| Zeitangaben | ISO 8601, Zeitpunkte mit Zeitzone (UTC), Tage als JJJJ-MM-TT |
| Umfang | Nur 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
}
}
]
}
| Feld | Bedeutung |
|---|---|
ampel.farbe | gruen, gelb, rot oder grau (noch keine Gewerke) |
ampel.fortschritt | Anteil fertiger oder abgehakter Gewerke in Prozent |
ampel.verzug_tage | Tage über dem geplanten Ende bzw. der Übergabe, sonst 0 |
beispiel | true 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."}.
| Code | Bedeutung |
|---|---|
| 200 | In Ordnung |
| 400 | Ungültige Angabe, zum Beispiel seit nicht im ISO-Format |
| 401 | Schlüssel fehlt, ist falsch oder wurde widerrufen |
| 403 | Die API ist im aktuellen Tarif nicht enthalten oder der Arbeitsbereich ist gesperrt |
| 404 | Objekt nicht gefunden oder gehört nicht zu Ihrem Arbeitsbereich |
| 429 | Zu 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.