Entity Enricher REST APIを使用すると、エンティティのエンリッチ、スキーマの管理、レコードのプログラムによる取得ができます。すべてのレスポンスはJSONです。リアルタイムの進捗にはServer-Sent Events(SSE)を使用します。
Entity Enricher を 3 つのステップで連携します:
GET /api/schema/saved保存済みのスキーマを一覧表示するか、サンプルデータから生成します
POST /api/single/enrich/streamエンリッチメントを開始し、SSEストリーミング用のジョブIDを取得します
GET /api/records/{id}構造化出力を含む完全なenrichment recordを取得します
すべてのAPIエンドポイント (ログイン/登録を除く) では認証が必要です。組織のアクセスキーとともにX-API-Keyヘッダーを使用してください:
curl -H "X-API-Key: ent_your_key_here" \
https://your-instance.example.com/api/enrichment/optionsAPI keyはAPI Keysページから、またはPOST /api/auth/api-keysを使って作成します。キーの種類と権限の詳細はAPI Keysガイドを参照してください。
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/enrichment/options | 利用可能なモデル、言語、ストラテジー |
| POST | /api/single/enrich/stream | 単一エンティティのエンリッチメントを開始します(SSE用のjob_idを返します) |
| POST | /api/single/enrich/sync | SSE非対応クライアント(Make.com、curl)向けのブロッキング単一エンリッチメント |
| POST | /api/enrichment/batch/start | 複数のエンティティのバッチエンリッチメントを開始します |
| POST | /api/enrichment/batch/fetch | 外部URLからentityを取得します |
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/llm/stream/{job_id} | あらゆるLLMジョブ(enrichment、schema、fusion)向けのSSEストリーム |
| POST | /api/llm/cancel/{job_id} | 実行中または一時停止中のジョブをキャンセルします |
| POST | /api/llm/continue/{job_id} | 一時停止したジョブを再開します(例:classificationの不一致後) |
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/schema/saved | 保存済みのスキーマをすべて一覧表示します |
| POST | /api/schema/saved | 新しいschemaを作成 |
| POST | /api/schema/generate/stream | サンプルデータからスキーマを生成(SSE) |
| POST | /api/schema/saved/{id}/prompt/stream | 自然言語でスキーマをAI編集 (SSE) |
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/records | ページネーションとフィルタリングでレコードを一覧表示します |
| GET | /api/records/{id} | 構造化出力でレコードの詳細をすべて取得します |
| POST | /api/records/batch-delete | 複数のrecordを削除(最大100件) |
| POST | /api/fusion/merge | 複数のmodelの結果をマージ |
| メソッド | エンドポイント | 説明 |
|---|---|---|
| POST | /api/attachments | 1つ以上のファイルをアップロードします(multipart/form-data) |
| POST | /api/attachments/base64 | JSON base64 で 1 つのファイルをアップロード(非 multipart クライアント向け) |
| GET | /api/attachments/{id}/download | 元のファイルのバイトをダウンロード |
| DELETE | /api/attachments/{id} | attachmentを削除(enrichment後のクリーンアップ) |
エンリッチメント、スキーマ生成、フュージョン操作では、リアルタイムの進捗にServer-Sent Eventsを使用します。ジョブを開始し、job_idを取得してから、SSEストリームに接続します:
| イベント | 説明 |
|---|---|
| model_started | モデル処理を開始します |
| expertise_completed | 1つの専門領域が完了しました(部分的な結果あり) |
| model_completed | モデルが result、record_id、cost とともに完了しました |
| fusion_started / fusion_completed | マルチモデルフュージョンのライフサイクルイベント |
| entity_started / entity_completed | バッチ固有のentityごとのイベント(entity_index を含む) |
| completed | 終端イベント - 接続を閉じます |
| error | ジョブレベルのエラーが発生しました |
スキーマの一覧取得、エンリッチメントの開始、結果のストリーミング、最終レコードの取得までを行う完全なワークフロー:
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))2つのモデルでバッチエンリッチメントを開始し、結果をストリーミングします:
# 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'| ステータス | 意味 | 例 |
|---|---|---|
| 200 | 成功 | リクエストが完了しました |
| 400 | 不正なリクエスト | モデルキーが無効か、フィールドが不足しています |
| 401 | 権限がありません | API キーがないか無効です |
| 403 | 禁止 | このエンドポイントには権限が不足しています |
| 404 | 見つかりません | レコード、スキーマ、またはジョブが見つかりません |
| 500 | サーバーエラー | 内部エラー |
エラーレスポンスには、人間が読めるエラーメッセージを含むdetailフィールドが含まれます。ストリームの途中で問題が発生した場合、SSE ストリームは終端のcompletedイベントの前にerrorイベントタイプを発行します。
モデルは provider_name::model_name 形式の複合キーで識別されます。利用可能なモデルとそのキーを一覧表示するには GET /api/enrichment/options を使用してください。
anthropic::claude-sonnet-4-5-20250514openai::gpt-4ogoogle::gemini-2.5-prodeepseek::deepseek-chatアプリケーションには、リクエスト/レスポンスの例を含むインタラクティブなAPIドキュメントが含まれています。アクセスには管理者認証が必要です: