Alerts API
The Alerts API lets you manage security alerts programmatically — list open alerts, acknowledge them, add comments, and resolve incidents.
Note
Alerts API endpoints require
alerts:read for GET requests and alerts:write for acknowledge/resolve operations.
List Alerts
GET
/v1/alerts Retrieve a paginated list of alerts.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filter by status: open, acknowledged, resolved |
severity | string | Optional | Filter by severity: critical, high, medium, low, info |
rule_name | string | Optional | Filter by rule name |
source | string | Optional | Filter by event source |
from | ISO 8601 | Optional | Start of time range |
to | ISO 8601 | Optional | End of time range |
page | integer | Optional | Page number (default: 1) |
per_page | integer | Optional | Results per page (default: 50) |
Example Request
curl -H "Authorization: Bearer snk_live_xxxx" \
"https://api.sentinelnerd.com/v1/alerts?status=open&severity=critical,high"
Example Response
{
"data": [
{
"id": "alt_abc123",
"rule_name": "net.ssh_brute_force",
"title": "SSH Brute Force Detected",
"description": "10 failed SSH logins from 203.0.113.42 in 5 minutes",
"severity": "high",
"status": "open",
"source": "unifi_network",
"event_count": 10,
"first_event_at": "2025-01-15T14:27:01Z",
"last_event_at": "2025-01-15T14:32:01Z",
"created_at": "2025-01-15T14:32:01Z",
"enrichment": {
"geo": { "country": "CN", "city": "Beijing" },
"abuse_ipdb": { "score": 87 }
},
"ai_analysis": {
"summary": "Known malicious IP associated with SSH brute force campaigns...",
"threat_score": 87
}
}
],
"pagination": {
"total": 12,
"page": 1,
"per_page": 50,
"total_pages": 1
}
} Get Single Alert
GET
/v1/alerts/:id Retrieve a single alert with full details, related events, and timeline.
Acknowledge Alert
POST
/v1/alerts/:id/acknowledge Mark an alert as acknowledged, indicating someone is investigating.
| Parameter | Type | Required | Description |
|---|---|---|---|
comment | string | Optional | Optional comment explaining the acknowledgment |
assignee | string | Optional | Email of the person assigned to investigate |
Acknowledge Alert
curl -X POST https://api.sentinelnerd.com/v1/alerts/alt_abc123/acknowledge \
-H "Authorization: Bearer snk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"comment": "Investigating - appears to be from known scanner",
"assignee": "security@example.com"
}' Resolve Alert
POST
/v1/alerts/:id/resolve Mark an alert as resolved, closing the incident.
| Parameter | Type | Required | Description |
|---|---|---|---|
resolution | string | Required | Resolution type: true_positive, false_positive, benign, duplicate |
comment | string | Optional | Resolution notes |
actions_taken | string[] | Optional | List of actions taken to resolve |
Resolve Alert
curl -X POST https://api.sentinelnerd.com/v1/alerts/alt_abc123/resolve \
-H "Authorization: Bearer snk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"resolution": "true_positive",
"comment": "Source IP blocked via active response. SSH hardening applied.",
"actions_taken": [
"Blocked IP 203.0.113.42 for 7 days",
"Disabled password auth for SSH",
"Enabled key-based auth only"
]
}' Add Comment
POST
/v1/alerts/:id/comments Add a comment to an alert's timeline.
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Required | Comment text (supports Markdown) |
Bulk Operations
POST
/v1/alerts/bulk Perform bulk operations on multiple alerts at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
alert_ids | string[] | Required | Array of alert IDs to update |
action | string | Required | Action: acknowledge, resolve, reopen |
resolution | string | Optional | Required for resolve action |
comment | string | Optional | Optional comment for all alerts |
Bulk Resolve
curl -X POST https://api.sentinelnerd.com/v1/alerts/bulk \
-H "Authorization: Bearer snk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"alert_ids": ["alt_abc123", "alt_def456", "alt_ghi789"],
"action": "resolve",
"resolution": "false_positive",
"comment": "Scanner noise from security audit - safe to ignore"
}' Alert Statistics
GET
/v1/alerts/stats Get aggregate alert statistics for the specified time range.
Stats Response
{
"data": {
"total": 156,
"by_status": {
"open": 12,
"acknowledged": 8,
"resolved": 136
},
"by_severity": {
"critical": 3,
"high": 24,
"medium": 67,
"low": 62
},
"mean_time_to_acknowledge": "12m",
"mean_time_to_resolve": "2h 15m"
}
}