FortWatchFortWatchDocs
Menu

List issues

GEThttps://api.fortwatch.ai/app/issues
Scope issues:readOperation ID listIssues

Issues, one per kind of problem and asset, with the asset, assignee, status, severity, reachability and SLA. Filter by status, severity, category, asset, project, reachability or text, and sort. Paged in the body (issues, total, page, limit): 100 by default, at most 500.

Parameters

NameInTypeDescription
statusquerystring
severityquerystring
categoryquerystring
assetIdqueryinteger
projectIdqueryinteger
reachabilityquerystring
qquerystring
sortquerystring
pagequerynumber
limitquerynumber

Example request

curl -X GET "https://api.fortwatch.ai/app/issues" \
  -H "Authorization: Bearer $FORTWATCH_API_KEY"

Response 200

The request succeeded.

FieldTypeDescription
issuesrequiredobject[]
idrequirednumber
workspaceIdrequirednumber
assetIdrequirednumber
titlerequiredstring
descriptionrequiredstring | null
severityrequiredstring
statusrequiredstring
templateIdrequiredstring | null
dedupKeyrequiredstring
assignedTorequirednumber | null
resolutionrequiredstring | null
resolvedByrequiredstring | null
resolvedByScanIdrequirednumber | null
resolvedByUserIdrequirednumber | null
dismissedByUserIdrequirednumber | null
categoryrequiredstring
dueDaterequiredstring (date-time) | null
resolvedAtrequiredstring (date-time) | null
lastReopenedAtrequiredstring (date-time) | null
dismissReasonrequiredstring | null
dismissNotesrequiredstring | null
dismissExpiresAtrequiredstring (date-time) | null
firstSeenAtrequiredstring (date-time)
lastSeenAtrequiredstring (date-time)
lastCheckedAtrequiredstring (date-time) | null
reachabilityrequiredstring
verificationScanIdrequirednumber | null
verificationSkippedrequiredstring | null
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
assigneerequiredobject
firstNamerequiredstring
lastNamerequiredstring
resolvedByUserrequiredobject
firstNamerequiredstring
lastNamerequiredstring
dismissedByUserrequiredobject
firstNamerequiredstring
lastNamerequiredstring
assetrequiredobject
idrequirednumber
namerequiredobject | null
valuerequiredstring
typerequiredstring
cdnProviderrequiredobject | null
projectrequiredobject
findingsrequiredobject[]
scannerrequiredstring
remediationrequiredobject | null
referencerequiredobject | null
matchedAtrequiredobject | null
scanIdrequiredobject | null
namerequiredstring
templateIdrequiredobject | null
_countrequiredobject
findingsrequirednumber
seenInLatestScanrequiredboolean
proofrequiredobject | null
reproducerequiredobject | null
vantagerequiredobject | null
verificationrequiredobject
statusrequiredstringOne of: queued, running, done, failed, skipped
scanIdrequirednumber | null
reasonrequiredstring | nullWhy no re-check started: limit, asset_not_active, ownership_unverified, error
nextScheduledAtrequiredstring (date-time) | nullThe asset's next scheduled scan, when no re-check started
totalrequirednumber
pagerequirednumber
limitrequirednumber
countsrequiredobject
currentrequirednumber
fixedrequirednumber
dismissedrequirednumber
totalrequirednumber
byStatusrequiredobject
openrequirednumber
in_progressrequirednumber
resolvedrequirednumber
dismissedrequirednumber
severityBreakdownrequiredobject
slaTargetsrequiredobject
criticalrequirednumber
highrequirednumber
mediumrequirednumber
lowrequirednumber
json
{
  "issues": [
    {
      "id": 42,
      "workspaceId": 42,
      "assetId": 42,
      "title": "string",
      "description": "string",
      "severity": "string",
      "status": "string",
      "templateId": "string",
      "dedupKey": "string",
      "assignedTo": 1,
      "resolution": "string",
      "resolvedBy": "string",
      "resolvedByScanId": 42,
      "resolvedByUserId": 42,
      "dismissedByUserId": 42,
      "category": "string",
      "dueDate": "2026-10-16T12:00:00.000Z",
      "resolvedAt": "2026-10-16T12:00:00.000Z",
      "lastReopenedAt": "2026-10-16T12:00:00.000Z",
      "dismissReason": "string",
      "dismissNotes": "string",
      "dismissExpiresAt": "2026-10-16T12:00:00.000Z",
      "firstSeenAt": "2026-10-16T12:00:00.000Z",
      "lastSeenAt": "2026-10-16T12:00:00.000Z",
      "lastCheckedAt": "2026-10-16T12:00:00.000Z",
      "reachability": "string",
      "verificationScanId": 42,
      "verificationSkipped": "string",
      "createdAt": "2026-10-16T12:00:00.000Z",
      "updatedAt": "2026-10-16T12:00:00.000Z",
      "assignee": {
        "firstName": null,
        "lastName": null
      },
      "resolvedByUser": {
        "firstName": null,
        "lastName": null
      },
      "dismissedByUser": {
        "firstName": null,
        "lastName": null
      },
      "asset": {
        "id": null,
        "name": {},
        "value": null,
        "type": null,
        "cdnProvider": {},
        "project": {}
      },
      "findings": [
        {}
      ],
      "_count": {
        "findings": null
      },
      "seenInLatestScan": true,
      "proof": {},
      "reproduce": {},
      "vantage": {},
      "verification": {
        "status": "queued",
        "scanId": null,
        "reason": null,
        "nextScheduledAt": null
      }
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 1,
  "counts": {
    "current": 1,
    "fixed": 1,
    "dismissed": 1,
    "total": 1,
    "byStatus": {
      "open": 1,
      "in_progress": 1,
      "resolved": 1,
      "dismissed": 1
    }
  },
  "severityBreakdown": {},
  "slaTargets": {
    "critical": 1,
    "high": 1,
    "medium": 1,
    "low": 1
  }
}

Errors

400The request is not valid: a field is missing or has the wrong shape (the message names it).
401No valid credentials: the API key or access token is missing, revoked or expired (INVALID_API_KEY, INVALID_TOKEN).
403Not allowed: the key or token lacks this scope (SCOPE_REQUIRED), the route is dashboard-only (SESSION_REQUIRED), or a plan limit applies.
429Too many requests (RATE_LIMITED): wait the seconds Retry-After gives.