curl --request GET \
--url https://api.secfix.com/v1/inventory/assets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.secfix.com/v1/inventory/assets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.secfix.com/v1/inventory/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.secfix.com/v1/inventory/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.secfix.com/v1/inventory/assets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.secfix.com/v1/inventory/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secfix.com/v1/inventory/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pageInfo": {
"endCursor": "AgAAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"hasNextPage": true,
"hasPreviousPage": false,
"pageCount": 25,
"startCursor": "AgEAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"totalCount": 312
},
"results": [
{
"accountId": "123456789012",
"auditStatus": "INCOMPLETE",
"categoryKey": "CLOUD",
"classification": "CONFIDENTIAL",
"createdAt": "2026-01-15T09:30:00.000Z",
"customIdentifier": "i-0abc123def456",
"dataStored": {
"containsPatientData": false,
"containsUserData": true,
"userDataInfo": "Customer contact records"
},
"description": "Primary production web server.",
"email": "jane.doe@example.com",
"externalAssetId": "CI-1042",
"externalSource": "servicenow-cmdb",
"id": "3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"lastCheckedAt": "2026-06-30T02:00:00.000Z",
"name": "prod-web-01",
"osVersion": "macOS 14.5",
"ownerId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"ownerSource": "MANUAL",
"ownerStatus": "COMPLETE",
"region": "eu-central-1",
"serialNumber": "C02XY1234ABC",
"tags": [
{
"key": "environment",
"readOnly": false,
"value": "production"
}
],
"type": "SERVER"
}
]
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}List assets
Returns assets from every inventory category. Assets hidden in the Secfix app and deleted assets arenβt returned. Filters combine with AND. Requires the all:read scope.
curl --request GET \
--url https://api.secfix.com/v1/inventory/assets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.secfix.com/v1/inventory/assets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.secfix.com/v1/inventory/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.secfix.com/v1/inventory/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.secfix.com/v1/inventory/assets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.secfix.com/v1/inventory/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secfix.com/v1/inventory/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pageInfo": {
"endCursor": "AgAAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"hasNextPage": true,
"hasPreviousPage": false,
"pageCount": 25,
"startCursor": "AgEAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"totalCount": 312
},
"results": [
{
"accountId": "123456789012",
"auditStatus": "INCOMPLETE",
"categoryKey": "CLOUD",
"classification": "CONFIDENTIAL",
"createdAt": "2026-01-15T09:30:00.000Z",
"customIdentifier": "i-0abc123def456",
"dataStored": {
"containsPatientData": false,
"containsUserData": true,
"userDataInfo": "Customer contact records"
},
"description": "Primary production web server.",
"email": "jane.doe@example.com",
"externalAssetId": "CI-1042",
"externalSource": "servicenow-cmdb",
"id": "3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"lastCheckedAt": "2026-06-30T02:00:00.000Z",
"name": "prod-web-01",
"osVersion": "macOS 14.5",
"ownerId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"ownerSource": "MANUAL",
"ownerStatus": "COMPLETE",
"region": "eu-central-1",
"serialNumber": "C02XY1234ABC",
"tags": [
{
"key": "environment",
"readOnly": false,
"value": "production"
}
],
"type": "SERVER"
}
]
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}Authorizations
Access token from POST /oauth/token.
Query Parameters
Results per page, 1-100. Defaults to 25.
The startCursor or endCursor from a previous page of this list. Send the same filters as on that page. Leave it out for the first page.
Return only assets in this category. Leave it out for all categories.
CLOUD, COMPUTER, CUSTOM, INFORMATION, EMPLOYEE Return only assets of this sub-type, such as CLOUD_STORAGE_BUCKET. It's the value an asset returns in categoryKey. If you also send categoryKey, the sub-type must belong to it.
CLOUD, CLOUD_AUTOSCALE_GROUPS, CLOUD_COMPUTE_INSTANCE, CLOUD_CONTAINER_REPOSITORY, CLOUD_DATA_WAREHOUSE, CLOUD_LOAD_BALANCER, CLOUD_NO_SQL_DATABASE, CLOUD_PAAS_APPS, CLOUD_QUEUE, CLOUD_RELATIONAL_DATABASE, CLOUD_STORAGE_BUCKET, CLOUD_OTHER, COMPUTER, CUSTOM, INFORMATION, EMPLOYEE true returns assets with an owner, false assets without one.
true returns assets with a description, false assets without one.
Return only assets with this data classification.
RESTRICTED, CONFIDENTIAL, INTERNAL, PUBLIC, UNKNOWN Same as hasOwner: COMPLETE returns assets with an owner, INCOMPLETE assets without one.
COMPLETE, INCOMPLETE Return only assets with this audit status, as shown in the Secfix app. COMPLETE means every field the category needs for an audit is set. Assets without an audit status match neither value.
COMPLETE, INCOMPLETE Return only assets created through the API with this externalSource.
Return only the asset with this externalAssetId. Requires externalSource.