HawkShield developer platform

HawkEye API

Bring normalized exposure evidence into the graph and carry defensible risk decisions into your reporting workflows.

API contract
Base path
/api/v1
Authentication
Bearer token
Token prefix
hke_live_
Payload format
JSON
Maximum expiry
365 days
01

Quickstart

Create a token in Console settings, select the narrowest scopes your automation needs, and choose an expiration. Use the secret as a bearer credential on every request.

Request a board report
curl --request GET \
  --url https://your-hawkeye-host/api/v1/reports/board \
  --header 'Authorization: Bearer hke_live_YOUR_TOKEN' \
  --output hawkeye-board-report.pdf
02

Authentication

Send the token in the standard HTTP authorization header. An explicit HawkEye bearer token takes precedence over a browser session.

Authorization: Bearer hke_live_YOUR_TOKEN
Treat the secret like a password

Do not place it in source code, browser bundles, URLs, logs, or audit metadata. Store it in your CI or secret manager.

03

Scopes

A token cannot receive permissions its creator does not hold. Current API endpoints use the following scopes.

integrateSubmit normalized evidence batchesPOST /ingest/evidence
reportGenerate tenant board reportsGET /reports/board

Other console permissions can be assigned for forward compatibility, but they do not currently grant additional public API endpoints.

04

Endpoints

POST

/api/v1/ingest/evidence

Scope: integrate

Upsert source objects and relationships into the authenticated tenant's evidence graph. The tenant is always resolved from the credential and is never accepted from the payload.

cURL
curl --request POST \
  --url https://your-hawkeye-host/api/v1/ingest/evidence \
  --header 'Authorization: Bearer hke_live_YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data @evidence.json
evidence.json
{
  "source": {
    "provider": "internal-asm",
    "observedAt": "2026-04-15T10:30:00Z",
    "cursor": "scan-1842"
  },
  "assets": [{
    "externalId": "asset:payments-api",
    "name": "Payments API",
    "kind": "application",
    "exposure": "public",
    "criticality": 5,
    "sensitivity": "payment-data",
    "businessUnit": "Commerce",
    "owner": "platform-security",
    "isCrownJewel": true,
    "metadata": { "region": "us-east-1" }
  }],
  "identities": [],
  "findings": [],
  "controls": [],
  "relationships": []
}

Evidence objects

AssetsHosts, applications, cloud resources, containers, and endpoints.
IdentitiesPrivilege level, MFA state, and last authentication.
FindingsCVSS, EPSS, KEV state, and observation window.
ControlsControl type, effectiveness, and validation time.

Response

HTTP/1.1 200 OK
{
  "status": "ingested",
  "source": "internal-asm",
  "observedAt": "2026-04-15T10:30:00Z",
  "objectsUpserted": 1,
  "relationshipsUpserted": 0
}

Request bodies are limited to 5 MB. A valid batch can contain up to 5,000 assets, identities, or controls; 10,000 findings; and 20,000 relationships.

GET

/api/v1/reports/board

Scope: report

Generate the current tenant's exposure board report as a PDF. The response is private and must not be cached.

cURL
curl --request GET \
  --url https://your-hawkeye-host/api/v1/reports/board \
  --header 'Authorization: Bearer hke_live_YOUR_TOKEN' \
  --output hawkeye-board-report.pdf
200 application/pdfhawkeye-board-report.pdf
05

Errors

400Malformed JSONFix the request body.
401Missing, invalid, expired, or revoked tokenIssue or replace the credential.
403Valid credential without the required scopeUse a correctly scoped token.
413Payload exceeds 5 MBSplit the evidence batch.
422Evidence failed schema validationInspect the returned issue paths.
500Request processing failedRetry with exponential backoff.
06

Token lifecycle

Issue

Choose a name, least-privilege scopes, and 30-365 day expiration.

Store

Copy the secret once into an approved secret manager.

Observe

Review prefix, scopes, expiry, and last-used time in settings.

Revoke

Revoke immediately when ownership or automation changes.

Access is continuously revalidated

Expiry, revocation, user status, and active tenant membership are checked when every API token is resolved.