Skip to content

Alerts

VeraID’s alerting system delivers real-time notifications when security-relevant events occur across your non-human identity landscape. Alerts are generated by threat detection, policy evaluation, credential lifecycle monitoring, and configurable rules.

Alert Types

VeraID generates six categories of alerts:

TypeDescriptionTypical Trigger
ANOMALY_DETECTEDBehavioral anomaly identified by ITDR.Identity activity deviates from baseline patterns.
POLICY_VIOLATIONAn access attempt was denied by policy evaluation.Identity attempted an action blocked by a DENY policy.
CREDENTIAL_EXPIRINGA credential is approaching its expiration date.API key, token, or certificate expires within the configured threshold.
HIGH_RISK_IDENTITYAn identity’s risk score has exceeded a defined threshold.Risk score crosses from moderate to high due to posture changes.
UNUSUAL_ACTIVITYA cluster of low-confidence anomalies aggregated into a significant signal.Multiple minor deviations that individually would not alert.
RATE_LIMIT_EXCEEDEDAn identity has exceeded its rate limit policy.Request volume exceeds the maxRequests threshold.

Alert Severity

Each alert is assigned a severity level based on the nature and potential impact of the event:

SeverityDescriptionExpected Response Time
LOWInformational. No immediate risk.Review within 1 week.
MEDIUMPotential risk that warrants investigation.Review within 24 hours.
HIGHSignificant risk requiring prompt attention.Investigate within 4 hours.
CRITICALActive threat or imminent security impact.Respond immediately.

Alert Status Workflow

Alerts follow a defined lifecycle from detection to resolution:

OPEN → ACKNOWLEDGED → RESOLVED
→ DISMISSED
StatusDescription
OPENNewly created alert, awaiting review.
ACKNOWLEDGEDA team member has seen the alert and is investigating.
RESOLVEDThe underlying issue has been addressed and remediated.
DISMISSEDThe alert was reviewed and determined to be a false positive or acceptable risk.

Alerts API

List Alerts

Retrieve alerts filtered by status, severity, and type:

Terminal window
# Get all open high-severity alerts
curl -H "Authorization: Bearer $API_KEY" \
"https://app.veraid.io/api/v1/alerts?status=OPEN&severity=HIGH"
# Get all alerts for a specific identity
curl -H "Authorization: Bearer $API_KEY" \
"https://app.veraid.io/api/v1/alerts?identityId=id_svc_deploy_bot"
# Get alerts by type
curl -H "Authorization: Bearer $API_KEY" \
"https://app.veraid.io/api/v1/alerts?type=ANOMALY_DETECTED&severity=CRITICAL"

Response:

{
"alerts": [
{
"id": "alert_abc123",
"type": "ANOMALY_DETECTED",
"severity": "HIGH",
"status": "OPEN",
"title": "Unusual frequency detected for svc-payment-processor",
"description": "4,832 requests in the last hour, baseline is 215 ± 42.",
"identityId": "id_svc_payment_processor",
"identityName": "svc-payment-processor",
"createdAt": "2026-03-19T14:22:00Z",
"metadata": {
"anomalyType": "UNUSUAL_FREQUENCY",
"confidence": 0.96,
"baselineMean": 215,
"observedValue": 4832
}
}
],
"pagination": {
"total": 47,
"page": 1,
"pageSize": 20,
"hasMore": true
}
}

Query Parameters:

ParameterTypeDescription
statusstringFilter by status: OPEN, ACKNOWLEDGED, RESOLVED, DISMISSED.
severitystringFilter by severity: LOW, MEDIUM, HIGH, CRITICAL.
typestringFilter by alert type (see Alert Types).
identityIdstringFilter alerts for a specific identity.
fromstringISO 8601 start date for time range filter.
tostringISO 8601 end date for time range filter.
pageintegerPage number for pagination. Default: 1.
pageSizeintegerResults per page. Default: 20, max: 100.

Acknowledge an Alert

Terminal window
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"note": "Investigating the frequency spike. May be related to batch processing job."
}' \
https://app.veraid.io/api/v1/alerts/alert_abc123/acknowledge

Response:

{
"id": "alert_abc123",
"status": "ACKNOWLEDGED",
"acknowledgedBy": "user_security_analyst",
"acknowledgedAt": "2026-03-19T14:35:00Z",
"note": "Investigating the frequency spike. May be related to batch processing job."
}

Resolve an Alert

Terminal window
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"resolution": "Confirmed batch processing job caused the spike. Added rate limit exception for batch window.",
"actions_taken": [
"Added TIME_WINDOW condition to rate limit policy for batch hours",
"Verified no unauthorized access occurred",
"Updated baseline to account for batch schedule"
]
}' \
https://app.veraid.io/api/v1/alerts/alert_abc123/resolve

