APIリファレンス - Entity Enricher ドキュメント

APIリファレンス

Entity Enricher REST APIを使用すると、エンティティのエンリッチ、スキーマの管理、レコードのプログラムによる取得ができます。すべてのレスポンスはJSONです。リアルタイムの進捗にはServer-Sent Events(SSE)を使用します。

クイックスタート

Entity Enricher を 3 つのステップで連携します:

1

スキーマを取得

GET /api/schema/saved

保存済みのスキーマを一覧表示するか、サンプルデータから生成します

2

enrichment を実行

POST /api/single/enrich/stream

エンリッチメントを開始し、SSEストリーミング用のジョブIDを取得します

3

結果を取得

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/options

API 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/syncSSE非対応クライアント(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)
POST/api/schema/analyze-sampleサンプルJSONを解析し、曖昧なプロパティ名(親の文脈で複数の解釈が成り立つもの、またはまったく成り立たないもの)と、エンティティの情報と親ごとの情報が混在する関連項目を検出します(ステートレスなレポート、リネーム案を提示)
POST/api/schema/saved/{id}/analyze保存済みスキーマに対して曖昧性チェックとアイデンティティスコープチェックを実行し、その注釈(曖昧な名前ごとに書き直した説明)を書き込みます
POST/api/schema/scoping-splitサンプルセットにアイデンティティスコープの分割を 1 件適用します — 関連エンティティ自身の事実が専用のサブオブジェクトに移動します(決定的、無料、保存なし)
DELETE/api/schema/saved/{id}/enrichment-dataスキーマのエンリッチメントデータ(レコードとエンティティの状態)を消去し、スキーマは保持します(owner+)

レコードとフュージョン

メソッドエンドポイント説明
GET/api/recordsページネーションとフィルタリングでレコードを一覧表示します
GET/api/records/{id}構造化出力でレコードの詳細をすべて取得します
POST/api/records/batch-delete複数のrecordを削除(最大100件)
POST/api/fusion/merge複数のmodelの結果をマージ

添付ファイル

メソッドエンドポイント説明
POST/api/attachments1つ以上のファイルをアップロードします(multipart/form-data)
POST/api/attachments/base64JSON base64 で 1 つのファイルをアップロード(非 multipart クライアント向け)
GET/api/attachments/{id}/download元のファイルのバイトをダウンロード
DELETE/api/attachments/{id}attachmentを削除(enrichment後のクリーンアップ)

スキーマの公開とサンプル

メソッドエンドポイント説明
POST/api/schema/saved/{id}/publishリンクされたスキーマの作業コピーを、エンリッチメントとそのデータベースが従う契約として公開します。この操作を実行するまで、構造的な変更は反映されません
POST/api/schema/sample/generate/stream1 つのエンティティタイプのサンプル JSON オブジェクトを 1〜N 件生成します(SSE 用の job_id を返します)

Database Sync

メソッドエンドポイント説明
GET/api/databases組織のデータベース登録を、保留中の差分件数とともに一覧表示します
POST/api/databasesスキーマにデータベースを登録します
GET/api/databases/{id}/snapshot全状態を .sql スナップショットとしてダウンロード — ゼロから初期構築できます
GET/api/databases/{id}/changes次の FIFO ウィンドウのデルタを取得します。確認応答付き配信のためにリースする場合はクレームします
POST/api/databases/{id}/ack指定した ID までの適用済みデルタを確認応答します — リースを解放します
POST/api/databases/{id}/clear-acked配信済みかつ確認済みの差分を削除します

セマンティックコンセプト

メソッドエンドポイント説明
GET/api/semantic-conceptsコンセプトの語彙を参照します。タイプで絞り込み、参照コンセプトに対してスコア付けされます
GET/api/semantic-concepts/typesコンセプトタイプを、件数と埋め込みモデルとともに一覧表示します
POST/api/semantic-concepts/probeテキストに対して解決ラダーをドライラン実行 — 何にどの程度一致するかを確認できます
GET/api/semantic-concepts/duplicatesマージのしきい値をわずかに下回るコンセプトのペア
POST/api/semantic-concepts/importアイデンティティテキストの CSV をバッチ解決します(新規発行にはオーナー権限が必要です)
GET/api/semantic-concepts/export語彙を CSV としてエクスポート
POST/api/semantic-concepts/delete-impactコンセプトを削除した場合の影響 — 使用数と再同期のコスト
GET/api/semantic-concepts/migration/status埋め込みモデル移行の状態(実行中の場合)

