Scans
A scan represents a single execution of the HarborGuard scanner pipeline against one container image tag. Scans are queued asynchronously and complete with vulnerability findings, an SBOM, package list, layer breakdown, and a compliance grade.
Base path: /api/scans
| Method | Path | Min role | Rate limit |
|---|---|---|---|
| GET | /api/scans | developer | — |
| POST | /api/scans | developer | 10 / min |
| GET | /api/scans/{scanId} | viewer (any) | — |
| GET | /api/scans/{scanId}/status | viewer (any) | — |
| DELETE | /api/scans/{scanId} | admin | — |
| POST | /api/scans/upload | API key only | — |
The POST /api/scans/upload endpoint is used by HarborGuard sensors deployed inside customer networks to deliver scan envelopes to the control plane. Requires an API key (sensor-scoped); session and PAT auth are rejected. See Sensors for setup.
scansAuthorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
next-auth.session-token<token>
NextAuth session cookie. Web only — set automatically at sign-in. Not usable for server-to-server.
In: cookie
Query Parameters
pageinteger
Page number (1-indexed)
1Minimum: 1limitinteger
Page size (1–200)
50Minimum: 1Maximum: 200sortstring
Sort spec, e.g. scannedAt:desc. Sortable: scannedAt, status, compliance, riskScore.
statusstring
"QUEUED" | "IN_PROGRESS" | "COMPLETE" | "FAILED" | "CANCELLED"searchstring
OK
scansAuthorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
next-auth.session-token<token>
NextAuth session cookie. Web only — set automatically at sign-in. Not usable for server-to-server.
In: cookie
Request Body
application/jsonRequiredbodyRequiredobject | object
Accepted (all scans queued)
scans/{scanId}Authorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
next-auth.session-token<token>
NextAuth session cookie. Web only — set automatically at sign-in. Not usable for server-to-server.
In: cookie
Path Parameters
scanIdRequiredstring
OK
scans/{scanId}/statusAuthorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
next-auth.session-token<token>
NextAuth session cookie. Web only — set automatically at sign-in. Not usable for server-to-server.
In: cookie
Path Parameters
scanIdRequiredstring
OK
scans/{scanId}Authorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
next-auth.session-token<token>
NextAuth session cookie. Web only — set automatically at sign-in. Not usable for server-to-server.
In: cookie
Path Parameters
scanIdRequiredstring
OK
scans/uploadAuthorization
X-API-Key<token>
Organization API key (hg_ak_*). Created from Settings → API Keys.
In: header
AuthorizationRequiredBearer <token>
Authorization: Bearer hg_ak_... for organization API keys, or
Authorization: Bearer hg_pat_... for Personal Access Tokens that
impersonate a specific user.
In: header
Request Body
application/jsonRequired[key: string]any
scanobject
imageobject
scannersarray<object>
vulnerabilitiesarray<object>
packagesarray<object>
layersarray<object>
OK