Get cases¶
GET/
Cases API · Cases
Search a specific customer's cases.
Parameters¶
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Tenant-ID | header | string (uuid) | Yes | Tenant ID. |
managedBy | query | string | No | Case is managed by. Must be one of: self, sophos. |
type | query | array of string | No | Match by case type. Each item must be one of: hunt, investigation, incident, healthCheck, duplicate, postureImprovement, customerRequest, activeThreat, exposure, managedRisk, generalRequest. |
severity | query | array of string | No | Case severity. Each item must be one of: notSet, critical, high, medium, low, informational. |
status | query | array of string | No | Match by case status. Self-managed cases support new, investigating, onHold, and resolved, while Sophos-managed cases include additional statuses such as actionRequired.Each item must be one of: actionRequired, resolved, investigating, new, onHold. |
assignee | query | string | No | For self-managed cases, match by case assignee email, or 'Unassigned' if no assignee is set. For Sophos-managed cases, the assignee is always 'MDR Ops' or 'Unassigned'. |
name | query | string | No | Match by case name. |
overviewContains | query | string | No | Partial match by case overview. |
createdAfter | query | string | No | Timestamp or duration format. |
createdBefore | query | string | No | Timestamp or duration format. |
escalated | query | boolean | No | Case escalated. |
verdict | query | string | No | Is the case a false positive or true positive. Must be one of: falsePositive, truePositiveMalicious, truePositiveBenign, truePositive, inconclusive. |
page | query | integer | No | The page number to fetch, starting with 1. |
pageSize | query | integer | No | The size of the page requested. |
sort | query | string | No | Sort column ex. sort=“type:asc” sort=“type:desc" sort=“type”. |
Request samples¶
curl -X GET "https://api-<data-region>.central.sophos.com/cases/v1/cases" -H "Authorization: Bearer <access-token>" -H "X-Tenant-ID: <tenant-id>"
import requests
response = requests.get(
"https://api-<data-region>.central.sophos.com/cases/v1/cases",
headers={
"Authorization": "Bearer <access-token>",
"X-Tenant-ID": "<tenant-id>",
},
)
print(response.json())
$headers = @{
"Authorization" = "Bearer <access-token>"
"X-Tenant-ID" = "<tenant-id>"
}
Invoke-RestMethod -Method GET -Uri "https://api-<data-region>.central.sophos.com/cases/v1/cases" -Headers $headers
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api-<data-region>.central.sophos.com/cases/v1/cases", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <access-token>")
req.Header.Set("X-Tenant-ID", "<tenant-id>")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
const response = await fetch("https://api-<data-region>.central.sophos.com/cases/v1/cases", {
method: "GET",
headers: {
"Authorization": "Bearer <access-token>",
"X-Tenant-ID": "<tenant-id>",
},
});
const data = await response.json();
console.log(data);
Responses¶
200 — Cases found.¶
Response fields
itemsarray of objectA case.
Show child attributesHide child attributes
idstringrequiredCase ID.
typestringrequiredCase type.
Must be one of:
Must be one of:
hunt, investigation, incident, healthCheck, duplicate, postureImprovement, customerRequest, activeThreat, exposure, managedRisk, generalRequest.namestringrequiredCase name.
Must be at most 510 characters long.
Must be at most 510 characters long.
tenantobjectrequiredTenant reference.
Show child attributesHide child attributes
idstring (uuid)Tenant ID.
managedBystringCase managed by.
Must be one of:
Must be one of:
self, sophos.createdAtstring (date-time)requiredCase created date-time.
createdByobjectPrincipal reference.
Show child attributesHide child attributes
idstringPrincipal ID. This is the client ID for service principals.
typestring (enum)Principal type.
Must be one of:
Must be one of:
user, service.namestringPrincipal name. This doesn't apply to service principals.
accountTypestringAccount type.
Must be one of:
Must be one of:
partner, tenant, organization.accountIdstring (uuid)Account ID.
resolvedAtstring (date-time)Case resolved date-time.
updatedAtstring (date-time)Case updated date-time.
severitystringCase severity.
Must be one of:
Must be one of:
notSet, critical, high, medium, low, informational.statusstringrequiredCase status.
Must be one of:
actionRequired applies only to Sophos-managed cases.Must be one of:
actionRequired, resolved, investigating, new, onHold.initialDetectionobjectInitial Detection in a Case.
Show child attributesHide child attributes
idstringDetection ID.
severityintegerSeverity of the detection. A higher score implies a more severe detection.
Must be ≥ 1 and ≤ 10.
Must be ≥ 1 and ≤ 10.
typestringType of the detection.
detectionRulestringDetection rule ID.
mitreAttacksarray of objectList of MITRE ATT&CK objects associated with this detection.
MITRE ATT&CK name and description.
Show child attributesHide child attributes
tacticobjectTactic used in the MITRE ATT&CK.
Show child attributesHide child attributes
idstringID of the tactic.
namestringMITRE ATT&CK name.
techniquesarray of objectMITRE ATT&CK techniques.
Technique used in the MITRE ATT&CK.
Show child attributesHide child attributes
idstringID of the technique.
namestringName of the technique.
timestring (timestamp)Detection event time.
sensorobjectThe sensor which generated the detection.
Show child attributesHide child attributes
idstringrequiredID of the sensor.
typestringrequiredSensor type where detection occurred.
Must be one of:
Must be one of:
cloud, endpoint, email, firewall, iam, network, compound, backupAndRecovery.sourcestringrequiredThe name of the sensor source.
versionstringrequiredThe version of the sensor provided by the vendor.
namestringThe name of the sensor.
assigneeobjectPrincipal reference.
Show child attributesHide child attributes
idstringPrincipal ID. This is the client ID for service principals.
typestring (enum)Principal type.
Must be one of:
Must be one of:
user, service.namestringPrincipal name. This doesn't apply to service principals.
accountTypestringAccount type.
Must be one of:
Must be one of:
partner, tenant, organization.accountIdstring (uuid)Account ID.
assignedAtstring (date-time)Assignee set date-time.
overviewstringCase overview.
Must be at most 20000 characters long.
Must be at most 20000 characters long.
detectionCountintegerCount of detections associated with the case.
verdictstringCase verdict.
Must be one of:
Must be one of:
falsePositive, truePositiveMalicious, truePositiveBenign, truePositive, inconclusive.escalatedbooleanCase escalated.
pagesobjectShow child attributesHide child attributes
currentintegerrequiredThe 1-based page number being returned.
sizeintegerrequiredThe size of the page being returned.
totalinteger(Optional) The total number of pages that exist, if pageTotal=true in the request.
itemsinteger(Optional) The total number of items across all pages.
maxSizeintegerrequiredThe maximum page size that can be requested.
Errors¶
| Status | Meaning |
|---|---|
400 | Bad request. |
401 | Unauthorized. |
403 | Forbidden. |
500 | Unexpected error. |
All error responses share the same shape — see the error response object.
Response examples¶
200¶
{
"items": [
{
"id": "string",
"type": "hunt",
"name": "string",
"tenant": {
"id": "00000000-0000-0000-0000-000000000000"
},
"managedBy": "self",
"createdAt": "2026-07-28T00:00:00Z",
"createdBy": {
"id": "string",
"type": "user",
"name": "string",
"accountType": "partner",
"accountId": "00000000-0000-0000-0000-000000000000"
},
"resolvedAt": "2026-07-28T00:00:00Z",
"updatedAt": "2026-07-28T00:00:00Z",
"severity": "notSet",
"status": "actionRequired",
"initialDetection": {
"id": "string",
"severity": 5,
"type": "Threat",
"detectionRule": "WIN-MITRE-Behavioral-TA0011-T1105",
"mitreAttacks": [
{
"tactic": {
"id": "TA0002",
"name": "Execution",
"techniques": [
{
"id": "T1059",
"name": "Command and Scripting Interpreter"
}
]
}
}
],
"time": "string",
"sensor": {
"id": "SophosSensorID",
"type": "cloud",
"source": "Sophos",
"version": "1.18.1",
"name": "string"
}
},
"assignee": {
"id": "string",
"type": "user",
"name": "string",
"accountType": "partner",
"accountId": "00000000-0000-0000-0000-000000000000"
},
"assignedAt": "2026-07-28T00:00:00Z",
"overview": "string",
"detectionCount": 0,
"verdict": "falsePositive",
"escalated": true
}
],
"pages": {
"current": 0,
"size": 0,
"total": 0,
"items": 0,
"maxSize": 0
}
}
See the guide for a narrative walkthrough of this API.