ベンチマークと請求

メソッドエンドポイント説明
GET/api/benchmarksベンチマークシナリオの一覧を取得します
POST/api/benchmarks/{id}/run複数のモデルでシナリオを実行 — 各結果は自動的にスコアリングされます
POST/api/benchmarks/{id}/referenceシナリオの採点基準となるゴールドリファレンスを保存して検証します
GET/api/billing/balance現在のクレジット残高
GET/api/billing/transactions埋め込み処理の消費を含むクレジット取引履歴
GET/api/billing/plans利用可能なプランと上限

SSEストリーミング

エンリッチメント、スキーマ生成、フュージョン操作では、リアルタイムの進捗にServer-Sent Eventsを使用します。ジョブを開始し、job_idを取得してから、SSEストリームに接続します:

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

主なイベントタイプ

イベント説明
model_startedモデル処理を開始します
expertise_completed1つの専門領域が完了しました(部分的な結果あり)
model_completedモデルが result、record_id、cost とともに完了しました
fusion_started / fusion_completedマルチモデルフュージョンのライフサイクルイベント
entity_started / entity_completedバッチ固有のentityごとのイベント(entity_index を含む)
completed終端イベント - 接続を閉じます
errorジョブレベルのエラーが発生しました

Python の例

スキーマの一覧取得、エンリッチメントの開始、結果のストリーミング、最終レコードの取得までを行う完全なワークフロー:

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 の例

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 キーがないか無効です
402支払いが必要ですプランの上限またはクレジット残高 — クォータの枯渇、モデルや言語の指定過多、プランに含まれない機能など。本文には detail に加えて機械可読なコードが含まれます。
403禁止このエンドポイントには権限が不足しています
404見つかりませんレコード、スキーマ、またはジョブが見つかりません
500サーバーエラー内部エラー

エラーレスポンスには、人間が読めるエラーメッセージを含む detail フィールドが含まれます。プランおよび請求に関する失敗(402)では、さらに安定した code を持つ構造化ボディが返されます(prompt_limit_reachedinsufficient_creditsmodel_limit_exceededbenchmarks_not_in_plan)。関連する上限値と使用量も含まれるため、クライアントは文章を解析することなく原因に応じて処理を分岐できます。SSE ストリームでは、途中で失敗した場合、error イベントタイプが終端の completed イベントの前に送出されます。

モデルの複合キー

モデルは provider_name::model_name 形式の複合キーで識別されます。利用可能なモデルとそのキーを一覧表示するには GET /api/enrichment/options を使用してください。

モデルパラメーターは、エンリッチメント、スキーマ生成、サンプル生成では任意です。省略する(またはリテラルの"auto"を渡す)と、サーバーが組織のデフォルトモデルを選択します。設定でタスクごとのデフォルトが固定されている場合はそれが、そうでない場合はスコアリングソースのベンチマークで総合スコアが最も高いモデルが選ばれます。オプションのレスポンスのdefault_modelsフィールドには、autoが現在解決するモデルが表示され、model_auto_selected SSEイベントがジョブごとに選択されたモデルを報告します。autoは常に単一のモデルに解決されます(フュージョンをトリガーすることはありません)。再現可能なパイプラインのためには、引き続き明示的にモデルを指定してください。

リクエストのオプションは自動選択を制約します。enable_web_search: true を指定すると、ウェブ検索に対応するモデルのみが対象となります(オプションレスポンスの default_models_web_search フィールドでその選択結果をプレビューできます)。またバイナリ添付には、それらを読み取れるモデル(PDF、vision、audio)が必要です。制約を満たす利用可能なモデルが存在しない場合、リクエストはオプションを黙って無視するのではなく、HTTP 400 no_capable_default_model で失敗します。

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

インタラクティブな API ドキュメント

アプリケーションには、リクエスト/レスポンスの例を含むインタラクティブなAPIドキュメントが含まれています。アクセスには管理者認証が必要です:

次のステップ