Skip to main content

POST /api/ingest-http, Ingest HTTP Data

Import HTTP request/response data into the database for scanning. Supports multiple input formats. Headers:

Declaring the pushing tool

Records ingested through this endpoint are stored with source: "ingest-server" by default — the same label every HTTP client shares. A client can name itself instead, so its traffic stays distinguishable later:
Accepted values are burp and caido — the same labels the live bridge writes, so one ?source=caido filter covers traffic that arrived either by Vigolium pulling over the bridge or by the plugin pushing here. The Vigolium Burp extension and Caido plugin set it automatically. The list is a closed allowlist, not a passthrough, and anything else falls back to ingest-server. source is not only a display label: it decides which rows scan-on-receive feeds back into a running scan, so a client free to claim scanner could silently exclude its own traffic from the scan it just asked for. Request body: Input modes:

Ingest a URL

Ingest a curl command

Ingest a list of URLs

Ingest a raw HTTP request (base64)

Ingest a raw HTTP request with a URL hint (base64)

Raw HTTP requests don’t contain the scheme (https vs http) and the Host header alone may not reflect the actual target (e.g. behind a reverse proxy). Provide url alongside http_request_base64 so the parser can resolve the correct scheme and hostname.
The url field provides the scheme (https) and the public hostname (app.example.com), overriding whatever Host header appeared in the raw request.

Ingest a HAR file

Ingest an OpenAPI spec

Response:

Ingest into a specific project

Use the X-Project-UUID header to scope imported data to a project. If omitted, data is stored under the default project.

POST /api/burp/sitemap/snapshot, Ingest a Burp Site Map Snapshot

Uploads a chunk of a Burp Suite Target Site map snapshot into the database. This is the endpoint the companion burp-vigolium extension calls when you snapshot your Target Site map (Ctrl+Alt+S or periodic snapshots). Snapshots are chunked (a single site map is split across sequential requests), incremental within a Burp session, and idempotent on the server — unchanged records are never duplicated. Headers: Request body: Each entry in records: A chunk carrying more than 200 records is rejected with 400.

Upload a snapshot chunk

Response:
Every record is upserted individually: inserted counts new rows, updated counts rows whose response changed, unchanged counts idempotent no-ops, and skipped counts records that failed to decode or parse (with the reason appended to errors). received is the number of records in the chunk.