SIRT REST API クイックスタート

SIRT.aiが提供するREST API(HTTP)の使い方をまとめたクイックスタートガイドです。MCP接続ではなく、直接HTTP(REST)でSIRTを呼び出したい方(自作スクリプト、他言語クライアント、サーバー間連携など)向けの内容です。

1. 認証と基本形

全エンドポイントは https://app.sirtai.org/api/v1 配下にマウントされています。

認証はAPIキーによるBearer認証です。Authorization: Bearer <YOUR_API_KEY> ヘッダ、または X-API-Key: <YOUR_API_KEY> ヘッダのどちらでも受け付けます。キーが無ければ 401 Missing API key、無効・revoke済みなら 401 Invalid or revoked API key を返します。

基本形(検索の例):

curl -sS "https://app.sirtai.org/api/v1/search?q=roadmap&top_k=5" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

書き込み系はJSON POSTです:

curl -sS -X POST "https://app.sirtai.org/api/v1/crystallize" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"raw_context": "今日決めたこと: ...", "project": "my-project"}'

全ルートは同一の認証・レート制限ミドルウェアを通ります。

2. 主要エンドポイント(用途別)

2.1 ノード保存(2ステップ: crystallize → confirm)

SIRTの「保存」は2段階です。まず raw_context(自由文)をノード案(draft)に分解し、それをレビューしてから確定(実際に保存)します。

curl -sS -X POST "https://app.sirtai.org/api/v1/crystallize" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"raw_context": "...", "project": "my-project", "mode": "auto"}'
curl -sS -X POST "https://app.sirtai.org/api/v1/crystallize/confirm" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"node_drafts": [ /* /crystallize の応答から丸ごと転記 */ ], "assertion_drafts": []}'

2.2 ノード検索

curl -sS "https://app.sirtai.org/api/v1/search/hybrid?q=onboarding&top_k=10" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

2.3 ノード取得

curl -sS -X POST "https://app.sirtai.org/api/v1/nodes/batch-get" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["node_abc123", "node_def456"]}'

2.4 キー管理(self-service, list/issue/revoke/rotate)

自分のテナントが持つAPIキーは、そのテナントの有効なキーがあれば自己管理できます。

curl -sS -X POST "https://app.sirtai.org/api/v1/keys" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"label": "ci-pipeline"}'

2.5 その他: 外部書き込み連携(pull型コネクタAPI)

クライアント側コネクタ(サーバー側から能動的にpush接続できないクライアント)が、SIRTに溜まった「書き出し待ち」の外部連携をpullして完了報告するためのAPIです。

3. 利用回数

SIRTはプランによるAPI call数、node作成数、保存・インポート回数、Server AI処理回数の上限を設けません。

プランcalls/day
free無制限
pro無制限
max無制限

4. エラー応答の読み方

全ルートで共通して、エラーは {"error": "<message>"} というJSONボディで返ります。代表的なステータスコード:

ステータス意味
400不正なリクエスト(JSON構文エラー、バリデーション失敗など){"error": "Invalid JSON"}
401APIキー欠落、または無効・revoke済み{"error": "Missing API key"} / {"error": "Invalid or revoked API key"}
403プロファイル昇格の試み、role_agent発行が未許可{"error": "a role_agent-profile key cannot issue a full-profile key"}
404対象が存在しない、または自テナントに属さない{"error": "Node not found"} / {"error": "No active key with that id for this tenant"}
409競合(最後の1本のキーをrevoke、アクティブキー上限到達など){"error": "Refusing to revoke the tenant's last active key — use rotation instead"}
500サーバー側エラー{"error": "Snapshot build failed"}

/crystallize/crystallize/confirm のようにスキーマで入力検証しているルートでは、400 のメッセージがバリデーションエラー文字列(フィールドパス付き)になることがあります。