Get scans

Returns one scan together with every finding on it, so the detail view is one round-trip rather than a list call per scan.

GET /v1/security/scans/{id}

Addresshttps://api.hanzo.ai/v1/security/scans/{id}
MethodGET
Operationget_security_scans_by_id
AuthAuthorization: Bearer $HANZO_API_KEY

Returns one scan together with every finding on it, so the detail view is one round-trip rather than a list call per scan. The findings carry masked previews and fingerprints, never secrets.

Scoped to the caller's org: a scan id belonging to another org is the same 404 as an id that never existed, so a ruleset learns nothing about what exists elsewhere. No validated org is refused.

Request

1 field.

FieldInTypeRequiredDescription
idpathstringyesID is the scan the URL names.

Response

StatusBodyMeaning
200security.scanDetailok
defaultproblem-detailsrefused

200 body — 21 fields.

FieldInTypeAlwaysDescription
findingsbodysecurity.findingView[]—Findings is every finding on that scan, so the detail view is one round-trip.
findings[].createdAtbodyinteger (int64)—CreatedAt is when the finding was recorded, in Unix milliseconds.
findings[].fingerprintbodystring—Fingerprint is the SHA-256 of the raw secret.
findings[].idbodystring—ID addresses this finding.
findings[].linebodyinteger (int64)—Line is where in that file.
findings[].pathbodystring—Path is the file the secret was found in.
findings[].previewbodystring—Preview is the secret MASKED — first and last characters kept, the middle starred — so a reviewer can recognise it without it being disclosed.
findings[].ruleIdbodystring—RuleID is the detection rule that fired.
findings[].ruleNamebodystring—RuleName is that rule's human name.
findings[].scanIdbodystring—ScanID is the scan that produced it.
findings[].severitybodystring—Severity ranks the finding: critical, high, medium or low.
scanbodysecurity.scanView—
scan.createdAtbodyinteger (int64)—CreatedAt is when the scan ran, in Unix milliseconds.
scan.criticalbodyinteger (int64)—Critical is how many findings carry the highest severity.
scan.filesbodyinteger (int64)—Files is how many files the scan read.
scan.findingsbodyinteger (int64)—Findings is how many secrets fired across them.
scan.highbodyinteger (int64)—High is how many findings rank high.
scan.idbodystring—ID addresses this scan and every finding on it.
scan.lowbodyinteger (int64)—Low is how many findings rank low.
scan.mediumbodyinteger (int64)—Medium is how many findings rank medium.
scan.projectbodystring—Project is the sub-scope the scan was filed under.

Failure carries the platform error shape — see Errors.

Examples

hanzo security scans get <id>
import { Configuration, SecurityApi } from 'hanzoai';

const api = new SecurityApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getSecurityScansById({ id: 'id' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import SecurityApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = SecurityApi(client).get_security_scans_by_id(id='id')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.SecurityAPI.GetSecurityScansById(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, security_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = security_api::get_security_scans_by_id(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.SecurityApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new SecurityApi(client).getSecurityScansById();
curl https://api.hanzo.ai/v1/security/scans/<id> \
  -H "Authorization: Bearer $HANZO_API_KEY"

MCP reaches security through the security tool, which names its 7 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_security_findings"
         }
       }
     }'

Security API · All Hanzo APIs · Interactive reference

Was this page useful?