List RSKs (the canonical risk register).
const url = 'https://api.adversarial.com/api/v1/risks?created_after=2026-01-01&created_before=2026-12-31&updated_after=2026-01-01&updated_before=2026-12-31&discovered_after=2026-01-01&discovered_before=2026-12-31&in_report_period_after=2026-01-01&in_report_period_before=2026-12-31&overdue_as_of=2026-12-31T23%3A59%3A59Z&due_after=2026-01-01&due_before=2026-12-31&expected_after=2026-01-01&expected_before=2026-12-31&closed_after=2026-01-01&closed_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/risks?created_after=2026-01-01&created_before=2026-12-31&updated_after=2026-01-01&updated_before=2026-12-31&discovered_after=2026-01-01&discovered_before=2026-12-31&in_report_period_after=2026-01-01&in_report_period_before=2026-12-31&overdue_as_of=2026-12-31T23%3A59%3A59Z&due_after=2026-01-01&due_before=2026-12-31&expected_after=2026-01-01&expected_before=2026-12-31&closed_after=2026-01-01&closed_before=2026-12-31&page=1&page_size=50'Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Return only these risks. Accepts RSK-<n> or a bare number, matching
parent_id / child_id and the incident register’s id.
Keep only records that the given integration installations imported. Multiple values union.
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 discovered_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so discovered_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 discovered_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so discovered_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.
Start of a report window: restrict to the risks a deck report over the window describes — discovered within it, closed within it, or past a due date falling within it. Not the standing backlog: an open risk with no due date, or one due after the window, is outside it.
Inclusive, like every other date filter, alone or together with
in_report_period_before. A report over Q2 2026 is
in_report_period_after=2026-04-01 through
in_report_period_before=2026-06-30. An RFC 3339 timestamp in any UTC
offset (Z, -05:00) is used as given; a bare YYYY-MM-DD names a
whole UTC day.
Example
2026-01-01Overdue as of this instant, inclusive: due on or before it and not
closed by it. overdue=true stays “overdue right now”. RFC 3339 in any
UTC offset (Z, -05:00), or a bare YYYY-MM-DD meaning the last
instant of that day in UTC.
Example
2026-12-31T23:59:59ZMatch only risks whose due_date is unset. Mutually exclusive with
due_after/due_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 expected_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so expected_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 expected_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so expected_before=2026-04-30 includes
April 30.
Example
2026-12-31Match only risks whose expected_date is unset. Mutually exclusive
with expected_after/expected_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 closed_date (>=). A bare YYYY-MM-DD
covers its whole UTC day, so closed_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 closed_date (<=). A bare YYYY-MM-DD
covers its whole UTC day, so closed_before=2026-04-30 includes
April 30.
Example
2026-12-31Match only risks whose closed_date is unset. Mutually exclusive with
closed_after/closed_before.
Accepts UUIDs, the literal null (unassigned), and the sentinel
me (the calling user, resolved server-side). Multiple values
union — e.g. assigned_to=me&assigned_to=<uuid> returns rows
assigned to either.
Risks 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
risks that mention you plus risks that mention nobody.
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, likelihood, impact, urgency, initially_reported_urgency, delta, opened_by, assigned_to, updated_by, source, type, created_date, updated_date, discovered_date, due_date, expected_date, closed_date, remediation_task, control_statement, tags.
Sort by one field. An unknown field or direction returns 400.
Filter to overdue (true) or non-overdue (false) risks. Overdue
means open and past due_date.
Filter on what a risk is linked under. Accepts the literal null
(top-level risks), the literal any (only risks linked under a parent),
or a parent id as RSK-<n> or a bare number. Repeat the parameter to
union — ?parent_id=null&parent_id=any is every risk.
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 a risk. Accepts the literal any
(risks with at least one non-deleted child — the “Parent Risks Only”
quick filter), the literal null (risks with no children), or a child
id as RSK-<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.
Direction of an urgency shift between a risk’s initially-reported urgency and its current urgency.
Return only risks whose current urgency has shifted from the urgency
they were first reported at. Upgrade matches risks now at least one
level more severe; Downgrade matches those now at least one level
less severe. Omit to leave the filter off.
Responses
Section titled “Responses”List RSKs with register-context fields
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 Organization Risks (RSKs). A Risk plus the relational data
shown on the risk register: threat objectives, incident associations, tags, and
comment count.
object
Files attached to this risk, 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.
Count of comments on this risk (not the comments themselves).
Number of risks linked under this risk (i.e. children pointing at it).
A risk is itself a linked child when risk.parent_id is set.
The core view of an Organization Risk (RSK).
Relational data — threat objectives, comments, incident associations, and tags —
is exposed on RiskRegisterEntry, not here.
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 risk is linked under the named parent risk.
The status of a risk
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.
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_associations": "INC-00001", "risk": { "id": "RSK-00001", "impact": "Very Low", "initially_reported_urgency": "Critical", "likelihood": "Remote", "parent_id": "RSK-00001", "status": "New", "type": "Code", "urgency": "Info" }, "threat_objectives": [ { "relevance": "Moderate", "threat_objective": "Sabotage" } ] } ]}