Get findings

Returns a single finding: which rule fired, where (path and line), the masked preview and the SHA-256 fingerprint of the secret — the raw secret is not stored and cannot be read back.

GET /v1/security/findings/{id}

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

Returns a single finding: which rule fired, where (path and line), the masked preview and the SHA-256 fingerprint of the secret — the raw secret is not stored and cannot be read back.

Scoped to the caller's org, and a finding belonging to another org is the same 404 as one that never existed.

Request

1 field.

FieldInTypeRequiredDescription
idpathstringyesID is the finding the URL names.

Response

StatusBodyMeaning
200security.findingViewok
defaultproblem-detailsrefused

200 body — 10 fields.

FieldInTypeAlwaysDescription
createdAtbodyinteger (int64)—CreatedAt is when the finding was recorded, in Unix milliseconds.
fingerprintbodystring—Fingerprint is the SHA-256 of the raw secret.
idbodystring—ID addresses this finding.
linebodyinteger (int64)—Line is where in that file.
pathbodystring—Path is the file the secret was found in.
previewbodystring—Preview is the secret MASKED — first and last characters kept, the middle starred — so a reviewer can recognise it without it being disclosed.
ruleIdbodystring—RuleID is the detection rule that fired.
ruleNamebodystring—RuleName is that rule's human name.
scanIdbodystring—ScanID is the scan that produced it.
severitybodystring—Severity ranks the finding: critical, high, medium or low.

Failure carries the platform error shape — see Errors.

Examples

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

const api = new SecurityApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getSecurityFindingsById({ 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_findings_by_id(id='id')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.SecurityAPI.GetSecurityFindingsById(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_findings_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).getSecurityFindingsById();
curl https://api.hanzo.ai/v1/security/findings/<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?