Skip to main content
POST
Captures a full-page screenshot with headless Chromium: navigates to the URL, waits for the network to settle, scrolls to trigger lazy-loaded content and reveal animations, then encodes the result. The finished image is written to temporary storage and its filename returned — fetch the actual bytes from the download path described below.
2 credits per call · Typical response time ~310ms

Body parameters

url
string
required
The page to capture. https:// is assumed if the scheme is omitted.
format
string
default:"png"
Output image format: png, jpeg, or webp.
device
string
default:"desktop"
Viewport to render at: desktop or mobile.
colorScheme
string
default:"light"
Emulated prefers-color-scheme while rendering: light or dark. Affects any site that themes off this media query.

Response

success
boolean
required
filename
string
required
Name of the generated file. Download it from /api/uploads/<filename> on the same host — the file is temporary and removed after roughly 5 minutes.
sizeBytes
integer
required
Size of the encoded image.
format
string
required
Echoes the requested format.
fileExtension
string
required
File extension for the download (jpg for the jpeg format, otherwise matches format).
clipped
boolean
required
true if the page was taller than the capture cap and the image was clipped rather than capturing the full height.
durationMs
integer
required
Total server-side time for the capture.

Response headers

In addition to the standard headers, this endpoint sends:
X-Screenshot-Cache
string
HIT if served from the short-lived result cache without touching Chrome, otherwise MISS.
X-Screenshot-Clipped
string
Mirrors clipped in the body.
Server-Timing
string
Per-stage breakdown (queue, page, nav, net, scroll, settle, encode, total, all in ms) — renders as a waterfall in your browser’s devtools Network panel.

Errors

See the full error reference for the platform-level codes (401, 402, 429) that apply to every endpoint.