Envelope
The single, versioned response contract returned for every capture, regardless of surface. An Envelope carries the job header (id, surface, region, status, warnings), provenance (how each claim about the capture is known), the answer (text, markdown, blocks) and the structured evidence extracted from it (sources, fan-out). On consumer-UI (browser/scrape) surfaces you can additionally opt in to a proof-of-page HTML snapshot with include.html, surfaced as a top-level html URL. One shape to parse, diff and store, instead of N per-provider formats.
In AI Search API
GET /v1/jobs/:id returns an Envelope for every completed child job; ?mode=sync returns one inline. The markdown answer is always populated, absence-is-data is enforced by the schema itself, and every Envelope records its schemaVersion so stored captures stay diffable as the contract evolves.
{
"job": { "id", "surface", "region", "status", "warnings" },
"provenance": { "model", "region", "loginState", "surfacePresent", … },
"answer": { "text", "markdown", "blocks" },
"evidence": { "sources", "fanOut" }
}Related terms
See it in the product
Every definition here is enforced in the Envelope contract. Run a capture and read the fields yourself.