Get an asset
GEThttps://api.fortwatch.ai/app/assets/{id}
One asset with its severity breakdown, open issues, scan schedules, detected technologies and, when its site sends visitors to a host its proof does not cover, which host.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | integer |
Example request
curl -X GET "https://api.fortwatch.ai/app/assets/42" \
-H "Authorization: Bearer $FORTWATCH_API_KEY"Response 200
The request succeeded.
| Field | Type | Description |
|---|---|---|
idrequired | number | |
projectIdrequired | number | |
namerequired | string | null | |
typerequired | string | |
valuerequired | string | |
statusrequired | string | |
canonicalUrlrequired | string | null | |
resolvedIprequired | string | null | |
cdnProviderrequired | string | null | |
bucketProviderrequired | string | null | |
lastCheckedAtrequired | string (date-time) | null | |
failReasonrequired | string | null | |
skippedRedirectHostrequired | string | null | |
disabledScannerTypesrequired | string[] | |
portScanModerequired | string | |
nucleiMinSeverityrequired | string | |
ownershipVerifiedAtrequired | string (date-time) | null | |
ownershipTokenrequired | string | |
ownershipMethodrequired | string | null | |
createdAtrequired | string (date-time) | |
updatedAtrequired | string (date-time) | |
projectrequired | object | |
scansrequired | object[] | |
scanSchedulesrequired | object[] | |
attentionReasonsrequired | string[] | |
lastCompletedScanAtrequired | string (date-time) | null | |
staleAfterDaysrequired | number | |
severityCountsrequired | object | |
criticalrequired | number | |
highrequired | number | |
mediumrequired | number | |
lowrequired | number | |
inforequired | number | |
issuesrequired | object[] | |
totalFindingsrequired | number | |
openPortsrequired | object[] | |
portrequired | number | |
protocolrequired | string | |
servicerequired | string | |
versionrequired | object | null | |
severityrequired | string | |
namerequired | string | |
latestFindingsrequired | object[] | |
technologiesrequired | object[] | |
findingTrendrequired | object[] | |
scanIdrequired | number | |
daterequired | string (date-time) | |
totalrequired | number | |
criticalrequired | number | |
highrequired | number | |
mediumrequired | number | |
lowrequired | number | |
detectedOsrequired | object | null | |
issueSummaryrequired | object | |
openrequired | number | |
resolvedrequired | number | |
dismissedrequired | number | |
totalrequired | number | |
lowOpenrequired | number | |
lowResolvedrequired | number | |
daysMonitoredrequired | number | |
latestScreenshotrequired | object | null | |
scannerSummaryrequired | object[] | |
scannerrequired | string | |
countrequired | number | |
remediationProgressrequired | object[] | |
weekrequired | string (date) | |
openedrequired | number | |
resolvedrequired | number | |
skippedRedirectrequired | object | |
hostrequired | string | |
assetIdrequired | number | null | The workspace's asset for that host or its www twin |
assetValuerequired | string | null | That asset's value: the host or its www twin |
assetVerifiedrequired | boolean | That asset is proven, so it is scanned on its own |
signInServicerequired | boolean | A well-known sign-in service, which the customer cannot add |
underAssetrequired | boolean | A name under the asset, which a DNS proof of the asset covers |
{
"id": 42,
"projectId": 42,
"name": "Production",
"type": "string",
"value": "app.example.com",
"status": "string",
"canonicalUrl": "string",
"resolvedIp": "string",
"cdnProvider": "string",
"bucketProvider": "string",
"lastCheckedAt": "2026-10-16T12:00:00.000Z",
"failReason": "string",
"skippedRedirectHost": "string",
"disabledScannerTypes": [
"string"
],
"portScanMode": "string",
"nucleiMinSeverity": "string",
"ownershipVerifiedAt": "2026-10-16T12:00:00.000Z",
"ownershipToken": "string",
"ownershipMethod": "string",
"createdAt": "2026-10-16T12:00:00.000Z",
"updatedAt": "2026-10-16T12:00:00.000Z",
"project": {},
"scans": [
{}
],
"scanSchedules": [
{}
],
"attentionReasons": [
"string"
],
"lastCompletedScanAt": "2026-10-16T12:00:00.000Z",
"staleAfterDays": 1,
"severityCounts": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"info": 1
},
"issues": [
{}
],
"totalFindings": 1,
"openPorts": [
{
"port": 1,
"protocol": "string",
"service": "string",
"version": {},
"severity": "string",
"name": "Production"
}
],
"latestFindings": [
{}
],
"technologies": [
{}
],
"findingTrend": [
{
"scanId": 42,
"date": "2026-10-16T12:00:00.000Z",
"total": 1,
"critical": 1,
"high": 1,
"medium": 1,
"low": 1
}
],
"detectedOs": {},
"issueSummary": {
"open": 1,
"resolved": 1,
"dismissed": 1,
"total": 1,
"lowOpen": 1,
"lowResolved": 1
},
"daysMonitored": 1,
"latestScreenshot": {},
"scannerSummary": [
{
"scanner": "string",
"count": 1
}
],
"remediationProgress": [
{
"week": "string",
"opened": 1,
"resolved": 1
}
],
"skippedRedirect": {
"host": "app.example.com",
"assetId": 42,
"assetValue": "string",
"assetVerified": true,
"signInService": true,
"underAsset": true
}
}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.