http://localhost:9002 (default)
Starting the Server
Authentication
/api/* routes require a Bearer token when the server is started with VIGOLIUM_API_KEY or server.auth_api_key set.
GET /, GET /health, GET /server-info, GET /swagger/*, GET /metrics, and POST /api/auth/login.
Demo-only and view-only modes (cfg.DemoOnly / cfg.ViewOnly) further gate mutating routes; admin/operator/viewer roles enforced by RoleGuard middleware override the per-route checks.
Project Scoping
All API operations are scoped to a project via theX-Project-UUID request header. If the header is omitted, the default project (00000000-0000-0000-0000-000000000001) is used.
GET /api/info, App Info
Returns basic application metadata. (GET / serves the embedded static UI, not JSON.)
GET /health, Health Check
Returns server health status.GET /server-info, Server Info
Returns detailed server information including uptime, database driver, queue depth, and record/finding totals.GET /swagger/*, Swagger UI
Interactive API documentation. Open in a browser.GET /metrics, Prometheus Metrics
Returns Prometheus-formatted metrics. The route is always registered and unauthenticated; the handler gates the response on theserver.enable_metrics config key (on by default; there is no CLI flag for it).
CORS
CORS can be enabled via thecors_allowed_origins server config:
Allowed methods:
GET, POST, PUT, DELETE, PATCH, OPTIONS. Allowed headers: Content-Type, Authorization, X-Project-UUID, X-User-Email.
PATCH was missing from the preflight allowlist before v0.4.2, so a browser client could never reach PATCH /api/findings/:id/status — i.e. could never mark a finding triaged.Response Headers
Every response carries the server banner and its companion author header:X-Vigolium-Bridge-Source additionally appears on /api/http-records when a Burp/Caido bridge answered, naming the vendor.
Request Body Limits
Request bodies are capped per route. Since v0.4.2 a chunked body is capped atlimit + 1 bytes and drained before the 413 is returned, rather than being read to completion — previously a chunked upload could grow the heap to the framework’s 512 MB ceiling on a route whose own limit was 4 MB. --debug logging no longer buffers streamed uploads into memory on the large-upload routes either.
Error Responses
All errors follow a consistent format:v0.4.2: storage downloads used to answer a missing object with a truncated stream instead of a JSON 404 — a client saw a short file, not an error. They now return the standard error shape, and the storage read endpoints are reachable in
--view-only mode.