本文にスキップ

REST APIリファレンス

KYRA MDR REST APIは、アラート、インシデント、Collector、その他のプラットフォームリソースへのプログラマティックアクセスを提供します。既存ツールとの連携、ワークフローの自動化、カスタムダッシュボードの構築に使用できます。

ベースURL: https://api.seekerslab.com/api/v1


認証

すべてのAPIリクエストには Authorization ヘッダーにBearerトークンが必要です。

APIキーの生成

  1. KYRA MDRコンソールを開きます
  2. Settings > API Keys に移動します
  3. Create API Key をクリックします
  4. キーに名前を付けます(例:「SIEM Integration」)
  5. 権限スコープを選択します(読み取り専用または読み書き)
  6. キーをコピーします — 再表示されません

APIキーの使用

すべてのリクエストにキーを含めます:

Terminal window
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.seekerslab.com/api/v1/alerts

認証エラー

ステータス意味
401 UnauthorizedAPIキーが欠落または無効
403 ForbiddenAPIキーに必要な権限がない
429 Too Many Requestsレート制限超過(以下参照)

レート制限

プランレート制限
Free60リクエスト/分
Standard300リクエスト/分
Pro1,000リクエスト/分
Enterpriseカスタム

レート制限ヘッダーはすべてのレスポンスに含まれます:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1700000060

共通パラメータ

パラメータ説明
pageintegerページ番号(デフォルト:1)
sizeintegerページあたりのアイテム数(デフォルト:20、最大:100)
sortstringソートフィールド(例:created_at
orderstringソート順序:asc または desc
fromISO 8601時間範囲の開始
toISO 8601時間範囲の終了

アラート

アラート一覧

GET /alerts

クエリパラメータ:

パラメータ説明
severitystring重大度でフィルタ:criticalhighmediumlowinfo
statusstringステータスでフィルタ:openin_progressresolvedfalse_positive
source_typestringソースでフィルタ:fortigatewindowsaws-cloudtrail など

例:

Terminal window
# 過去24時間のオープンなCriticalアラートを取得
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.seekerslab.com/api/v1/alerts?severity=critical&status=open&from=2026-03-21T00:00:00Z"

アラート詳細の取得

GET /alerts/{alert_id}

アラートステータスの更新

PATCH /alerts/{alert_id}
Terminal window
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "resolved", "comment": "誤検知 - 承認済みペネトレーションテスト"}' \
https://api.seekerslab.com/api/v1/alerts/alert-550e8400-e29b

インシデント

インシデント一覧

GET /incidents
パラメータ説明
severitystring重大度でフィルタ
statusstringopeninvestigatingcontainedresolvedclosed
assigneestring割り当てられたアナリストでフィルタ

インシデント詳細の取得

GET /incidents/{incident_id}

タイムライン、関連アラート、影響を受けた資産、対応アクションを含む完全なインシデントを返します。

インシデントコメントの追加

POST /incidents/{incident_id}/comments
Terminal window
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "WORKSTATION-12をネットワークから隔離しました。根本原因を調査中。"}' \
https://api.seekerslab.com/api/v1/incidents/inc-7c9e6679-a1f4/comments

Collector

Collector一覧

GET /collectors

Collector詳細の取得

GET /collectors/{collector_id}

ヘルスメトリクス、設定済みソース、バッファステータスを含む詳細情報を返します。


ログ検索

イベント検索

POST /search
Terminal window
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "source_type:windows AND event_id:4625",
"from": "2026-03-21T00:00:00Z",
"to": "2026-03-22T00:00:00Z",
"size": 50
}' \
https://api.seekerslab.com/api/v1/search

検索クエリ構文

演算子説明
フィールドマッチsource_type:windows完全一致フィールドマッチ
ANDseverity:critical AND status:open両方の条件
ORsrc_ip:10.0.1.1 OR src_ip:10.0.1.2いずれかの条件
NOTNOT source_type:sysmonマッチを除外
ワイルドカードuser:admin*プレフィックスマッチ
範囲event_count:[10 TO 100]数値範囲

Webhook

Webhookの作成

POST /webhooks
Terminal window
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Slack Critical Alerts",
"url": "https://hooks.slack.com/services/T00/B00/xxx",
"events": ["alert.created"],
"filters": {
"severity": ["critical", "high"]
}
}' \
https://api.seekerslab.com/api/v1/webhooks

Webhookイベント

イベント説明
alert.created新しいアラートが検出
alert.updatedアラートステータスが変更
incident.created新しいインシデントが作成
incident.updatedインシデントステータスが変更
collector.disconnectedCollectorがオフラインに

エラーレスポンス

すべてのエラーは一貫したフォーマットに従います:

{
"error": {
"code": "INVALID_PARAMETER",
"message": "重大度の値が無効です。許可値:critical、high、medium、low、info",
"details": {
"parameter": "severity",
"value": "urgent"
}
}
}
HTTPステータスエラーコード説明
400INVALID_PARAMETER無効なリクエストパラメータ
401UNAUTHORIZEDAPIキーが欠落または無効
403FORBIDDEN権限不足
404NOT_FOUNDリソースが見つからない
429RATE_LIMITEDリクエスト過多
500INTERNAL_ERRORサーバーエラー — サポートにお問い合わせ

SDKとライブラリ

公式SDKは近日提供予定です。現時点では、REST APIは任意のHTTPクライアントで動作します:

# Python例
import requests
API_KEY = "your-api-key"
BASE_URL = "https://api.seekerslab.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# オープンなCriticalアラートを取得
response = requests.get(
f"{BASE_URL}/alerts",
headers=headers,
params={"severity": "critical", "status": "open"}
)
alerts = response.json()["data"]
for alert in alerts:
print(f"[{alert['severity']}] {alert['title']}")

お困りですか?

  • API関連: api-kyra@seekerslab.com
  • レート制限の引き上げ: kyra@seekerslab.com にお問い合わせ
  • バグ報告: 問題を報告する際に X-Request-Id レスポンスヘッダーを含めてください