Response:

{
"id": "alert_abc123",
"status": "RESOLVED",
"resolvedBy": "user_security_analyst",
"resolvedAt": "2026-03-19T15:10:00Z",
"resolution": "Confirmed batch processing job caused the spike. Added rate limit exception for batch window.",
"timeToAcknowledge": "13m",
"timeToResolve": "48m"
}

Alert Rules

Alert rules are configurable triggers that define when alerts are generated. Rules allow you to customize thresholds, target specific identities or groups, and set the severity of resulting alerts.

Rule Types

Rule TypeDescriptionConfigurable Parameters
Credential expiryAlert when credentials approach expiration.daysBeforeExpiry: 7, 14, 30, 60, 90.
Risk score thresholdAlert when an identity’s risk score exceeds a limit.riskThreshold: 0–100.
Failed authenticationAlert after repeated auth failures.maxFailures: count, windowMinutes: time window.
Policy violation frequencyAlert when an identity accumulates policy violations.maxViolations: count, windowHours: time window.
AI cost thresholdAlert when AI agent spend exceeds a budget.maxCostUSD: dollar amount, period: daily, weekly, monthly.
AI quota thresholdAlert when AI agent token usage approaches quota.quotaPercent: percentage of allocated quota.

Creating Alert Rules

Terminal window
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "credential-expiry-30d",
"description": "Alert 30 days before credential expiration",
"type": "CREDENTIAL_EXPIRY",
"severity": "MEDIUM",
"config": {
"daysBeforeExpiry": 30
},
"targets": {
"groups": ["group:production-services"],
"identityTypes": ["service_account", "api_key"]
},
"isActive": true
}' \
https://app.veraid.io/api/v1/alerts/rules

More rule examples:

// Risk score alert
{
"name": "high-risk-identity-alert",
"type": "RISK_SCORE_THRESHOLD",
"severity": "HIGH",
"config": {
"riskThreshold": 70
},
"targets": {
"groups": ["group:all-identities"]
},
"isActive": true
}
// Failed auth alert
{
"name": "brute-force-detection",
"type": "FAILED_AUTH",
"severity": "CRITICAL",
"config": {
"maxFailures": 10,
"windowMinutes": 5
},
"targets": {
"groups": ["group:all-identities"]
},
"isActive": true
}
// AI cost alert
{
"name": "ai-agent-daily-budget",
"type": "AI_COST_THRESHOLD",
"severity": "HIGH",
"config": {
"maxCostUSD": 500,
"period": "daily"
},
"targets": {
"identityTypes": ["ai_agent"]
},
"isActive": true
}

Real-Time Delivery via SSE

VeraID supports Server-Sent Events (SSE) for real-time alert delivery. Connect to the SSE endpoint to receive alerts as they are generated, without polling.

Connecting to the SSE Stream

const eventSource = new EventSource(
'https://app.veraid.io/api/v1/alerts/stream',
{
headers: {
'Authorization': `Bearer ${apiKey}`
}
}
);
eventSource.addEventListener('alert', (event) => {
const alert = JSON.parse(event.data);
console.log(`[${alert.severity}] ${alert.title}`);
if (alert.severity === 'CRITICAL') {
// Trigger automated response
triggerIncidentResponse(alert);
}
});
eventSource.addEventListener('heartbeat', () => {
// Connection keepalive, sent every 30 seconds
});
eventSource.onerror = (error) => {
console.error('SSE connection error:', error);
// Implement reconnection logic
};

SSE Event Types

EventDescription
alertA new alert has been created. Payload is the full alert object.
alert_updatedAn alert status has changed (acknowledged, resolved, dismissed).
heartbeatConnection keepalive, sent every 30 seconds. No payload.
Terminal window
# Connect via curl for testing
curl -N \
-H "Authorization: Bearer $API_KEY" \
-H "Accept: text/event-stream" \
https://app.veraid.io/api/v1/alerts/stream

Integrating with External Systems

Alerts can be forwarded to external systems via webhooks:

Terminal window
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "slack-critical-alerts",
"url": "https://hooks.slack.com/services/T.../B.../xxx",
"events": ["alert"],
"filters": {
"minSeverity": "HIGH"
},
"headers": {
"Content-Type": "application/json"
},
"isActive": true
}' \
https://app.veraid.io/api/v1/webhooks

Supported destinations include Slack, PagerDuty, Opsgenie, Microsoft Teams, and any HTTP endpoint that accepts JSON payloads.

Next Steps