Anbindung
REST- und MCP-API
Diese Anleitung zeigt, wie Sie knowmind aus eigenen Anwendungen ansprechen. Zwei Schnittstellen stehen zur Verfügung: REST für klassische Backend-Integrationen und MCP (JSON-RPC 2.0 über HTTP) für KI-Werkzeuge.
Voraussetzungen
- knowmind-Konto im Tarif Business API oder Enterprise (für eigene API-Tokens und Rate-Limit ab 60 Anfragen pro Minute)
- API-Token im Format kmt_… (Anleitung: API-Token erstellen)
- TLS-fähiger HTTP-Client in Ihrer Wahl-Sprache
Zwei Schnittstellen, ein Token
Schritte
- 1
Endpunkt und Authentifizierung
Alle Anfragen gehen gegen
https://knowmind.de. Die Authentifizierung erfolgt über denAuthorization: Bearer kmt_…Header.textREST: https://knowmind.de/api/v1/... MCP: https://knowmind.de/api/mcp/v1 Auth: Authorization: Bearer kmt_…Ergebnis:
curl -H "Authorization: Bearer kmt_…" https://knowmind.de/api/healthliefert eine Erfolgsmeldung. - 2
REST-Beispiel: Suche und Speichern
curl:
bash# Suchen curl -X POST https://knowmind.de/api/v1/memory/recall \ -H "Authorization: Bearer kmt_…" \ -H "Content-Type: application/json" \ -d '{ "query": "Wer ist Ansprechpartnerin für die Einarbeitung?", "k": 5, "hops": 2, "use_graph": true }' # Erinnerung anlegen curl -X POST https://knowmind.de/api/v1/memory/entries \ -H "Authorization: Bearer kmt_…" \ -H "Content-Type: application/json" \ -d '{ "memory_type": "semantic", "title": "QM-Schulung Pflicht", "content": "Alle Service-Mitarbeitenden absolvieren die QM-Schulung jährlich.", "tags": ["qm", "schulung"], "source": "internal-handbook" }'TypeScript (Node 20+):
tsconst TOKEN = process.env.KNOWMIND_TOKEN!; const BASE = "https://knowmind.de/api/v1"; async function recall(query: string, k = 5) { const r = await fetch(`${BASE}/memory/recall`, { method: "POST", headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ query, k, hops: 2, use_graph: true }), }); if (!r.ok) throw new Error(`recall failed: ${r.status}`); return r.json(); } const hits = await recall("Wer hat den Müller-Vertrag verfasst?"); console.log(hits);Python:
pythonimport os, requests TOKEN = os.environ["KNOWMIND_TOKEN"] BASE = "https://knowmind.de/api/v1" HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"} def recall(query: str, k: int = 5) -> dict: r = requests.post( f"{BASE}/memory/recall", headers=HEADERS, json={"query": query, "k": k, "hops": 2, "use_graph": True}, timeout=10, ) r.raise_for_status() return r.json() print(recall("DSGVO-Schulung Pflicht?")) - 3
MCP-Beispiel: JSON-RPC 2.0
MCP-Aufrufe sind JSON-RPC-2.0-Anfragen an
/api/mcp/v1. Standardmäßig wird eine einmalige JSON-Antwort geliefert. Wer Streamable-HTTP braucht (für native Custom Connectoren), setztAccept: text/event-stream.bash# Tools auflisten curl -X POST https://knowmind.de/api/mcp/v1 \ -H "Authorization: Bearer kmt_…" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' # Recall aufrufen curl -X POST https://knowmind.de/api/mcp/v1 \ -H "Authorization: Bearer kmt_…" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "knowmind.recall", "arguments": { "query": "Wann ist der nächste Quartalsbericht fällig?", "k": 5 } } }'Ergebnis: Antwort ist ein JSON-RPC-Response-Objekt mit
result(bei Erfolg) odererror(bei Fehler). - 4
Rate-Limits beachten
Tarif Business API: 60 Anfragen pro Minute. Tarif Enterprise: 600. Überschreitungen liefern HTTP 429 mit
Retry-After-Header in Sekunden.Setzen Sie in eigenen Clients einen Backoff-Mechanismus ein, der bei 429 wartet und erneut versucht. Im Pseudo-Code: lesen Sie
Retry-After, warten Sie die angegebene Anzahl Sekunden (mit Jitter), wiederholen Sie die Anfrage maximal dreimal.
Prüfung des Ergebnisses
Die Anbindung läuft, wenn alle drei Bedingungen erfüllt sind:
GET /api/healthmit gültigem Bearer-Token liefert HTTP 200 mit Service-Status.- Ein
POST /api/v1/memory/recallmit einer bekannten Frage liefert mindestens einen Treffer. - Im knowmind-Dashboard unter API-Tokens sehen Sie den Zeitpunkt der letzten Nutzung Ihres Tokens.
Fehlerbehebung
| Fehlermeldung | Ursache | Auflösung |
|---|---|---|
| 401 Unauthorized | Token fehlt, ist widerrufen oder Tippfehler im Header. | Token im Dashboard prüfen. Header-Format: Authorization: Bearer kmt_… mit Leerzeichen zwischen Bearer und Token. |
| 403 Forbidden | Token hat nicht den nötigen Scope (write erforderlich für Anlage). | Im Dashboard den Token-Scope bearbeiten oder einen neuen Token mit read und write erstellen. |
| 429 Too Many Requests | Rate-Limit überschritten (60/min im Business-API-Tarif). | Retry-After auswerten, Backoff implementieren, gegebenenfalls Enterprise-Tarif für 600 req/min. |
| 422 Unprocessable Entity bei /memory/entries | Pflichtfeld fehlt oder memory_type außerhalb der Enum-Liste. | Pflichtfelder: memory_type, title, content. Zulässige Typen: semantic, episodic, procedural, reference, working, entity. |
| 504 Gateway Timeout bei langen Dokumenten | Upload-Dokument > 10.000 Zeichen wird intern als Background-Job verarbeitet. | Antwort enthält job_id. Über GET /api/v1/jobs/{id} Status abfragen, bis status: ready. |