GET /v1/artifacts/:key streams the proof-of-page HTML: a rendered snapshot of the exact consumer-UI page an answer was captured from, so you can show a receipt of what a real user saw. It is opt-in — the snapshot is published only when the request set include.html: true, and only for consumer-UI (scrape) surfaces (the ones with a real page to snapshot). When it exists, the Envelope carries a top-level html field: a pre-built link to this endpoint. There is no separate key to assemble — you follow that html URL. The internal raw capture blob is never served here.
This endpoint is private. It requires your API key, and a restricted sk_* key can only read artifacts stamped with its own owner. A mismatch is a 404, never a 403 (no existence leak across tenants). Never expose these URLs client-side.
key
string
required
The artifact key, URL-encoded. You never build this by hand — the top-level html field in an Envelope is already a full URL that points at this endpoint with the key encoded for you.

Request

Follow the top-level html URL from an Envelope directly. It is present only when you opted in with include.html: true on the request and the surface was a consumer-UI capture:
Opt in at request time — set include.html: true on the submit body, or add ?include=html when you poll. If the field is absent, the surface wasn’t a consumer-UI capture or you didn’t opt in, and there is nothing to fetch.

Response

200 OK streams the HTML snapshot with the stored content type and an ETag: Artifacts are retained durably, not expired at 24 hours, so the html URL keeps resolving for as long as you need it.

Errors

401
AUTH_INVALID
Missing or invalid API key.
404
ARTIFACT_NOT_FOUND
The key doesn’t exist, or it belongs to another tenant.
404

The Envelope

Where the opt-in html proof-of-page URL comes from.

Jobs & polling

Read a completed job’s Envelope.