Developers

API reference

Queue cross-service vulnerability scans from your CI/CD pipeline. Authenticate with a workspace API key created in Settings → API keys.

Authentication

Send your key as a bearer token. Keys are workspace-scoped and shown once at creation.

Authorization: Bearer vg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpoints

Base URL: https://vulngraph.us

POST/api/v1/scans
Queue a scan. Body: {"repository":"owner/repo"} (a GitHub URL or owner/repo) or {"repositoryId":"<uuid>"}. Returns the scan id and a status_url.
GET/api/v1/scans/:id
Scan status, stats, and a findings summary by severity.
GET/api/v1/scans/:id/sarif
SARIF 2.1.0 for GitHub Code Scanning (Team plan or higher).
GET/api/v1/scans
The 20 most recent scans for the workspace.
GET/api/v1/repositories
The workspace's repositories.
GET/api/v1/workspace/analysis
Cross-repo taint over the whole workspace — vulnerabilities that span repository boundaries (Enterprise plan).

Example — scan on every push

Queue a scan from CI and poll for the result:

# Queue a scan
curl -X POST https://vulngraph.us/api/v1/scans \
  -H "Authorization: Bearer $VULNGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"repository":"owner/repo"}'
# => {"id":"<scan-id>","status":"queued","status_url":"…"}

# Check status
curl https://vulngraph.us/api/v1/scans/<scan-id> \
  -H "Authorization: Bearer $VULNGRAPH_API_KEY"
# => {"status":"completed","findings":{"total":3,"by_severity":{"critical":1,"high":1}}}

GitHub Action

Drop VulnGraph into CI and fail the build on critical/high findings. Store your key as the secret VULNGRAPH_API_KEY:

name: VulnGraph
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./.github/actions/vulngraph-scan
        with:
          api-key: ${{ secrets.VULNGRAPH_API_KEY }}
          fail-on: high   # none | high | critical

Add sarif-file: vulngraph.sarif and a github/codeql-action/upload-sarif step to surface findings in the repo's Security → Code scanning tab (Team plan and up).

Rate limits

Scan creation is limited to 30 requests/minute per key; read endpoints to 60/minute. Exceeding a limit returns 429. Revoke a key any time in Settings.

Ready to wire it up? Create a workspace and generate your first key.