List assets
GEThttps://api.fortwatch.ai/app/assets
Every asset of the workspace (domains, subdomains, IP addresses, cloud buckets) with its issue counts, ownership state and scan status. Filter by project, type or status.
Paged: send page and limit (100 by default, at most 500); the total is in X-Total-Count (paging).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
projectId | query | number | |
type | query | string | |
status | query | string | |
page | query | integer | The page, from 1. |
limit | query | integer | Rows per page: an API key or OAuth token gets 100 when it sends none, at most 500. |
Example request
curl -X GET "https://api.fortwatch.ai/app/assets?limit=100" \
-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 | |
idrequired | number | |
namerequired | string | |
colorrequired | string | |
scansrequired | object[] | |
idrequired | number | |
statusrequired | string | |
createdAtrequired | string (date-time) | |
_countrequired | object | |
rootDomainrequired | object | null | |
findingCountrequired | number | |
issueCountrequired | number | |
openBySeverityrequired | object | |
criticalrequired | number | |
highrequired | number | |
mediumrequired | number | |
lowrequired | number | |
highestIssueSeverityrequired | object | null | |
attentionReasonsrequired | string[] | |
lastCompletedScanAtrequired | string (date-time) | null | |
staleAfterDaysrequired | number |
[
{
"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": {
"id": 42,
"name": "Production",
"color": "string"
},
"scans": [
{
"id": null,
"status": null,
"createdAt": null
}
],
"_count": {},
"rootDomain": {},
"findingCount": 1,
"issueCount": 1,
"openBySeverity": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1
},
"highestIssueSeverity": {},
"attentionReasons": [
"string"
],
"lastCompletedScanAt": "2026-10-16T12:00:00.000Z",
"staleAfterDays": 1
}
]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. |
429 | Too many requests (RATE_LIMITED): wait the seconds Retry-After gives. |
Every code is explained in Errors.