OpenCognitOpenCognitDOCS

API-Referenz

Vollständige REST-API-Dokumentation. Basis-URL: http://localhost:3201

Übersicht

Das OpenCognit Backend stellt eine vollständige REST API auf Port 3201 bereit. Alle Antworten werden im JSON-Format zurückgegeben.

Basis-URL: http://localhost:3201


Authentifizierung

OpenCognit verwendet JWT (JSON Web Token) für alle geschützten Endpoints. Der Token wird im Authorization-Header als Bearer-Token übergeben.

Authorization: Bearer <dein-jwt-token>

Token erhalten

POST /api/auth/registrieren
Content-Type: application/json

{
  "name": "Max Müller",
  "email": "max@beispiel.de",
  "passwort": "sicheres-passwort-123"
}

Antwort:

{ "token": "eyJhbGci...", "benutzer": { "id": "...", "name": "Max Müller", "rolle": "admin" } }
POST /api/auth/anmelden
Content-Type: application/json

{
  "email": "max@beispiel.de",
  "passwort": "sicheres-passwort-123"
}

Antwort:

{ "token": "eyJhbGci...", "benutzer": { "id": "...", "name": "Max Müller" } }
GET /api/auth/ich
Authorization: Bearer <token>

Antwort:

{ "id": "...", "name": "Max Müller", "email": "max@beispiel.de", "rolle": "admin" }

Unternehmen

MethodEndpointBeschreibung
GET/api/unternehmenAlle Unternehmen des Benutzers
POST/api/unternehmenNeues Unternehmen erstellen
GET/api/unternehmen/:idUnternehmen-Details
PATCH/api/unternehmen/:idUnternehmen aktualisieren
GET/api/unternehmen/:id/dashboardDashboard-Daten
GET/api/unternehmen/:id/aktivitaetAktivitätsfeed
GET/api/unternehmen/:id/kosten/zusammenfassungKostenübersicht

Unternehmen erstellen

POST /api/unternehmen
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Mein KI-Unternehmen",
  "beschreibung": "Ein autonomes Team für Software-Entwicklung.",
  "ziel": "Baue eine SaaS-Plattform für kleine Unternehmen."
}

Antwort:

{
  "id": "unt-abc123",
  "name": "Mein KI-Unternehmen",
  "status": "active",
  "erstelltAm": "2026-04-04T10:00:00Z"
}

Experten (Agenten)

MethodEndpointBeschreibung
GET/api/unternehmen/:id/expertenAlle Agenten eines Unternehmens
POST/api/unternehmen/:id/expertenNeuen Agenten anlegen
GET/api/experten/:idAgent-Details (Status, Skills, Config)
PATCH/api/experten/:idAgent aktualisieren
DELETE/api/experten/:idAgent löschen
POST/api/experten/:id/pausierenHeartbeat pausieren
POST/api/experten/:id/fortsetzenHeartbeat reaktivieren
GET/api/experten/:id/aktivitaetAktivitätslog des Agenten
GET/api/experten/:id/inboxOffene Aufgaben (Heartbeat-Inbox)
POST/api/experten/:id/skillsSkill hinzufügen
DELETE/api/experten/:id/skills/:skillIdSkill entfernen

Agenten anlegen

POST /api/unternehmen/:id/experten
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Anna Schmidt",
  "rolle": "Backend Developer",
  "titel": "Senior Engineer",
  "verbindungsTyp": "claude",
  "verbindungsConfig": {
    "model": "claude-sonnet-4-6",
    "maxTokens": 8096
  },
  "faehigkeiten": ["nodejs", "postgresql", "rest-api"],
  "zyklusAktiv": true,
  "zyklusIntervallSek": 300,
  "budgetMonatCent": 10000
}

Aufgaben (Tasks)

MethodEndpointBeschreibung
GET/api/unternehmen/:id/aufgabenAlle Aufgaben
POST/api/unternehmen/:id/aufgabenNeue Aufgabe erstellen
GET/api/aufgaben/:idAufgaben-Details
PATCH/api/aufgaben/:idAufgabe aktualisieren
POST/api/aufgaben/:id/checkoutExecution Lock setzen
POST/api/aufgaben/:id/releaseExecution Lock freigeben
GET/api/aufgaben/:id/kommentareKommentare abrufen
POST/api/aufgaben/:id/kommentareKommentar hinzufügen

Aufgabe erstellen

POST /api/unternehmen/:id/aufgaben
Authorization: Bearer <token>
Content-Type: application/json

