---
title: "Get scan results"
method: GET
path: "/scan/v3/results/{scan_id}"
tags: ["Model Scanner SaaS", "Model Scanner Hybrid"]
---

# Get scan results

`GET /scan/v3/results/{scan_id}`

## Response `200`

Successful response

- ScanReportOfRecordV3 — A scan report with all of its details.
  - `has_genealogy` boolean — if there is model geneaology info available
  - `version` string, required — scanner version
  - `$schema_version` string — version of the scan report schema format
  - `scan_id` string, required — unique identifier for the scan
  - `start_time` string, date-time, required — time the scan started
  - `end_time` string, date-time — time the scan ended
  - `status` 'pending' | 'running' | 'done' | 'failed' | 'canceled', required — status of the scan
  - `inventory` ScanModelInventoryComboV3, required
    - `model_name` string, required — name of the model
    - `model_version` string — version of the model
    - `model_source` string — source (provider) info
    - `requested_scan_location` string, required — Location to be scanned
    - `file_location` string — URL or path to the model files, if available
    - `provider_details` ProviderDetails
      - `provider` 'AWS_BEDROCK' | 'AWS_SAGEMAKER' | 'AZURE_AI_FOUNDRY' | 'AZURE_ML' | 'DATABRICKS', required
      - `provider_model_id` string, required — The provider's unique identifier for the model. Examples: - AWS Bedrock: "anthropic.claude-3-5-sonnet-20241022-v2:0" - Azure AI Foundry: "Claude-3-5-Sonnet"
      - `model_arn` string — Optional full ARN or resource identifier for the model. Used for provisioned models, custom deployments, or cross-account access.
      - `country` string — Optional country code (ISO 3166-1 alpha-2) for the location where the model provider is primarily based.
    - `asset_region` string — Region of discovered asset
    - `asset_id` string, uuid — Identifier of discovered asset
    - `requesting_entity` string — Entity that requested the scan
    - `request_source` 'Hybrid Upload' | 'API Upload' | 'Integration' | 'UI Upload' | 'AI Asset Discovery' — Identifies the system that requested the scan
    - `origin` string — Specifies the platform or service where the model originated before being scanned
    - `model_id` string, required — Unique identifier for the model
    - `model_version_id` string, required — unique identifier for the model version
  - `intelligence` ModelIntelligence — Intelligence metadata about a model including origin, licensing, and usage policies
    - `geographic_footprint` string[] — List of countries where the model originated
    - `country_of_origin` string — ISO 3166-1 alpha-2 country code of the model's primary origin
    - `contributor_trust_level` string — Trust level of the model contributor
    - `licenses` ModelLicense[] — List of licenses associated with the model
      - `name` string, required — Name of the license
      - `sha256` string, required — SHA256 hash of the license file
    - `usage_policies` ModelUsagePolicy[] — List of usage policies associated with the model
      - `name` string, required — Name of the usage policy
      - `sha256` string, required — SHA256 hash of the policy document
  - `summary` object, required
    - `severity` 'critical' | 'high' | 'medium' | 'low' | 'unknown' | 'safe' — The highest severity of any detections on the scan, including "safe". Use `.summary.highest_severity` instead.
    - `highest_severity` 'critical' | 'high' | 'medium' | 'low' | 'none' | 'unknown' — The highest severity of any detections on the scan.
    - `detection_count` integer — total number of detections found
    - `advisory_count` integer — total number of advisories found
    - `file_count` integer — total number of files scanned
    - `files_with_detections_count` integer — number of files that contain detections
    - `detection_categories` string[] — list of unique detection categories found
    - `advisory_categories` string[] — list of unique advisory categories found
    - `files_failed_to_scan` integer — number of files that failed during scanning
    - `unknown_files` integer — number of files with unknown file type
  - `compliance` object
    - `status` 'COMPLIANT' | 'NONCOMPLIANT'
    - `evaluated_at` string, date-time — The datetime when the rule set was evaluated against the scan result
    - `rule_set_ids` string[] — A list of non-default rule sets that were used when evaluating the scan result
  - `file_results` ScanFileResultV3[]
    - `file_instance_id` string, required — unique ID of the file
    - `file_location` string, required — full file path
    - `start_time` string, date-time, required — time the scan started
    - `end_time` string, date-time, required — time the scan ended
    - `details` FileDetailsV3, required
      - `estimated_time` string, required — estimated time to scan the file
      - `md5` string — hexadecimal md5 hash of file
      - `sha256` string, required — hexadecimal sha256 hash of file
      - `tlsh` string — TLSH hash of file
      - `file_size` string — size of the file in human readable format
      - `file_size_bytes` integer — size of the file in bytes
      - `file_type` string, required — type of the file
      - `file_type_details` union
        - object
          - `subtype` string[], required
        - object
          - `subtype` string[], required
          - `keras_version` string — version of the Keras file
          - `pickle_modules` string[], required
          - `keras_class_name` string
          - `keras_date_saved_at` string
          - `keras_module` string
        - object
          - `subtype` string[], required
          - `numpy_arrays` string, required
          - `numpy_shape` string[], required
        - object
          - `subtype` string[], required
          - `rds_encoding` string, required — encoding of the RDS file
          - `rds_min_reader_version` string, required — minimum reader version for the RDS file
          - `rds_version` string, required — version of the RDS file
          - `rds_writer_version` string, required — version of the RDS writer
    - `status` 'skipped' | 'pending' | 'running' | 'done' | 'failed' | 'canceled', required — status of the scan
    - `seen` string, date-time, required — time the scan was seen at
    - `detections` ScanDetectionV3[], required
      - `detection_id` string, uuid, required — unique identifier for the detection
      - `rule_id` string, required — unique identifier for the rule that sourced the detection
      - `risk` 'MALICIOUS' | 'SUSPICIOUS', required — detection risk
      - `category` string, required — Vulnerability category for the detection
      - `description` string, required — detection description
      - `likelihood` string, required — detection likelihood
      - `impact` string, required — detection impact
      - `severity` 'critical' | 'high' | 'medium' | 'low', required — The severity of the detection.
      - `rule_details` object[]
        - `status` 'created' | 'deprecated' | 'updated' | 'superseded' — status
        - `status_at` string, date-time — date-time when the details entry was created
        - `description` string — description of the deprecation
      - `mitre_atlas` object[], required
        - `technique` string — MITRE Atlas Technique
        - `tactic` string — MITRE Atlas Tactic
      - `owasp` string[], required
      - `cve` string[], required
      - `cwe` string, required
      - `cwe_href` string, required — CWE URL for the detection
      - `technical_blog_hrefs` string[] — Hiddenlayer Technical Blog URLs for the detection
      - `technical_blog_href` string — Hiddenlayer Technical Blog URL for the detection
    - `advisories` ScanAdvisoryV3[] — informational advisories associated with this file (e.g. tokenizer family)
      - `advisory_id` string, uuid, required — unique identifier for the advisory
      - `rule_id` string, required — unique identifier for the rule that sourced the advisory
      - `category` string, required — category for the advisory
      - `description` string, required — advisory description
    - `file_error` string[] — Error messages returned by the scanner
  - `file_count` integer, required — number of files scanned; use `.summary.file_count` instead
  - `files_with_detections_count` integer, required — number of files with detections found; use `.summary.files_with_detections_count` instead
  - `detection_count` integer, required — number of detections found; use `.summary.detection_count` instead
  - `detection_categories` string[] — list of detection categories found; use `.summary.detection_categories` instead
  - `severity` 'critical' | 'high' | 'medium' | 'low' | 'unknown' | 'safe' — The highest severity of any detections on the scan, including "safe". Use `.summary.highest_severity` instead.

## Other responses

- `400` — The request failed due to a client error, with one or more of the following possible causes: 1. The request required a tenant_id field, which was missing. 2. The request was malformed syntactically or semantically.
- `404` — The specified resource was not found.

---

[API](https://skmtc.net/hiddenlayerai/apis/hiddenlayer-audit-api.md) · [All operations](https://skmtc.net/hiddenlayerai/apis/hiddenlayer-audit-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hiddenlayerai/hiddenlayer-audit-api/revisions/efca861e915b/schema)
