Get an issue
GEThttps://api.fortwatch.ai/app/issues/{id}
The issue with its latest finding, detection history, proof, how to reproduce it, and its comments.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | integer |
Example request
curl -X GET "https://api.fortwatch.ai/app/issues/42" \
-H "Authorization: Bearer $FORTWATCH_API_KEY"Response 200
The request succeeded.
| Field | Type | Description |
|---|---|---|
idrequired | number | |
workspaceIdrequired | number | |
assetIdrequired | number | |
titlerequired | string | |
descriptionrequired | string | null | |
severityrequired | string | |
statusrequired | string | |
templateIdrequired | string | null | |
dedupKeyrequired | string | |
assignedTorequired | number | null | |
resolutionrequired | string | null | |
resolvedByrequired | string | null | |
resolvedByScanIdrequired | number | null | |
resolvedByUserIdrequired | number | null | |
dismissedByUserIdrequired | number | null | |
categoryrequired | string | |
dueDaterequired | string (date-time) | null | |
resolvedAtrequired | string (date-time) | null | |
lastReopenedAtrequired | string (date-time) | null | |
dismissReasonrequired | string | null | |
dismissNotesrequired | string | null | |
dismissExpiresAtrequired | string (date-time) | null | |
firstSeenAtrequired | string (date-time) | |
lastSeenAtrequired | string (date-time) | |
lastCheckedAtrequired | string (date-time) | null | |
reachabilityrequired | string | |
verificationScanIdrequired | number | null | |
verificationSkippedrequired | string | null | |
createdAtrequired | string (date-time) | |
updatedAtrequired | string (date-time) | |
latestFindingrequired | object | null | |
detectionHistoryrequired | object[] | |
idrequired | number | |
scanIdrequired | object | null | |
createdAtrequired | string (date-time) | |
totalDetectionsrequired | number | |
cdnFrontingrequired | object[] | |
assetrequired | string | |
namerequired | string | |
sourcerequired | string | |
commentsrequired | object[] | |
idrequired | number | |
bodyrequired | string | |
authorNamerequired | string | |
userIdrequired | object | null | |
createdAtrequired | string (date-time) | |
editedAtrequired | string (date-time) | null | |
proofrequired | object | null | |
reproducerequired | object | null | |
vantagerequired | object | null | |
rawrequired | object | |
evidencerequired | object | null | |
verificationrequired | object | |
statusrequired | string | One of: queued, running, done, failed, skipped |
scanIdrequired | number | null | |
reasonrequired | string | null | Why no re-check started: limit, asset_not_active, ownership_unverified, error |
nextScheduledAtrequired | string (date-time) | null | The asset's next scheduled scan, when no re-check started |
{
"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",
"latestFinding": {},
"detectionHistory": [
{
"id": 42,
"scanId": {},
"createdAt": "2026-10-16T12:00:00.000Z"
}
],
"totalDetections": 1,
"cdnFronting": [
{
"asset": "string",
"name": "Production",
"source": "string"
}
],
"comments": [
{
"id": 42,
"body": "string",
"authorName": "string",
"userId": {},
"createdAt": "2026-10-16T12:00:00.000Z",
"editedAt": "2026-10-16T12:00:00.000Z"
}
],
"proof": {},
"reproduce": {},
"vantage": {},
"raw": {},
"evidence": {},
"verification": {
"status": "queued",
"scanId": 42,
"reason": "string",
"nextScheduledAt": "2026-10-16T12:00:00.000Z"
}
}Errors
400 | The request is not valid: a field is missing or has the wrong shape (the message names it). |
401 | No valid credentials: the API key or access token is missing, revoked or expired (INVALID_API_KEY, INVALID_TOKEN). |
403 | Not allowed: the key or token lacks this scope (SCOPE_REQUIRED), the route is dashboard-only (SESSION_REQUIRED), or a plan limit applies. |
404 | Not found in your workspace. |
429 | Too many requests (RATE_LIMITED): wait the seconds Retry-After gives. |
Every code is explained in Errors.