SBOMs & Scanning API

Upload SBOMs, download files, trigger CVE scans, and list vulnerabilities via the API.

Manage Software Bills of Materials and vulnerability scanning programmatically.

Upload an SBOM

POST /api/sboms/upload

Scope: sboms:write

Request body:

FieldTypeRequiredDescription
releaseIduuidYesID of the release to attach the SBOM to
contentstringYesSBOM JSON content as a string (max 10 MB)
fileNamestringNoOriginal file name (max 255 chars)

The SBOM format (CycloneDX or SPDX) is auto-detected from the content. A match job is automatically created for CVE scanning.

Example:

curl -X POST \
  -H "Authorization: Bearer cvk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "releaseId": "uuid-of-release",
    "content": "{\"bomFormat\":\"CycloneDX\",...}",
    "fileName": "my-app-sbom.json"
  }' \
  https://cis.cveium.com/api/sboms/upload

Returns 201 with the SBOM metadata including id, format, component_count, and file_hash.

Download an SBOM

GET /api/sboms/{id}/download

Scope: sboms:read

Returns the raw SBOM file with appropriate headers:

HeaderDescription
Content-Typeapplication/vnd.cyclonedx+json or application/spdx+json
Content-Dispositionattachment; filename="original-filename.json"
X-Content-HashSHA-256 hash for integrity verification (if available)

Trigger CVE Scan

POST /api/cve-scan

Scope: cve:trigger

Request body:

FieldTypeRequiredDescription
sbomIduuidYesID of the SBOM to scan

Triggers a CVE scan that matches SBOM components against the vulnerability corpus. The scan runs synchronously within this request — results are immediately available via GET /api/sboms/{id}/vulnerabilities after the call returns. Returns 202 (Accepted).

Example:

curl -X POST \
  -H "Authorization: Bearer cvk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sbomId": "uuid-of-sbom"}' \
  https://cis.cveium.com/api/cve-scan

List Vulnerabilities

GET /api/sboms/{id}/vulnerabilities

Scope: vulnerabilities:read

Returns all CVEs matched to the SBOM's components, along with their current disposition (if any).

Query parameters

ParameterTypeDescription
severitystringFilter by severity: critical, high, medium, low, none
statusstringFilter by disposition: affected, not_affected, fixed, under_investigation, undisposed

Response

The response includes a summary alongside the vulnerability data:

{
  "data": [
    {
      "id": "vuln-uuid",
      "cve_id": "CVE-2021-44228",
      "component_name": "log4j-core",
      "component_version": "2.14.1",
      "severity": "CRITICAL",
      "cvss_v3_score": 10.0,
      "epss_score": 0.9756,
      "is_kev": true,
      "disposition": {
        "id": "disp-uuid",
        "status": "affected",
        "response": "update"
      }
    }
  ],
  "summary": {
    "total": 23,
    "affected": 2,
    "notAffected": 15,
    "fixed": 3,
    "underInvestigation": 1,
    "withoutDisposition": 2
  }
}

Each vulnerability includes CVSS scores (v2, v3, v4), EPSS score and percentile, KEV (Known Exploited Vulnerability) status, CWEs, affected/fixed versions, and match confidence.

Example:

curl -H "Authorization: Bearer cvk_YOUR_KEY" \
  "https://cis.cveium.com/api/sboms/{sbom-id}/vulnerabilities?severity=critical"