A API REST do Entity Enricher permite-lhe enriquecer entidades, gerir schemas e obter registos de forma programática. Todas as respostas são JSON. O progresso em tempo real usa Server-Sent Events (SSE).
Integre o Entity Enricher em três passos:
GET /api/schema/savedListar os schemas guardados ou gerar um a partir de dados de exemplo
POST /api/single/enrich/streamInicie o enriquecimento e obtenha um ID de tarefa para streaming SSE
GET /api/records/{id}Obter o registo de enriquecimento completo com saída estruturada
Todos os endpoints da API (exceto início de sessão/registo) requerem autenticação. Utilize o cabeçalho X-API-Key com uma chave de acesso da organização:
curl -H "X-API-Key: ent_your_key_here" \
https://your-instance.example.com/api/enrichment/optionsCrie chaves de API a partir da página de chaves de API ou através de POST /api/auth/api-keys. Consulte o guia de chaves de API para detalhes sobre os tipos de chave e as permissões.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/enrichment/options | Modelos, idiomas e estratégias disponíveis |
| POST | /api/single/enrich/stream | Inicie o enriquecimento de uma única entidade (devolve job_id para SSE) |
| POST | /api/single/enrich/sync | Enriquecimento único bloqueante para clientes não-SSE (Make.com, curl) |
| POST | /api/enrichment/batch/start | Iniciar enriquecimento em lote para várias entidades |
| POST | /api/enrichment/batch/fetch | Obter entidades a partir de um URL externo |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/llm/stream/{job_id} | Stream SSE para qualquer tarefa de LLM (enriquecimento, schema, fusão) |
| POST | /api/llm/cancel/{job_id} | Cancelar uma tarefa em execução ou pausada |
| POST | /api/llm/continue/{job_id} | Retomar uma tarefa em pausa (por ex., após incompatibilidade de classificação) |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/schema/saved | Listar todos os schemas guardados |
| POST | /api/schema/saved | Criar um novo schema |
| POST | /api/schema/generate/stream | Gerar schema a partir de dados de exemplo (SSE) |
| POST | /api/schema/saved/{id}/prompt/stream | Editar esquema com IA usando linguagem natural (SSE) |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/records | Listar registos com paginação e filtragem |
| GET | /api/records/{id} | Obtenha o detalhe completo do record com resultados estruturados |
| POST | /api/records/batch-delete | Eliminar vários registos (máx. 100) |
| POST | /api/fusion/merge | Combinar resultados de vários modelos |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /api/attachments | Carregar um ou mais ficheiros (multipart/form-data) |
| POST | /api/attachments/base64 | Carregar um ficheiro através de JSON base64 (para clientes não multipart) |
| GET | /api/attachments/{id}/download | Transferir os bytes do ficheiro original |
| DELETE | /api/attachments/{id} | Eliminar um anexo (limpeza pós-enriquecimento) |
As operações de enriquecimento, geração de schema e fusion utilizam Server-Sent Events para acompanhar o progresso em tempo real. Inicie um trabalho, obtenha um job_id e depois ligue-se ao stream SSE:
| Evento | Descrição |
|---|---|
| model_started | O processamento do modelo começa |
| expertise_completed | Um domínio de expertise concluído (com resultados parciais) |
| model_completed | O model terminou com o resultado, o record_id e o custo |
| fusion_started / fusion_completed | Eventos do ciclo de vida da fusão multi-modelo |
| entity_started / entity_completed | Eventos por entidade específicos do lote (incluem entity_index) |
| completed | Evento terminal - fechar a ligação |
| error | Ocorreu um erro ao nível da tarefa |
Um fluxo de trabalho completo que lista esquemas, inicia o enriquecimento, transmite resultados e obtém o registo 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))Inicie um enriquecimento em lote com dois modelos e transmita os 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'| Estado | Significado | Exemplo |
|---|---|---|
| 200 | Sucesso | Pedido concluído |
| 400 | Pedido inválido | Chave de model inválida ou campo em falta |
| 401 | Não autorizado | Chave de API em falta ou inválida |
| 403 | Proibido | Função insuficiente para este endpoint |
| 404 | Não encontrado | Registo, esquema ou tarefa não encontrado |
| 500 | Erro do servidor | Falha interna |
As respostas de erro incluem um campo detail com uma mensagem de erro legível. Os fluxos SSE emitem um tipo de evento error antes do evento terminal completed se algo falhar a meio do fluxo.
Os modelos são identificados por chaves compostas no formato provider_name::model_name. Use GET /api/enrichment/options para listar os modelos disponíveis e as respetivas chaves.
anthropic::claude-sonnet-4-5-20250514openai::gpt-4ogoogle::gemini-2.5-prodeepseek::deepseek-chatA aplicação inclui documentação de API interativa com exemplos de pedido/resposta. Requer autenticação de administrador para aceder: