List incidents with associated components for the incident register
const url = 'https://api.adversarial.com/api/v1/incidents?created_after=2026-01-01&created_before=2026-12-31&updated_after=2026-01-01&updated_before=2026-12-31&detected_after=2026-01-01&detected_before=2026-12-31&occurred_after=2026-01-01&occurred_before=2026-12-31&responded_after=2026-01-01&responded_before=2026-12-31&contained_after=2026-01-01&contained_before=2026-12-31&page=1&page_size=50';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.adversarial.com/api/v1/incidents?created_after=2026-01-01&created_before=2026-12-31&updated_after=2026-01-01&updated_before=2026-12-31&detected_after=2026-01-01&detected_before=2026-12-31&occurred_after=2026-01-01&occurred_before=2026-12-31&responded_after=2026-01-01&responded_before=2026-12-31&contained_after=2026-01-01&contained_before=2026-12-31&page=1&page_size=50'Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Return only these incidents. Accepts INC-<n> or a bare number,
matching parent_id / child_id and the risk register’s id.
Keep only records that the given integration installations imported. Multiple values union.
Accepts UUIDs, the literal null (unassigned), and the sentinel
me (the calling user, resolved server-side). Multiple values
union.
Incidents with at least one live comment that @-mentions the given
user. Accepts UUIDs, the sentinel me (the calling user, resolved
server-side), and the literal null (no comment mentions anyone).
Multiple values union — e.g. mentioned=me&mentioned=null returns
incidents that mention you plus incidents that mention nobody.
One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on created_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so created_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on created_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so created_before=2026-04-30 includes
April 30.
Example
2026-12-31One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on updated_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so updated_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on updated_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so updated_before=2026-04-30 includes
April 30.
Example
2026-12-31One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on detected_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so detected_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on detected_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so detected_before=2026-04-30 includes
April 30.
Example
2026-12-31One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on occurred_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so occurred_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on occurred_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so occurred_before=2026-04-30 includes
April 30.
Example
2026-12-31Match only incidents whose occurred_date is unset. Mutually
exclusive with occurred_after/occurred_before.
One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on responded_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so responded_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on responded_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so responded_before=2026-04-30 includes
April 30.
Example
2026-12-31Match only incidents whose responded_date is unset. Mutually
exclusive with responded_after/responded_before.
One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive lower bound on contained_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so contained_after=2026-04-01 includes
April 1.
Example
2026-01-01One side of a date range: an RFC 3339 timestamp in any UTC offset, used as given, or a bare YYYY-MM-DD naming a whole UTC day.
Inclusive upper bound on contained_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so contained_before=2026-04-30 includes
April 30.
Example
2026-12-31Match only incidents whose contained_date is unset. Mutually
exclusive with contained_after/contained_before.
Filter on what an incident is linked under. Accepts the literal
null (top-level incidents), the literal any (only incidents linked
under a parent), or a parent id as INC-<n> or a bare number. Repeat
the parameter to union — ?parent_id=null&parent_id=any is every
incident.
Defaults to null, so registers and rollups list top-level records
only. An explicit JSON null on the body path reads as that same
default, not as “no filter”.
Filter on what is linked under an incident. Accepts the literal any
(incidents with at least one non-deleted child — the “Parent Incidents
Only” quick filter), the literal null (incidents with no children), or
a child id as INC-<n> or a bare number (that child’s parent). Repeat
to union. Omit to leave the filter off.
Because links are single-layer, every parent is top-level, so this
composes with the default parent_id=null register view.
1-indexed page number. Defaults to 1 (explicit null reads as the
default); zero is rejected.
Rows per page. Defaults to 50 (explicit null reads as the default);
zero is rejected.
Sort order: "<field>, asc|desc", e.g. "id, desc"; the direction defaults to desc. Fields: id, title, description, status, severity, source, opened_by, assigned_to, updated_by, created_date, updated_date, detected_date, occurred_date, responded_date, contained_date, tags.
Sort by one field. An unknown field or direction returns 400.
Responses
Section titled “Responses”List incidents
Paginated list envelope: { "results": [...], "pagination": {...} }.
object
Pagination metadata describing the slice.
object
1-indexed page number of this result slice.
Number of items requested per page.
Total number of matching items across all pages.
Total number of pages at this page size.
The items on this page.
Register row for an Incident. An Incident plus the relational data shown on
the incident register: risk associations, threat objectives, tags, and comment count.
object
Files attached to this incident, newest-first.
A file attached to a risk, an incident, or a comment on either.
Embedded in the attachments list of the record it is attached to, and
returned when a file is uploaded to a risk or incident.
object
File size in bytes.
MIME content type.
The user who uploaded the file, if known. On a comment’s attachments this can differ from the comment’s author: a comment may reference a file someone else uploaded to the same record.
When the file was uploaded.
The attachment’s id; download it with GET /v1/files/{id}.
Original file name as uploaded.
The file’s upload status. Attachments are only listed once their upload
has finished, so this is always ready.
Relationship, core incident information
object
A User as returned by the API.
Profile images are not embedded — clients fetch them from
GET /api/v1/{icon} when icon is Some.
object
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
A User as returned by the API.
Profile images are not embedded — clients fetch them from
GET /api/v1/{icon} when icon is Some.
object
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
When set, this incident is linked under the named parent incident.
Where the incident was reported from (e.g. “Employee Reported”). Always present.
The status of an incident
A User as returned by the API.
Profile images are not embedded — clients fetch them from
GET /api/v1/{icon} when icon is Some.
object
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
Number of incidents linked under this incident (i.e. children pointing at it).
An incident is itself a linked child when incident.parent_id is set.
object
A threat objective paired with how relevant it is to a risk.
Two relations are considered the same when the objective and its relevance
match; created_date records when the relation was last changed and is not
part of its identity.
Example
{ "results": [ { "attachments": [ { "status": "pending" } ], "incident": { "id": "INC-00001", "parent_id": "INC-00001", "severity": "SEV-5", "status": "New" }, "threat_objectives": [ { "relevance": "Moderate", "threat_objective": "Sabotage" } ] } ]}