Die Entity Enricher REST-API ermöglicht es Ihnen, Entitäten anzureichern, Schemas zu verwalten und Datensätze programmatisch abzurufen. Alle Antworten sind JSON. Der Echtzeit-Fortschritt nutzt Server-Sent Events (SSE).
Integrieren Sie Entity Enricher in drei Schritten:
GET /api/schema/savedGespeicherte Schemas auflisten oder aus Beispieldaten eines erzeugen
POST /api/single/enrich/streamAnreicherung starten und eine Job-ID für SSE-Streaming erhalten
GET /api/records/{id}Den vollständigen Enrichment-Record mit strukturierter Ausgabe abrufen
Alle API-Endpunkte (außer Login/Registrierung) erfordern eine Authentifizierung. Verwenden Sie den X-API-Key-Header mit einem Zugriffsschlüssel der Organisation:
curl -H "X-API-Key: ent_your_key_here" \
https://your-instance.example.com/api/enrichment/optionsErstellen Sie API-Schlüssel über die Seite „API-Schlüssel“ oder via POST /api/auth/api-keys. Siehe den API-Schlüssel-Leitfaden für Details zu Schlüsseltypen und Berechtigungen.
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/enrichment/options | Verfügbare Modelle, Sprachen und Strategien |
| POST | /api/single/enrich/stream | Anreicherung einer einzelnen Entität starten (gibt job_id für SSE zurück) |
| POST | /api/single/enrich/sync | Blockierende Einzelanreicherung für Nicht-SSE-Clients (Make.com, curl) |
| POST | /api/enrichment/batch/start | Batch-Anreicherung für mehrere Entitäten starten |
| POST | /api/enrichment/batch/fetch | Entitäten von einer externen URL abrufen |
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/llm/stream/{job_id} | SSE-Stream für jeden LLM-Job (Anreicherung, Schema, Fusion) |
| POST | /api/llm/cancel/{job_id} | Einen laufenden oder pausierten Job abbrechen |
| POST | /api/llm/continue/{job_id} | Einen pausierten Job fortsetzen (z. B. nach Klassifizierungs-Abweichung) |
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/schema/saved | Alle gespeicherten Schemas auflisten |
| POST | /api/schema/saved | Ein neues Schema erstellen |
| POST | /api/schema/generate/stream | Schema aus Beispieldaten generieren (SSE) |
| POST | /api/schema/saved/{id}/prompt/stream | Schema per KI mit natürlicher Sprache bearbeiten (SSE) |
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/records | Datensätze mit Paginierung und Filterung auflisten |
| GET | /api/records/{id} | Vollständige Datensatzdetails mit strukturierter Ausgabe abrufen |
| POST | /api/records/batch-delete | Mehrere Datensätze löschen (max. 100) |
| POST | /api/fusion/merge | Ergebnisse aus mehreren Modellen zusammenführen |
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| POST | /api/attachments | Eine oder mehrere Dateien hochladen (multipart/form-data) |
| POST | /api/attachments/base64 | Eine Datei per JSON-base64 hochladen (für Nicht-Multipart-Clients) |
| GET | /api/attachments/{id}/download | Die ursprünglichen Datei-Bytes herunterladen |
| DELETE | /api/attachments/{id} | Einen Anhang löschen (Bereinigung nach der Anreicherung) |
Anreicherung, Schema-Generierung und Fusion-Operationen nutzen Server-Sent Events für Echtzeit-Fortschritt. Starten Sie einen Job, erhalten Sie eine job_id und verbinden Sie sich dann mit dem SSE-Stream:
| Ereignis | Beschreibung |
|---|---|
| model_started | Modellverarbeitung beginnt |
| expertise_completed | Ein Fachbereich abgeschlossen (mit Teilergebnissen) |
| model_completed | Modell abgeschlossen mit Ergebnis, record_id und Kosten |
| fusion_started / fusion_completed | Lifecycle-Ereignisse der Multi-Modell-Fusion |
| entity_started / entity_completed | Batch-spezifische Ereignisse pro Entität (enthalten entity_index) |
| completed | Terminales Ereignis – Verbindung schließen |
| error | Fehler auf Job-Ebene aufgetreten |
Ein vollständiger Workflow, der Schemas auflistet, eine Anreicherung startet, Ergebnisse streamt und den endgültigen Datensatz abruft:
import httpx
import json
BASE = "https://your-instance.example.com"
KEY = "ent_your_api_key"
HEADERS = {"X-API-Key": KEY, "Content-Type": "application/json"}
# 1. List saved schemas
schemas = httpx.get(f"{BASE}/api/schema/saved", headers=HEADERS).json()
schema_id = schemas["schemas"][0]["id"]
# 2. Start enrichment
resp = httpx.post(f"{BASE}/api/single/enrich/stream", headers=HEADERS, json={
"entity_data": {"name": "Moderna Inc", "country": "US"},
"schema_id": schema_id,
"models": ["anthropic::claude-sonnet-4-5-20250514"],
"strategy": "multi_expertise",
})
job_id = resp.json()["job_id"]
# 3. Stream SSE events
record_id = None
with httpx.stream("GET", f"{BASE}/api/llm/stream/{job_id}", headers=HEADERS) as stream:
for line in stream.iter_lines():
if not line.startswith("data: "):
continue
event = json.loads(line[6:])
if event["type"] == "model_completed" and event.get("record_id"):
record_id = event["record_id"]
elif event["type"] == "completed":
break
# 4. Retrieve the enrichment record
if record_id:
record = httpx.get(f"{BASE}/api/records/{record_id}", headers=HEADERS).json()
print(json.dumps(record["structured_output"], indent=2))Starten Sie eine Batch-Anreicherung mit zwei Modellen und streamen Sie die Ergebnisse:
# Start batch enrichment
JOB_ID=$(curl -s -X POST \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
"$BASE/api/enrichment/batch/start" \
-d '{
"entities": [
{"name": "Pfizer Inc", "country": "US"},
{"name": "Roche", "country": "CH"}
],
"schema_id": "your-schema-uuid",
"models": ["anthropic::claude-sonnet-4-5-20250514", "openai::gpt-4o"],
"strategy": "multi_expertise",
"arbitration_model": "anthropic::claude-sonnet-4-5-20250514"
}' | jq -r '.job_id')
# Stream events
curl -N -H "X-API-Key: $KEY" "$BASE/api/llm/stream/$JOB_ID"
# List resulting records
curl -s -H "X-API-Key: $KEY" \
"$BASE/api/records?type=enrichment&page_size=10" | jq '.records'| Status | Bedeutung | Beispiel |
|---|---|---|
| 200 | Erfolg | Anfrage abgeschlossen |
| 400 | Ungültige Anfrage | Ungültiger Modellschlüssel oder fehlendes Feld |
| 401 | Nicht autorisiert | Fehlender oder ungültiger API-Schlüssel |
| 403 | Verboten | Unzureichende Rolle für diesen Endpunkt |
| 404 | Nicht gefunden | Datensatz, Schema oder Job nicht gefunden |
| 500 | Serverfehler | Interner Fehler |
Fehlerantworten enthalten ein detail-Feld mit einer menschenlesbaren Fehlermeldung. SSE-Streams geben einen error-Ereignistyp aus, bevor das abschließende completed-Ereignis erfolgt, falls während des Streams etwas fehlschlägt.
Modelle werden durch zusammengesetzte Schlüssel im Format provider_name::model_name identifiziert. Verwenden Sie GET /api/enrichment/options, um verfügbare Modelle und ihre Schlüssel aufzulisten.
anthropic::claude-sonnet-4-5-20250514openai::gpt-4ogoogle::gemini-2.5-prodeepseek::deepseek-chatDie Anwendung enthält eine interaktive API-Dokumentation mit Beispielen für Anfragen/Antworten. Für den Zugriff ist eine Admin-Authentifizierung erforderlich: