API-Referenz - Entity Enricher-Dokumentation

API-Referenz

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).

Schnellstart

Integrieren Sie Entity Enricher in drei Schritten:

1

Schema abrufen

GET /api/schema/saved

Gespeicherte Schemas auflisten oder aus Beispieldaten eines erzeugen

2

Anreichern

POST /api/single/enrich/stream

Anreicherung starten und eine Job-ID für SSE-Streaming erhalten

3

Ergebnis abrufen

GET /api/records/{id}

Den vollständigen Enrichment-Record mit strukturierter Ausgabe abrufen

Authentifizierung

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/options

Erstellen 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.

Wichtige Endpunkte

Anreicherung

MethodeEndpunktBeschreibung
GET/api/enrichment/optionsVerfügbare Modelle, Sprachen und Strategien
POST/api/single/enrich/streamAnreicherung einer einzelnen Entität starten (gibt job_id für SSE zurück)
POST/api/single/enrich/syncBlockierende Einzelanreicherung für Nicht-SSE-Clients (Make.com, curl)
POST/api/enrichment/batch/startBatch-Anreicherung für mehrere Entitäten starten
POST/api/enrichment/batch/fetchEntitäten von einer externen URL abrufen

Job-Verwaltung

MethodeEndpunktBeschreibung
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)

Schemas

MethodeEndpunktBeschreibung
GET/api/schema/savedAlle gespeicherten Schemas auflisten
POST/api/schema/savedEin neues Schema erstellen
POST/api/schema/generate/streamSchema aus Beispieldaten generieren (SSE)
POST/api/schema/saved/{id}/prompt/streamSchema per KI mit natürlicher Sprache bearbeiten (SSE)

Datensätze & Fusion

MethodeEndpunktBeschreibung
GET/api/recordsDatensätze mit Paginierung und Filterung auflisten
GET/api/records/{id}Vollständige Datensatzdetails mit strukturierter Ausgabe abrufen
POST/api/records/batch-deleteMehrere Datensätze löschen (max. 100)
POST/api/fusion/mergeErgebnisse aus mehreren Modellen zusammenführen

Anhänge

MethodeEndpunktBeschreibung
POST/api/attachmentsEine oder mehrere Dateien hochladen (multipart/form-data)
POST/api/attachments/base64Eine Datei per JSON-base64 hochladen (für Nicht-Multipart-Clients)
GET/api/attachments/{id}/downloadDie ursprünglichen Datei-Bytes herunterladen
DELETE/api/attachments/{id}Einen Anhang löschen (Bereinigung nach der Anreicherung)

SSE-Streaming

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:

SSE-Ereignisfluss

data: {"type":"model_started","model":"anthropic::claude-sonnet-4-5"}
data: {"type":"expertise_completed","expertise_key":"financial","partial_result":{...}}
data: {"type":"model_completed","success":true,"result":{...},"record_id":"uuid"}
data: {"type":"completed"}

Wichtige Ereignistypen

EreignisBeschreibung
model_startedModellverarbeitung beginnt
expertise_completedEin Fachbereich abgeschlossen (mit Teilergebnissen)
model_completedModell abgeschlossen mit Ergebnis, record_id und Kosten
fusion_started / fusion_completedLifecycle-Ereignisse der Multi-Modell-Fusion
entity_started / entity_completedBatch-spezifische Ereignisse pro Entität (enthalten entity_index)
completedTerminales Ereignis – Verbindung schließen
errorFehler auf Job-Ebene aufgetreten

Python-Beispiel

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))

curl-Beispiel

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'

Fehlerbehandlung

StatusBedeutungBeispiel
200ErfolgAnfrage abgeschlossen
400Ungültige AnfrageUngültiger Modellschlüssel oder fehlendes Feld
401Nicht autorisiertFehlender oder ungültiger API-Schlüssel
403VerbotenUnzureichende Rolle für diesen Endpunkt
404Nicht gefundenDatensatz, Schema oder Job nicht gefunden
500ServerfehlerInterner 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.

Zusammengesetzte Modellschlüssel

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
anthropic::claude-sonnet-4-5-20250514
OpenAI
openai::gpt-4o
Google
google::gemini-2.5-pro
DeepSeek
deepseek::deepseek-chat

Interaktive API-Dokumentation

Die Anwendung enthält eine interaktive API-Dokumentation mit Beispielen für Anfragen/Antworten. Für den Zugriff ist eine Admin-Authentifizierung erforderlich:

Nächste Schritte