curl --location 'https://your-cloud-id.threataware.com/public-api/v1/alerts?filter=allunresolved&limit=10' \
--header 'Accept: application/json' \
--header 'X-ThreatAware-ApiKey: your-api-key-here'
import requests
API_KEY = "your-api-key-here"
CLOUD_ID = "sandbox"
BASE_URL = f"https://{CLOUD_ID}.threataware.com/public-api/v1"
headers = {
"Accept": "application/json",
"X-ThreatAware-ApiKey": API_KEY
}
params = {
"filter": "allunresolved",
"limit": 10
}
response = requests.get(f"{BASE_URL}/alerts", headers=headers, params=params)
alerts = response.json()
print(f"Retrieved {len(alerts['data'])} unresolved alerts")
# Example: Count by severity
red_alerts = [a for a in alerts['data'] if a['state'] == 'Red']
amber_alerts = [a for a in alerts['data'] if a['state'] == 'Amber']
print(f"Red: {len(red_alerts)}, Amber: {len(amber_alerts)}")
const axios = require('axios');
const API_KEY = 'your-api-key-here';
const CLOUD_ID = 'sandbox';
const BASE_URL = `https://${CLOUD_ID}.threataware.com/public-api/v1`;
axios.get(`${BASE_URL}/alerts`, {
headers: {
'Accept': 'application/json',
'X-ThreatAware-ApiKey': API_KEY
},
params: {
filter: 'allunresolved',
systemName: 'crowdstrike' // Optional: filter by integration
}
})
.then(response => {
console.log(`Retrieved ${response.data.data.length} CrowdStrike alerts`);
});
$ApiKey = "your-api-key-here"
$CloudId = "sandbox"
$BaseUrl = "https://$CloudId.threataware.com/public-api/v1"
$Headers = @{
"Accept" = "application/json"
"X-ThreatAware-ApiKey" = $ApiKey
}
$Params = @{
filter = "allunresolved"
limit = 10
}
$Response = Invoke-RestMethod -Uri "$BaseUrl/alerts" -Headers $Headers -Body $Params -Method Get
Write-Host "Retrieved $($Response.data.Count) unresolved alerts"
# Example: Group by state
$Response.data | Group-Object -Property state | Format-Table Name, Count
{
"offset": 0,
"limit": 1,
"total": 100,
"data": [
{
"state": "Amber",
"product": "Automox, Software Updates",
"status": "Incident",
"item": "LAPTOP-001-1IWEF",
"issue": "Pending Updates",
"details": "Pending update of 1 patch, overdue by 5 days: Security Update KB5012345",
"itemEntityType": "device",
"ownerName": "",
"timestamp": "2022-10-10T09:32:23.0000000",
"acknowledgedTime": "0001-01-01T00:00:00.0000000",
"assignedTime": "0001-01-01T00:00:00.0000000",
"resolved": false,
"acknowledged": false,
"resolvedBy": "",
"resolvedTime": "0001-01-01T00:00:00.0000000",
"itemId": "f4841fbf-412e-4504-82b8-ce3c8cd2d400",
"inactiveUntil": "0001-01-01T00:00:00.0000000",
"hasLinkedDevice": true
}
],
"success": true,
"statusCode": 200,
"message": "Successfully retrieved alerts."
}
Core Endpoints
Get Alerts
Request a list of all alerts throughout your entire environment
GET
/
public-api
/
v1
/
alerts
curl --location 'https://your-cloud-id.threataware.com/public-api/v1/alerts?filter=allunresolved&limit=10' \
--header 'Accept: application/json' \
--header 'X-ThreatAware-ApiKey: your-api-key-here'
import requests
API_KEY = "your-api-key-here"
CLOUD_ID = "sandbox"
BASE_URL = f"https://{CLOUD_ID}.threataware.com/public-api/v1"
headers = {
"Accept": "application/json",
"X-ThreatAware-ApiKey": API_KEY
}
params = {
"filter": "allunresolved",
"limit": 10
}
response = requests.get(f"{BASE_URL}/alerts", headers=headers, params=params)
alerts = response.json()
print(f"Retrieved {len(alerts['data'])} unresolved alerts")
# Example: Count by severity
red_alerts = [a for a in alerts['data'] if a['state'] == 'Red']
amber_alerts = [a for a in alerts['data'] if a['state'] == 'Amber']
print(f"Red: {len(red_alerts)}, Amber: {len(amber_alerts)}")
const axios = require('axios');
const API_KEY = 'your-api-key-here';
const CLOUD_ID = 'sandbox';
const BASE_URL = `https://${CLOUD_ID}.threataware.com/public-api/v1`;
axios.get(`${BASE_URL}/alerts`, {
headers: {
'Accept': 'application/json',
'X-ThreatAware-ApiKey': API_KEY
},
params: {
filter: 'allunresolved',
systemName: 'crowdstrike' // Optional: filter by integration
}
})
.then(response => {
console.log(`Retrieved ${response.data.data.length} CrowdStrike alerts`);
});
$ApiKey = "your-api-key-here"
$CloudId = "sandbox"
$BaseUrl = "https://$CloudId.threataware.com/public-api/v1"
$Headers = @{
"Accept" = "application/json"
"X-ThreatAware-ApiKey" = $ApiKey
}
$Params = @{
filter = "allunresolved"
limit = 10
}
$Response = Invoke-RestMethod -Uri "$BaseUrl/alerts" -Headers $Headers -Body $Params -Method Get
Write-Host "Retrieved $($Response.data.Count) unresolved alerts"
# Example: Group by state
$Response.data | Group-Object -Property state | Format-Table Name, Count
{
"offset": 0,
"limit": 1,
"total": 100,
"data": [
{
"state": "Amber",
"product": "Automox, Software Updates",
"status": "Incident",
"item": "LAPTOP-001-1IWEF",
"issue": "Pending Updates",
"details": "Pending update of 1 patch, overdue by 5 days: Security Update KB5012345",
"itemEntityType": "device",
"ownerName": "",
"timestamp": "2022-10-10T09:32:23.0000000",
"acknowledgedTime": "0001-01-01T00:00:00.0000000",
"assignedTime": "0001-01-01T00:00:00.0000000",
"resolved": false,
"acknowledged": false,
"resolvedBy": "",
"resolvedTime": "0001-01-01T00:00:00.0000000",
"itemId": "f4841fbf-412e-4504-82b8-ce3c8cd2d400",
"inactiveUntil": "0001-01-01T00:00:00.0000000",
"hasLinkedDevice": true
}
],
"success": true,
"statusCode": 200,
"message": "Successfully retrieved alerts."
}
Overview
The Alerts endpoint provides access to security issues and Vitals health problems detected across your environment. Filter by resolution status or specific integration.Parameters
string
required
Filter alerts based on their current stateOptions:
allunresolved- All unresolved alertsall- All alerts (resolved and unresolved)resolved- Only resolved alerts
string
Name of an integration you would like to query against. Leave blank to query all integrations.Example:
automox, crowdstrike, msdefenderatpnumber
default:"0"
Set the start position of the data returned by the API
number
default:"0"
Limit each request by the provided number. Leave blank or as 0 to return all data available
Authentication
string
required
Your ThreatAware API key
string
default:"application/json"
Response format
Response
number
The starting position of this result set
number
The number of results returned
number
Total number of alerts available
boolean
Whether the request was successful
number
HTTP status code
string
Status message
array
Show Alert Object
Show Alert Object
string
Alert severity:
Red, Amber, Greenstring
Integration and category (e.g., “Automox, Software Updates”)
string
Alert type:
Incident, Warning, Infostring
Device or user name affected by this alert
string
Brief description of the issue
string
Detailed information about the alert
string
Type of entity:
device, user, systemstring
User assigned to this alert
string
When the alert was created (ISO 8601)
string
When the alert was acknowledged
string
When the alert was assigned
boolean
Whether the alert has been resolved
boolean
Whether the alert has been acknowledged
string
User who resolved the alert
string
When the alert was resolved
string
Unique identifier for the affected item
string
Alert snooze expiration time
boolean
Whether this alert is linked to a device in inventory
curl --location 'https://your-cloud-id.threataware.com/public-api/v1/alerts?filter=allunresolved&limit=10' \
--header 'Accept: application/json' \
--header 'X-ThreatAware-ApiKey: your-api-key-here'
import requests
API_KEY = "your-api-key-here"
CLOUD_ID = "sandbox"
BASE_URL = f"https://{CLOUD_ID}.threataware.com/public-api/v1"
headers = {
"Accept": "application/json",
"X-ThreatAware-ApiKey": API_KEY
}
params = {
"filter": "allunresolved",
"limit": 10
}
response = requests.get(f"{BASE_URL}/alerts", headers=headers, params=params)
alerts = response.json()
print(f"Retrieved {len(alerts['data'])} unresolved alerts")
# Example: Count by severity
red_alerts = [a for a in alerts['data'] if a['state'] == 'Red']
amber_alerts = [a for a in alerts['data'] if a['state'] == 'Amber']
print(f"Red: {len(red_alerts)}, Amber: {len(amber_alerts)}")
const axios = require('axios');
const API_KEY = 'your-api-key-here';
const CLOUD_ID = 'sandbox';
const BASE_URL = `https://${CLOUD_ID}.threataware.com/public-api/v1`;
axios.get(`${BASE_URL}/alerts`, {
headers: {
'Accept': 'application/json',
'X-ThreatAware-ApiKey': API_KEY
},
params: {
filter: 'allunresolved',
systemName: 'crowdstrike' // Optional: filter by integration
}
})
.then(response => {
console.log(`Retrieved ${response.data.data.length} CrowdStrike alerts`);
});
$ApiKey = "your-api-key-here"
$CloudId = "sandbox"
$BaseUrl = "https://$CloudId.threataware.com/public-api/v1"
$Headers = @{
"Accept" = "application/json"
"X-ThreatAware-ApiKey" = $ApiKey
}
$Params = @{
filter = "allunresolved"
limit = 10
}
$Response = Invoke-RestMethod -Uri "$BaseUrl/alerts" -Headers $Headers -Body $Params -Method Get
Write-Host "Retrieved $($Response.data.Count) unresolved alerts"
# Example: Group by state
$Response.data | Group-Object -Property state | Format-Table Name, Count
{
"offset": 0,
"limit": 1,
"total": 100,
"data": [
{
"state": "Amber",
"product": "Automox, Software Updates",
"status": "Incident",
"item": "LAPTOP-001-1IWEF",
"issue": "Pending Updates",
"details": "Pending update of 1 patch, overdue by 5 days: Security Update KB5012345",
"itemEntityType": "device",
"ownerName": "",
"timestamp": "2022-10-10T09:32:23.0000000",
"acknowledgedTime": "0001-01-01T00:00:00.0000000",
"assignedTime": "0001-01-01T00:00:00.0000000",
"resolved": false,
"acknowledged": false,
"resolvedBy": "",
"resolvedTime": "0001-01-01T00:00:00.0000000",
"itemId": "f4841fbf-412e-4504-82b8-ce3c8cd2d400",
"inactiveUntil": "0001-01-01T00:00:00.0000000",
"hasLinkedDevice": true
}
],
"success": true,
"statusCode": 200,
"message": "Successfully retrieved alerts."
}
Use Cases
SIEM Integration
Forward security alerts to Splunk, Sentinel, QRadar, or other SIEMs
SOC Dashboard
Build real-time security operations dashboards
Automated Ticketing
Create ServiceNow or Jira tickets automatically from alerts
Alert Metrics
Track Mean Time To Detect (MTTD) and Mean Time To Resolve (MTTR)
Alert States
Red Alerts
Red Alerts
Critical security issues requiring immediate attentionExamples:
- EDR agent not functioning
- Encryption disabled on sensitive device
- Critical vulnerability unpatched for 30+ days
- MFA not enabled for admin account
Amber Alerts
Amber Alerts
Warnings that should be addressed soonExamples:
- Agent configuration drift
- Pending security updates
- Device not seen online in 7-14 days
- Firewall disabled temporarily
Green/Info
Green/Info
Informational alerts or resolved issuesExamples:
- Agent successfully installed
- Configuration corrected
- Device came back online
- Patch successfully applied
Related Endpoints
Devices
Get full device details for affected items