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>&token=<api3 token>
| Param | Req | Default | Notes |
|---|---|---|---|
url | yes | — | Full target URL. Host must be allowed (see below). URL-encode it if it contains &. |
token | yes | — | API3 access token. Validated against API3 before rendering; the shot shows only what that user may see. |
wait | no | map-ready | map-ready · networkidle · load · selector:<css>. Use networkidle for non-map pages. |
width | no | 1600 | Viewport width, px (320–4000). |
height | no | 1200 | Viewport height, px (320–4000). |
scale | no | 2 | Device pixel ratio (1–4). Higher = print quality. |
fullPage | no | false | true captures the full scrollable page. |
Examples
# a map frame (default map-ready wait)
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
# any other page
curl "https://screenshot3-staging.q-e.nl/screenshot?url=https://vos3.q-e.nl/console/projecten&token=<API3_TOKEN>&wait=networkidle" -o page.png
Responses
| Status | Meaning |
|---|---|
| 200 | image/png |
| 400 | Missing/invalid url, or host not allowed |
| 401 | Missing token, or API3 rejected it |
| 502 | API3 unreachable for token validation |
| 504 | Timed 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