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).
Integreer Entity Enricher in drie stappen:
GET /api/schema/savedToon opgeslagen schema's of genereer er een op basis van voorbeelddata
POST /api/single/enrich/streamStart een enrichment, ontvang een job-ID voor SSE-streaming
GET /api/records/{id}Haal de volledige enrichment-record op met gestructureerde uitvoer
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/optionsMaak 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.
| Methode | Endpoint | Beschrijving |
|---|---|---|
| GET | /api/enrichment/options | Beschikbare models, talen en strategieën |
| POST | /api/single/enrich/stream | Start een enrichment van één entity (geeft job_id terug voor SSE) |
| POST | /api/single/enrich/sync | Blokkerende enkele verrijking voor niet-SSE-clients (Make.com, curl) |
| POST | /api/enrichment/batch/start | Start een batch-enrichment voor meerdere entities |
| POST | /api/enrichment/batch/fetch | Haal entiteiten op van een externe URL |
| Methode | Endpoint | Beschrijving |
|---|---|---|
| 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) |
| Methode | Endpoint | Beschrijving |
|---|---|---|
| GET | /api/schema/saved | Alle opgeslagen schema's weergeven |
| POST | /api/schema/saved | Een nieuw schema aanmaken |
| POST | /api/schema/generate/stream | Genereer schema uit voorbeelddata (SSE) |
| POST | /api/schema/saved/{id}/prompt/stream | Schema AI-bewerken met natuurlijke taal (SSE) |
| Methode | Endpoint | Beschrijving |
|---|---|---|
| GET | /api/records | Records weergeven met paginering en filtering |
| GET | /api/records/{id} | Krijg volledige recorddetails met gestructureerde uitvoer |
| POST | /api/records/batch-delete | Meerdere records verwijderen (max. 100) |
| POST | /api/fusion/merge | Resultaten van meerdere modellen samenvoegen |
| Methode | Endpoint | Beschrijving |
|---|---|---|
| POST | /api/attachments | Eén of meer bestanden uploaden (multipart/form-data) |
| POST | /api/attachments/base64 | Eén bestand uploaden via JSON base64 (voor niet-multipart clients) |
| GET | /api/attachments/{id}/download | Download de originele bestandsbytes |
| DELETE | /api/attachments/{id} | Een bijlage verwijderen (opschoning na verrijking) |
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:
| Gebeurtenis | Beschrijving |
|---|---|
| model_started | Modelverwerking begint |
| expertise_completed | Eén expertisedomein voltooid (met gedeeltelijke resultaten) |
| model_completed | Model voltooid met result, record_id en cost |
| fusion_started / fusion_completed | Levenscyclusgebeurtenissen van multimodelfusie |
| entity_started / entity_completed | Batch-specifieke gebeurtenissen per entiteit (bevatten entity_index) |
| completed | Terminal-event - sluit de verbinding |
| error | Er is een fout op jobniveau opgetreden |
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))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'| Status | Betekenis | Voorbeeld |
|---|---|---|
| 200 | Gelukt | Aanvraag voltooid |
| 400 | Ongeldig verzoek | Ongeldige modelsleutel of ontbrekend veld |
| 401 | Niet geautoriseerd | Ontbrekende of ongeldige API-sleutel |
| 403 | Verboden | Onvoldoende rol voor dit endpoint |
| 404 | Niet gevonden | Record, schema of taak niet gevonden |
| 500 | Serverfout | Interne 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.
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::claude-sonnet-4-5-20250514openai::gpt-4ogoogle::gemini-2.5-prodeepseek::deepseek-chatDe applicatie bevat interactieve API-documentatie met voorbeelden van aanvragen en antwoorden. Vereist admin-authenticatie voor toegang: