Quattro Expertise

screenshot3

Headless screenshot service for vos3. Give it a page URL and an API3 token; it renders the page in a real browser and returns a PNG.

It drives a real Chromium against vos3, so Mapbox tiles, contours and DOM markers render exactly as a user sees them. Works for any vos3 page, not only map frames.

Endpoint

GET https://screenshot3-staging.q-e.nl/screenshot?url=<page>
Authorization: Bearer <api3 token>

Authentication

Send the API3 access token as Authorization: Bearer <token>. It is validated against API3 before any rendering, and the shot shows only what that user may see. The token may also be passed as a token query parameter for callers that cannot set headers (an <img src>, say) — the header wins when both are present. Prefer the header: it keeps the credential out of access logs and Referer headers.

ParamReqDefaultNotes
urlyesFull target URL. Host must be allowed (see below). URL-encode it if it contains &.
tokenno*API3 access token — *required unless sent as an Authorization: Bearer header.
waitnomap-readymap-ready · networkidle · load · selector:<css>. Use networkidle for non-map pages.
widthno1600Viewport width, px (320–4000).
heightno1200Viewport height, px (320–4000).
scaleno2Device pixel ratio (1–4). Higher = print quality.
fullPagenofalsetrue captures the full scrollable page.

Examples

# a map frame (default map-ready wait)
curl -H "Authorization: Bearer <API3_TOKEN>" \
  "https://screenshot3-staging.q-e.nl/screenshot?url=https://vos3.q-e.nl/frames/projects/22022/sensor-map" -o map.png

# any other page
curl -H "Authorization: Bearer <API3_TOKEN>" \
  "https://screenshot3-staging.q-e.nl/screenshot?url=https://vos3.q-e.nl/console/projecten&wait=networkidle" -o page.png

# token in the URL instead — for callers that cannot set a header
curl "https://screenshot3-staging.q-e.nl/screenshot?url=https://vos3.q-e.nl/frames/projects/22022/sensor-map&token=<API3_TOKEN>" -o map.png

Responses

StatusMeaning
200image/png
400Missing/invalid url, or host not allowed
401No token (header or query), or API3 rejected it
502API3 unreachable for token validation
504Timed out waiting for the page to render

Allowed hosts

url must point at one of: q-e.nl, localhost, 127.0.0.1. Other hosts are rejected (SSRF guard).

Health check: GET https://screenshot3-staging.q-e.nl/health