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.

ParameterTypeRequiredDescription
statusstringOptionalFilter by status: open, acknowledged, resolved
severitystringOptionalFilter by severity: critical, high, medium, low, info
rule_namestringOptionalFilter by rule name
sourcestringOptionalFilter by event source
fromISO 8601OptionalStart of time range
toISO 8601OptionalEnd of time range
pageintegerOptionalPage number (default: 1)
per_pageintegerOptionalResults 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.

ParameterTypeRequiredDescription
commentstringOptionalOptional comment explaining the acknowledgment
assigneestringOptionalEmail 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.

ParameterTypeRequiredDescription
resolutionstringRequiredResolution type: true_positive, false_positive, benign, duplicate
commentstringOptionalResolution notes
actions_takenstring[]OptionalList 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.

ParameterTypeRequiredDescription
bodystringRequiredComment text (supports Markdown)

Bulk Operations

POST/v1/alerts/bulk

Perform bulk operations on multiple alerts at once.

ParameterTypeRequiredDescription
alert_idsstring[]RequiredArray of alert IDs to update
actionstringRequiredAction: acknowledge, resolve, reopen
resolutionstringOptionalRequired for resolve action
commentstringOptionalOptional 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"
  }
}