Detection and incident API

Detection and incident API

Review detections and manage investigation ownership, state, and timeline.

Investigation write authority does not grant response execution or evidence access. Incident closure preserves outstanding containment and findings.

Use the shared API contract for authentication, pagination, request headers, idempotency, and error responses.

List detections

GET/organizations/{organization_id}/detections
Scope
incidents:read
Auth
Bearer API key

Returns source, times, severity, rule and feed revisions, evidence availability, and incident references. Standard limit and cursor apply. Unknown filters return 422.

Query parameters
asset_idstringoptional

Filter affected asset.

categorystringoptional

Installed detection category identifier.

dispositionstringoptional

Triage state.

one ofunreviewed, investigating, confirmed, benign, false_positive
200Result

Returns a data array and pagination.next_cursor. Entries include stable IDs and the resource fields described for this collection.

Review a detection

PATCH/organizations/{organization_id}/detections/{detection_id}
Scope
incidents:write
Auth
Bearer API key

Updates the detection disposition while preserving the original observation. Requires If-Match.

Request body
dispositionstringrequired

Requested triage state.

one ofinvestigating, confirmed, benign, false_positive
reasonstringrequired

Audited justification. Empty values are invalid.

rule1–2000 characters
200Result

Returns detection review state and new ETag.

Create an incident

POST/organizations/{organization_id}/incidents
Scope
incidents:write
Auth
Bearer API key

Creates an investigation. It does not contain targets or enable a playbook automatically.

Request body
titlestringrequired

Incident title.

rule1–120 characters
severitystringrequired

Initial priority.

one oflow, medium, high, critical
owner_idstringrequired

Responsible organization member.

asset_idsstring[]required

Existing assets visible to the caller; duplicates reject the request.

rule1–200 unique IDs
detection_idsstring[]optional

Existing visible observations to link.

default[]
visibilitystringoptional

Restricted incidents require explicit membership.

one ofrestricted, organizationdefaultrestricted
201Created

Returns incident ID, open state, linked observations, and ETag.

List incidents

GET/organizations/{organization_id}/incidents
Scope
incidents:read
Auth
Bearer API key

Returns visible incident summaries with owner, severity, state, and active response-control count. Standard limit and cursor apply. Unknown filters return 422.

Query parameters
statestringoptional

Investigation phase.

one ofopen, investigating, contained, recovering, closed
asset_idstringoptional

Filter affected asset.

200Result

Returns a data array and pagination.next_cursor. Entries include stable IDs and the resource fields described for this collection.

Read an incident

GET/organizations/{organization_id}/incidents/{incident_id}
Scope
incidents:read
Auth
Bearer API key

Returns linked detection, finding, evidence metadata, action IDs, timeline, and residual-control summary. Sensitive artifacts remain separately authorized.

200Result

Returns data and request_id.

Update an incident

PATCH/organizations/{organization_id}/incidents/{incident_id}
Scope
incidents:write
Auth
Bearer API key

Updates incident ownership or investigation state. Requires If-Match; contained requires reviewing incomplete actions. Closing requires a resolution and explicit residual-state acknowledgement.

Request body
statestringoptional

Requested investigation phase.

one ofopen, investigating, contained, recovering, closed
owner_idstringoptional

Replacement responsible member.

resolutionstringoptional

Required closure explanation.

rule1–2000 characters
acknowledge_residual_controlsbooleanoptional

Whether the caller acknowledges residual controls. true records acknowledgement; false leaves it unacknowledged and prevents closure with active controls or unresolved findings.

defaultfalse
200Result

Returns the updated incident and ETag. No isolation release or finding resolution occurs.

Append a timeline note

POST/organizations/{organization_id}/incidents/{incident_id}/notes
Scope
incidents:write
Auth
Bearer API key

Appends an attributable note. Original observations remain immutable.

Request body
bodystringrequired

Factual update; distinguish hypotheses and avoid secrets.

rule1–10000 characters
occurred_attimestampoptional

Optional event time; omission uses creation time. Creation time is always separately recorded.

201Created

Returns note ID, author, event time, and creation time.