Referencia de la API - Documentación de Entity Enricher

Referencia de la API

La API REST de Entity Enricher le permite enriquecer entidades, gestionar esquemas y recuperar registros de forma programática. Todas las respuestas son JSON. El progreso en tiempo real utiliza Server-Sent Events (SSE).

Inicio rápido

Integre Entity Enricher en tres pasos:

1

Obtener esquema

GET /api/schema/saved

Listar esquemas guardados o generar uno a partir de datos de muestra

2

Enriquecer

POST /api/single/enrich/stream

Inicie el enriquecimiento y obtenga un ID de trabajo para la transmisión SSE

3

Obtener resultado

GET /api/records/{id}

Recupera el record de enrichment completo con la salida estructurada

Autenticación

Todos los endpoints de la API (excepto login/register) requieren autenticación. Use la cabecera X-API-Key con una clave de acceso de la organización:

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

Cree claves de API desde la página Claves de API o mediante POST /api/auth/api-keys. Consulte la guía de claves de API para más detalles sobre los tipos de claves y los permisos.

Endpoints clave

Enriquecimiento

MétodoEndpointDescripción
GET/api/enrichment/optionsModelos, idiomas y estrategias disponibles
POST/api/single/enrich/streamInicie el enriquecimiento de una sola entidad (devuelve job_id para SSE)
POST/api/single/enrich/syncEnriquecimiento único bloqueante para clientes sin SSE (Make.com, curl)
POST/api/enrichment/batch/startInicie el enriquecimiento por lotes de varias entidades
POST/api/enrichment/batch/fetchObtener entidades desde una URL externa

Gestión de trabajos

MétodoEndpointDescripción
GET/api/llm/stream/{job_id}Flujo SSE para cualquier trabajo de LLM (enriquecimiento, esquema, fusión)
POST/api/llm/cancel/{job_id}Cancelar un trabajo en ejecución o en pausa
POST/api/llm/continue/{job_id}Reanudar un trabajo en pausa (p. ej., tras una discrepancia de classification)

Esquemas

MétodoEndpointDescripción
GET/api/schema/savedListar todos los esquemas guardados
POST/api/schema/savedCrear un nuevo esquema
POST/api/schema/generate/streamGenerar esquema a partir de datos de muestra (SSE)
POST/api/schema/saved/{id}/prompt/streamEdición de esquemas con IA mediante lenguaje natural (SSE)

Registros y fusión

MétodoEndpointDescripción
GET/api/recordsListar registros con paginación y filtrado
GET/api/records/{id}Obtenga el detalle completo del registro con salida estructurada
POST/api/records/batch-deleteEliminar varios registros (máx. 100)
POST/api/fusion/mergeFusionar resultados de varios modelos

Adjuntos

MétodoEndpointDescripción
POST/api/attachmentsSuba uno o más archivos (multipart/form-data)
POST/api/attachments/base64Suba un archivo mediante JSON base64 (para clientes que no admiten multipart)
GET/api/attachments/{id}/downloadDescargar los bytes del archivo original
DELETE/api/attachments/{id}Eliminar un adjunto (limpieza posterior al enriquecimiento)

Streaming SSE

Las operaciones de enriquecimiento, generación de esquemas y fusión utilizan Server-Sent Events para el progreso en tiempo real. Inicie un trabajo, obtenga un job_id y, a continuación, conéctese al flujo SSE:

Flujo de eventos SSE

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

Tipos de eventos clave

EventoDescripción
model_startedComienza el procesamiento del modelo
expertise_completedUn dominio de especialización finalizado (con resultados parciales)
model_completedEl modelo finalizó con result, record_id y coste
fusion_started / fusion_completedEventos del ciclo de vida de la fusión multimodelo
entity_started / entity_completedEventos por entidad específicos del lote (incluyen entity_index)
completedEvento terminal: cierra la conexión
errorSe produjo un error a nivel del trabajo

Ejemplo en Python

Un flujo de trabajo completo que enumera esquemas, inicia el enriquecimiento, transmite resultados y recupera el registro final:

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

Ejemplo con curl

Inicie un enriquecimiento por lotes con dos modelos y transmita los resultados:

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

Gestión de errores

EstadoSignificadoEjemplo
200CorrectoSolicitud completada
400Solicitud incorrectaClave de modelo no válida o campo faltante
401No autorizadoFalta la clave de API o no es válida
403ProhibidoRol insuficiente para este endpoint
404No encontradoRegistro, esquema o trabajo no encontrado
500Error del servidorFallo interno

Las respuestas de error incluyen un campo detail con un mensaje de error legible. Los flujos SSE emiten un tipo de evento error antes del evento terminal completed si algo falla a mitad de la transmisión.

Claves compuestas del modelo

Los modelos se identifican mediante claves compuestas con el formato provider_name::model_name. Utilice GET /api/enrichment/options para listar los modelos disponibles y sus claves.

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

Documentación interactiva de la API

La aplicación incluye documentación interactiva de la API con ejemplos de solicitud/respuesta. Requiere autenticación de administrador para acceder:

Próximos pasos