Basis-URL lokal:
http://localhost:3001
Alle API-Routen liegen unter:
/api
Aktuell ist keine API-Authentifizierung implementiert. Für produktive Nutzung sollte ein Auth-Layer vorgeschaltet werden.
Prüft API-Liveness und MongoDB-Erreichbarkeit.
Antwort:
{"ok": true}Listet alle Provider-Dokumente.
Erzeugt neuen Provider.
Beispiel:
{
"name": "OpenAI",
"slug": "openai",
"base_url": "https://api.openai.com/v1",
"api_key_plain": "sk-...",
"is_active": true,
"capabilities": {
"chat": true,
"embeddings": true,
"vision": true,
"function_calling": true,
"json_mode": true
}
}Hinweise:
api_key_plainwird serverseitig verschlüsselt und alsapi_key_encryptedgespeichert.- Antwort maskiert das Feld als
***.
Aktualisiert Provider-Teilfelder.
Spezialfall:
- Bei
api_key_plainwird neu verschlüsselt gespeichert.
Löscht Provider.
Antwort: 204 No Content
Synchronisiert verfügbare Modelle vom Provider-Endpunkt (client.models.list()).
Antwort:
{"ok": true}Liest alle Entitätstypen.
Query-Parameter:
page(default1)limit(default20)type(filtertentity_type_slug)search(Mongo Textsuche auf Name/Keywords/Digest)
Antwort:
{
"items": [],
"total": 0,
"page": 1,
"limit": 20
}Erzeugt Entität.
Minimalbeispiel:
{
"name": "ACME GmbH",
"entity_type_slug": "company"
}Liest einzelne Entität.
Patch-Update; Felder aus Request werden direkt gesetzt.
Löscht Entität.
Antwort: 204 No Content
Queue't manuellen Skill-Run.
Body:
{
"skill_slug": "rss",
"config": {
"feed_urls": ["https://example.com/feed.xml"],
"max_items_per_fetch": 20
}
}Antwort:
{"queued": true}Queue't Komprimierung für die Entität.
Antwort:
{"queued": true}Paginiert Chunks zur Entität.
Query-Parameter:
page(default1)limit(default20)
Antwort:
{
"items": [],
"total": 0,
"page": 1,
"limit": 20
}Liest alle Model-Routing-Regeln.
Aktualisiert Routing-Regel für einen Task-Type, z. B.:
extractioncompressionschema_discoveryembeddingsummarizationprompt_optimizationrelationship_detectionentity_classification
Liest Skill-Definitionen aus Datenbank.
Liest ein Skill-Dokument.
404, falls nicht vorhanden.
SSE-Endpunkt (text/event-stream).
Events:
initaudit(Array neuer Audit-Einträge)
Antwort:
{"total": 1234}Antwort:
{
"period": "today",
"total_cost": 0,
"tokens": 0
}Multipart-Upload.
Form-Fields:
file(pflicht)entity_id(optional)processing_mode(optional, defaultauto)
Verhalten:
- Mit
entity_id: Datei wird bestehender Entität zugeordnet. - Ohne
entity_id: neuedocument-Entität wird erzeugt. - Danach wird
file-Skill-Job enqueued.
Antwort:
{
"ok": true,
"entity_id": "65f...",
"file": "1700000000000-my-file.txt"
}Typische Fehlercodes:
400bei fehlender Datei im Ingest404bei unbekannter Ressource500bei Infrastruktur- oder Laufzeitfehlern
Aktuell existiert kein zentrales Error-Envelope-Schema. Für produktive Integrationen wird ein einheitliches Fehlerformat empfohlen.