API-referentie - Entity Enricher-documentatie

API-referentie

Met de Entity Enricher REST API kun je entiteiten verrijken, schema's beheren en records programmatisch ophalen. Alle antwoorden zijn JSON. Realtime voortgang gebruikt Server-Sent Events (SSE).

Snel aan de slag

Integreer Entity Enricher in drie stappen:

1

Schema ophalen

GET /api/schema/saved

Toon opgeslagen schema's of genereer er een op basis van voorbeelddata

2

Verrijken

POST /api/single/enrich/stream

Start een enrichment, ontvang een job-ID voor SSE-streaming

3

Resultaat ophalen

GET /api/records/{id}

Haal de volledige enrichment-record op met gestructureerde uitvoer

Authenticatie

Alle API-eindpunten (behalve inloggen/registreren) vereisen authenticatie. Gebruik de X-API-Key-header met een toegangssleutel van de organisatie:

curl -H "X-API-Key: ent_your_key_here" \
     https://your-instance.example.com/api/enrichment/options

Maak API-sleutels aan op de pagina API-sleutels of via POST /api/auth/api-keys. Zie de gids voor API-sleutels voor details over sleuteltypes en permissies.

Belangrijkste endpoints

Verrijking

MethodeEndpointBeschrijving
GET/api/enrichment/optionsBeschikbare models, talen en strategieën
POST/api/single/enrich/streamStart een enrichment van één entity (geeft job_id terug voor SSE)
POST/api/single/enrich/syncBlokkerende enkele verrijking voor niet-SSE-clients (Make.com, curl)
POST/api/enrichment/batch/startStart een batch-enrichment voor meerdere entities
POST/api/enrichment/batch/fetchHaal entiteiten op van een externe URL

Jobbeheer

MethodeEndpointBeschrijving
GET/api/llm/stream/{job_id}SSE-stream voor elke LLM-taak (enrichment, schema, fusion)
POST/api/llm/cancel/{job_id}Een lopende of gepauzeerde taak annuleren
POST/api/llm/continue/{job_id}Hervat een gepauzeerde taak (bijv. na een classification-mismatch)

Schema's

MethodeEndpointBeschrijving
GET/api/schema/savedAlle opgeslagen schema's weergeven
POST/api/schema/savedEen nieuw schema aanmaken
POST/api/schema/generate/streamGenereer schema uit voorbeelddata (SSE)
POST/api/schema/saved/{id}/prompt/streamSchema AI-bewerken met natuurlijke taal (SSE)

Records & Fusie

MethodeEndpointBeschrijving
GET/api/recordsRecords weergeven met paginering en filtering
GET/api/records/{id}Krijg volledige recorddetails met gestructureerde uitvoer
POST/api/records/batch-deleteMeerdere records verwijderen (max. 100)
POST/api/fusion/mergeResultaten van meerdere modellen samenvoegen

Bijlagen

MethodeEndpointBeschrijving
POST/api/attachmentsEén of meer bestanden uploaden (multipart/form-data)
POST/api/attachments/base64Eén bestand uploaden via JSON base64 (voor niet-multipart clients)
GET/api/attachments/{id}/downloadDownload de originele bestandsbytes
DELETE/api/attachments/{id}Een bijlage verwijderen (opschoning na verrijking)

SSE-streaming

Verrijking, schemageneratie en fusiebewerkingen gebruiken Server-Sent Events voor realtime voortgang. Start een taak, ontvang een job_id en maak vervolgens verbinding met de SSE-stream:

SSE-gebeurtenisstroom

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"}

Belangrijkste gebeurtenistypes

GebeurtenisBeschrijving
model_startedModelverwerking begint
expertise_completedEén expertisedomein voltooid (met gedeeltelijke resultaten)
model_completedModel voltooid met result, record_id en cost
fusion_started / fusion_completedLevenscyclusgebeurtenissen van multimodelfusie
entity_started / entity_completedBatch-specifieke gebeurtenissen per entiteit (bevatten entity_index)
completedTerminal-event - sluit de verbinding
errorEr is een fout op jobniveau opgetreden

Python-voorbeeld

Een complete workflow die schema's opsomt, verrijking start, resultaten streamt en het uiteindelijke record ophaalt:

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

Start een batch-enrichment met twee modellen en stream de resultaten:

# 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'

Foutafhandeling

StatusBetekenisVoorbeeld
200GeluktAanvraag voltooid
400Ongeldig verzoekOngeldige modelsleutel of ontbrekend veld
401Niet geautoriseerdOntbrekende of ongeldige API-sleutel
403VerbodenOnvoldoende rol voor dit endpoint
404Niet gevondenRecord, schema of taak niet gevonden
500ServerfoutInterne fout

Foutresponsen bevatten een detail-veld met een leesbare foutmelding. SSE-streams zenden een error-eventtype uit vóór het afsluitende completed-event als er halverwege de stream iets misgaat.

Samengestelde sleutels van model

Modellen worden geïdentificeerd door samengestelde sleutels in de indeling provider_name::model_name. Gebruik GET /api/enrichment/options om beschikbare modellen en hun sleutels op te sommen.

Anthropic
anthropic::claude-sonnet-4-5-20250514
OpenAI
openai::gpt-4o
Google
google::gemini-2.5-pro
DeepSeek
deepseek::deepseek-chat

Interactieve API-documentatie

De applicatie bevat interactieve API-documentatie met voorbeelden van aanvragen en antwoorden. Vereist admin-authenticatie voor toegang:

Volgende stappen