REST APIリファレンス
KYRA MDR REST APIは、アラート、インシデント、Collector、その他のプラットフォームリソースへのプログラマティックアクセスを提供します。既存ツールとの連携、ワークフローの自動化、カスタムダッシュボードの構築に使用できます。
ベースURL: https://api.seekerslab.com/api/v1
認証
すべてのAPIリクエストには Authorization ヘッダーにBearerトークンが必要です。
APIキーの生成
- KYRA MDRコンソールを開きます
- Settings > API Keys に移動します
- Create API Key をクリックします
- キーに名前を付けます(例:「SIEM Integration」)
- 権限スコープを選択します(読み取り専用または読み書き)
- キーをコピーします — 再表示されません
APIキーの使用
すべてのリクエストにキーを含めます:
curl -H "Authorization: Bearer YOUR_API_KEY" \ https://api.seekerslab.com/api/v1/alerts認証エラー
| ステータス | 意味 |
|---|---|
401 Unauthorized | APIキーが欠落または無効 |
403 Forbidden | APIキーに必要な権限がない |
429 Too Many Requests | レート制限超過(以下参照) |
レート制限
| プラン | レート制限 |
|---|---|
| Free | 60リクエスト/分 |
| Standard | 300リクエスト/分 |
| Pro | 1,000リクエスト/分 |
| Enterprise | カスタム |
レート制限ヘッダーはすべてのレスポンスに含まれます:
X-RateLimit-Limit: 300X-RateLimit-Remaining: 297X-RateLimit-Reset: 1700000060共通パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
page | integer | ページ番号(デフォルト:1) |
size | integer | ページあたりのアイテム数(デフォルト:20、最大:100) |
sort | string | ソートフィールド(例:created_at) |
order | string | ソート順序:asc または desc |
from | ISO 8601 | 時間範囲の開始 |
to | ISO 8601 | 時間範囲の終了 |
アラート
アラート一覧
GET /alertsクエリパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
severity | string | 重大度でフィルタ:critical、high、medium、low、info |
status | string | ステータスでフィルタ:open、in_progress、resolved、false_positive |
source_type | string | ソースでフィルタ:fortigate、windows、aws-cloudtrail など |
例:
# 過去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}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| パラメータ | 型 | 説明 |
|---|---|---|
severity | string | 重大度でフィルタ |
status | string | open、investigating、contained、resolved、closed |
assignee | string | 割り当てられたアナリストでフィルタ |
インシデント詳細の取得
GET /incidents/{incident_id}タイムライン、関連アラート、影響を受けた資産、対応アクションを含む完全なインシデントを返します。
インシデントコメントの追加
POST /incidents/{incident_id}/commentscurl -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/commentsCollector
Collector一覧
GET /collectorsCollector詳細の取得
GET /collectors/{collector_id}ヘルスメトリクス、設定済みソース、バッファステータスを含む詳細情報を返します。
ログ検索
イベント検索
POST /searchcurl -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 | 完全一致フィールドマッチ |
| AND | severity:critical AND status:open | 両方の条件 |
| OR | src_ip:10.0.1.1 OR src_ip:10.0.1.2 | いずれかの条件 |
| NOT | NOT source_type:sysmon | マッチを除外 |
| ワイルドカード | user:admin* | プレフィックスマッチ |
| 範囲 | event_count:[10 TO 100] | 数値範囲 |
Webhook
Webhookの作成
POST /webhookscurl -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/webhooksWebhookイベント
| イベント | 説明 |
|---|---|
alert.created | 新しいアラートが検出 |
alert.updated | アラートステータスが変更 |
incident.created | 新しいインシデントが作成 |
incident.updated | インシデントステータスが変更 |
collector.disconnected | Collectorがオフラインに |
エラーレスポンス
すべてのエラーは一貫したフォーマットに従います:
{ "error": { "code": "INVALID_PARAMETER", "message": "重大度の値が無効です。許可値:critical、high、medium、low、info", "details": { "parameter": "severity", "value": "urgent" } }}| HTTPステータス | エラーコード | 説明 |
|---|---|---|
| 400 | INVALID_PARAMETER | 無効なリクエストパラメータ |
| 401 | UNAUTHORIZED | APIキーが欠落または無効 |
| 403 | FORBIDDEN | 権限不足 |
| 404 | NOT_FOUND | リソースが見つからない |
| 429 | RATE_LIMITED | リクエスト過多 |
| 500 | INTERNAL_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レスポンスヘッダーを含めてください