{
  "titel": "Benutzer-Authentifizierung implementieren",
  "beschreibung": "JWT-basierte Auth mit Refresh-Tokens. E-Mail-Verifikation optional.",
  "prioritaet": "hoch",
  "zugewiesenAn": "<experten-id>",
  "parentId": null,
  "blockedBy": null
}

Routinen

MethodEndpointBeschreibung
GET/api/unternehmen/:id/routinenAlle Routinen
POST/api/unternehmen/:id/routinenRoutine erstellen
GET/api/routinen/:idRoutine-Details
PATCH/api/routinen/:idRoutine aktualisieren
DELETE/api/routinen/:idRoutine löschen
GET/api/routinen/:id/triggersTrigger abrufen
POST/api/routinen/:id/triggersTrigger anlegen
POST/api/routinen/:id/triggerManuell auslösen
GET/api/routinen/:id/ausfuehrungenAusführungshistorie

Genehmigungen

MethodEndpointBeschreibung
GET/api/unternehmen/:id/genehmigungenOffene Genehmigungen
POST/api/genehmigungen/:id/genehmigenGenehmigen
POST/api/genehmigungen/:id/ablehnenAblehnen

Einstellungen

MethodEndpointBeschreibung
GET/api/einstellungenAlle Einstellungen abrufen
PUT/api/einstellungen/:keyEinstellung setzen
PUT /api/einstellungen/anthropic_api_key
Authorization: Bearer <token>
Content-Type: application/json

{ "wert": "sk-ant-api03-..." }

System & Health

MethodEndpointBeschreibung
GET/api/healthHealth-Check (UP/DOWN)
GET/api/system/statusSystemlast, aktive Heartbeats, Budget-Status
GET /api/health
# Antwort: { "status": "UP", "timestamp": "2026-04-04T10:00:00Z" }

GET /api/system/status
# Antwort: { "aktiveAgenten": 3, "offeneAufgaben": 12, "heartbeatsHeute": 47 }

Chat

Direktes Board ↔ Agent-Messaging pro Unternehmen:

MethodEndpointBeschreibung
GET/api/unternehmen/:id/chatChat-Verlauf abrufen
POST/api/unternehmen/:id/chatNachricht senden
POST /api/unternehmen/:id/chat
Authorization: Bearer <token>
Content-Type: application/json

{ "nachricht": "Wie ist der Status der Login-Seite?", "empfaengerId": "<agenten-id>" }

WebSocket — Real-Time Updates

OpenCognit sendet Live-Updates über WebSocket an alle verbundenen Clients.

Verbindung:

const ws = new WebSocket('ws://localhost:3201/ws');
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log(data.type, data);
};

Event-Typen:

Event typeBeschreibung
agent_statusAgent-Status geändert (idle / running / paused / error)
task_startedAgent hat eine Aufgabe übernommen und Execution Lock gesetzt
task_completedAufgabe nach erfolgreicher Ausführung auf done gesetzt
task_escalatedAufgabe nach 3 aufeinanderfolgenden Fehlern an CEO eskaliert
tasks_unblockedBlockierte Aufgaben wurden nach Abhängigkeitsauflösung freigegeben
approval_neededNeue Genehmigungsanfrage wartet auf Board-Entscheidung
goal_achievedUnternehmensziel vom CEO als erreicht markiert
budget_warningAgent nähert sich oder überschreitet das Monatsbudget
expert_deletedEin Agent wurde gelöscht
meeting_createdAgenten haben ein Koordinationsgespräch geplant
meeting_updatedMeeting-Ergebnis oder -Status geändert
agents_importedMassen-Import von Agenten abgeschlossen
routine_executedEine geplante Routine wurde ausgeführt
aktivitaetNeuer Aktivitätslog-Eintrag
kosten_updateToken-Kosten-Tracking aktualisiert

Das Frontend nutzt WebSocket für das Echtzeit-Dashboard. Alle Änderungen (Agent-Status, Task-Updates, neue Kommentare) werden sofort ohne Page-Refresh angezeigt.


Fehler-Antworten

Alle Endpoints geben strukturierte Fehler zurück:

{
  "fehler": "Aufgabe nicht gefunden",
  "code": "NOT_FOUND",
  "status": 404
}
HTTP-StatusBedeutung
200Erfolg
201Ressource erstellt
400Ungültige Anfrage
401Nicht authentifiziert
403Keine Berechtigung
404Ressource nicht gefunden
409Konflikt (z.B. Execution Lock aktiv)
500Server-Fehler