// interfaces
Incidents
List infrastructure incidents, retrieve evidence, and update review status through the REST API and MCP.
Use an organization API key with Bearer authentication to handle Infrastructure incidents in your own workflows. Every operation is restricted to the key's organization. Incidents represent security-one threat assessments meeting the configured confidence threshold (default 0.8). Routine and inconclusive analysis results are excluded. A high-confidence threat with unknown impact can appear for review without sending a webhook. Later inconclusive results do not overwrite its detection evidence.
List incidents
GET /api/v1/incidents returns summaries ordered by latest activity, then ID,
both descending. The response contains data and pagination with limit,
offset, total, and has_more.
| Query parameter | Values |
|---|---|
limit |
Integer from 1 to 100; default 25 |
offset |
Integer from 0 to 1,000,000; default 0 |
triage_status |
new, triaging, in_review, resolved |
triage_resolution |
fixed, accepted_risk, false_positive, wont_fix |
severity |
unknown, low, medium, high, critical |
source_id |
Source UUID |
application_group |
Exact application group, up to 100 characters |
environment |
Exact environment, up to 50 characters |
q |
Literal search text, up to 1,000 characters |
Unknown or repeated query parameters return 400. Without filters, the list
includes all review states, including resolved incidents.
curl "$SUPERAGENT_URL/api/v1/incidents?triage_status=new&severity=high" \
-H "Authorization: Bearer $SUPERAGENT_API_KEY"Each summary includes the incident UUID, title, source ID and name, application
group, environment, behavior, severity, assessment status and revision,
triage_status, triage_resolution, triage_version, first/last seen timestamps,
and a relative dashboard_url opening its detail panel.
Get an incident
GET /api/v1/incidents/{incident_id} returns { "data": { ... } } with the
summary fields plus the security-one assessment, sanitized log evidence, and:
| Field | Contents |
|---|---|
triage |
Review status, resolution, version, update timestamp, and actor (user or api_key, with ID), or a null actor before review |
revisions |
Latest 50 assessment revisions, newest first |
review_history |
Latest 100 review changes, newest version first; includes actor type/ID, previous and new states, comment, and time |
webhook_deliveries |
Latest 50 webhook events, each with delivery status, attempt count, response status, and error |
history_limits |
The limits applied to those three collections |
Keys, webhook credentials, and private replay object paths are excluded. The collections are recent context, not an export of the complete audit history.
Update incident review
PATCH /api/v1/incidents/{incident_id} changes manual review state and returns
the full incident under data. Fetch the incident first and send its current
triage_version to protect against concurrent reviewers.
curl -X PATCH "$SUPERAGENT_URL/api/v1/incidents/$INCIDENT_ID" \
-H "Authorization: Bearer $SUPERAGENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"triage_status":"resolved","triage_resolution":"false_positive","triage_version":1,"comment":"Expected activity from our deployment."}'| Field | Requirement |
|---|---|
triage_status |
Required: new, in_review, or resolved |
triage_resolution |
Required for resolved: fixed, accepted_risk, false_positive, or wont_fix. Omit or use null for other states. |
triage_version |
Required positive integer from the latest list or detail response |
comment |
Optional audit comment, up to 2,000 characters |
triaging is an automated state and cannot be set manually. Resolving an
incident suppresses further webhook escalation for it until reopened. Review
updates preserve the security-one assessment, evidence, severity, and assessment
status. Each state change increments triage_version and records the validated
API key ID in immutable review history. The ID remains after key revocation.
Submitting the current state at the current version is a no-op; it does not
append a comment or audit record.
A stale version returns 409 with error code conflict; fetch the latest
incident, review the intervening changes, and retry with that version. Invalid
input returns 400, missing or revoked credentials return 401, and unknown
or other-organization IDs both return 404. Errors use the standard
{ "error": { "code": "...", "message": "..." } } envelope.
MCP tools
The MCP server exposes the same operations as list_incidents,
get_incident, and update_incident_triage. Use incident_id for the latter
two and the same filters and review fields as the REST API. For an update,
read the current version with get_incident before calling
update_incident_triage. Authentication supplies the organization and actor.