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)
POST/api/schema/analyze-sampleAnalysiert Beispiel-JSON auf mehrdeutige Eigenschaftsnamen – solche, die im Kontext ihres übergeordneten Objekts mehrere oder gar keine Lesarten zulassen – sowie auf verknüpfte Einträge, die Entitätsfakten mit Fakten pro übergeordnetem Objekt vermischen (zustandsloser Bericht, Umbenennungsvorschläge)
POST/api/schema/saved/{id}/analyzeFührt die Prüfungen auf Mehrdeutigkeit und Identitätsbezug für ein gespeichertes Schema aus und schreibt deren Anmerkungen (eine neu formulierte Beschreibung pro mehrdeutigem Namen)
POST/api/schema/scoping-splitEine Identitäts-Scoping-Aufteilung auf einen Beispielsatz anwenden – die eigenen Fakten der verwandten Entität wandern in ein eigenes Unterobjekt (deterministisch, kostenlos, nichts wird gespeichert)
DELETE/api/schema/saved/{id}/enrichment-dataAnreicherungsdaten eines Schemas löschen – Datensätze und Entitätsstatus – unter Beibehaltung des Schemas (owner+)

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)

Schema-Veröffentlichung & Beispiele

MethodeEndpunktBeschreibung
POST/api/schema/saved/{id}/publishVeröffentlichen Sie die Arbeitskopie eines verknüpften Schemas als den Vertrag, gegen den die Anreicherung und ihre Datenbanken laufen. Strukturelle Änderungen werden erst wirksam, wenn dies ausgeführt wird
POST/api/schema/sample/generate/stream1..N JSON-Beispielobjekte eines Entitätstyps erzeugen (liefert job_id für SSE)

Database Sync

MethodeEndpunktBeschreibung
GET/api/databasesDie Datenbankregistrierungen der Organisation mit ausstehenden Delta-Anzahlen auflisten
POST/api/databasesEine Datenbank für ein Schema registrieren
GET/api/databases/{id}/snapshotDen vollständigen Stand als .sql-Snapshot herunterladen — von null aufsetzen
GET/api/databases/{id}/changesDas nächste FIFO-Fenster an Deltas abrufen; per Claim für die bestätigte Zustellung reservieren
POST/api/databases/{id}/ackAngewendete Deltas bis zu einer ID bestätigen — gibt die Lease frei
POST/api/databases/{id}/clear-ackedZugestellte und bestätigte Deltas bereinigen

Semantische Konzepte

MethodeEndpunktBeschreibung
GET/api/semantic-conceptsDas Konzeptvokabular durchsuchen, gefiltert nach Typ und bewertet gegenüber einem Referenzkonzept
GET/api/semantic-concepts/typesKonzepttypen mit ihren Anzahlen und Embedding-Modellen auflisten
POST/api/semantic-concepts/probeDie Auflösungskette für einen Text im Testlauf durchspielen — was würde übereinstimmen und wie genau
GET/api/semantic-concepts/duplicatesKonzeptpaare knapp unterhalb der Zusammenführungsschwelle
POST/api/semantic-concepts/importEine CSV mit Identitätstexten im Batch auflösen (das Erzeugen erfordert Eigentümerrechte)
GET/api/semantic-concepts/exportVokabular als CSV exportieren
POST/api/semantic-concepts/delete-impactWas das Löschen von Konzepten beeinflussen würde – Nutzungszahlen und Kosten der Resynchronisierung
GET/api/semantic-concepts/migration/statusStatus der Migration des Embedding-Modells, sofern eine läuft

Benchmarks & Abrechnung

MethodeEndpunktBeschreibung
GET/api/benchmarksBenchmark-Szenarien auflisten
POST/api/benchmarks/{id}/runEin Szenario über mehrere Modelle hinweg ausführen – jedes Ergebnis wird automatisch bewertet
POST/api/benchmarks/{id}/referenceDie Goldreferenz speichern und prüfen, anhand derer ein Szenario bewertet wird
GET/api/billing/balanceAktuelles Credit-Guthaben
GET/api/billing/transactionsVerlauf der Credit-Transaktionen, einschließlich Ausgaben für Embeddings
GET/api/billing/plansVerfügbare Tarife und ihre Limits

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
402Zahlung erforderlichTariflimit oder Credit-Guthaben – Kontingent erschöpft, zu viele Modelle oder Sprachen, eine Funktion außerhalb Ihres Tarifs. Der Body enthält neben detail einen maschinenlesbaren Code.
403VerbotenUnzureichende Rolle für diesen Endpunkt
404Nicht gefundenDatensatz, Schema oder Job nicht gefunden
500ServerfehlerInterner Fehler

Fehlerantworten enthalten ein Feld detail mit einer lesbaren Fehlermeldung. Tarif- und Abrechnungsfehler (402) liefern zusätzlich einen strukturierten Body mit einem stabilen codeprompt_limit_reached, insufficient_credits, model_limit_exceeded, benchmarks_not_in_plan — sowie die betreffenden Grenz- und Nutzungswerte, sodass ein Client anhand der Ursache verzweigen kann, statt Fließtext zu parsen. SSE-Streams senden einen Ereignistyp error vor dem abschließenden Ereignis completed, falls mitten im Stream 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.

Der Modellparameter ist bei Anreicherung, Schemagenerierung und Beispielgenerierung optional: Lassen Sie ihn weg (oder übergeben Sie das Literal "auto"), und der Server wählt das Standardmodell Ihrer Organisation — die angeheftete aufgabenspezifische Vorgabe, falls in den Einstellungen festgelegt, andernfalls das Modell mit der besten Gesamtbewertung aus Ihren Benchmarks als Bewertungsquelle. Das Feld default_models der Optionsantwort zeigt, worauf Auto derzeit aufgelöst wird, und ein model_auto_selected-SSE-Ereignis meldet die Auswahl bei jedem Auftrag. Auto wird immer zu einem einzigen Modell aufgelöst (es löst niemals Fusion aus); für reproduzierbare Pipelines übergeben Sie weiterhin explizite Modelle.

Anfrageoptionen schränken die automatische Auswahl ein: Mit enable_web_search: true werden nur websuchfähige Modelle berücksichtigt (das Feld default_models_web_search der Optionsantwort zeigt diese Auswahl in der Vorschau), und binäre Anhänge erfordern ein Modell, das sie lesen kann (PDF, Vision, Audio). Wenn kein geeignetes Modell die Einschränkungen erfüllt, schlägt die Anfrage mit HTTP 400 no_capable_default_model fehl, anstatt die Option stillschweigend zu verwerfen.

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