Docs / Getting started

Request Parameters

Every capture goes through POST /v1/capture (GET works too). All parameters are optional except url — sensible defaults render a 1440×900 PNG above the fold.

Authentication

Send your API key as a Bearer token. Keys are created in the dashboard and start with sk_live_. Each key is shown once at creation — store it safely.

header
Authorization: Bearer sk_live_8c1f4a2e9b7d3f6a

Parameters

ParamTypeRange / valuesDefaultDescription
url requiredstringvalid http(s) URLThe page to capture. Redirects are followed (max 5).
widthint320 – 38401440Viewport width in CSS pixels.
heightint240 – 2160900Viewport height. Ignored when full_size is true.
full_sizebooltrue / falsefalseCapture the entire page, up to 20,000px tall.
lazy_loadbooltrue / falsefalseScroll the page first so lazy-loaded images render.
zoomint25 – 400100Page zoom in percent before capture.
formatstringpng · jpeg · pdfpngOutput format. pdf renders a print-quality A4 document (scaled_width/retina ignored).
htmlstring≤ 2 MB · POST onlyRaw HTML to render instead of url (send one or the other). Subresources load normally.
wait_untilstringload · domcontentloaded · networkidle0 · networkidle2networkidle2Navigation event that counts as "loaded".
wait_for_selectorstringCSS selectorWait (up to 10s) for this selector before capturing; missing selectors don't fail the capture.
dark_modebooltrue / falsefalseEmulate prefers-color-scheme: dark.
omit_backgroundbooltrue / falsefalseTransparent background — requires format=png.
cssstring≤ 20 KBCustom CSS injected before capture (hide elements, force themes).
clip_x · clip_y · clip_width · clip_heightintpxCapture a region. clip_width + clip_height together activate it; wins over full_size.
qualityint1 – 10080JPEG quality. Ignored for PNG.
region eu onlystringeueuCapture region. US is on the roadmap — region=us returns 422 today.
sleep_timeint0 – 100000Extra wait in ms after load, for animations and late JS.
timeoutint5000 – 6000045000Max ms to wait for the page to settle. Whatever has rendered by then is captured.
retinaint1 – 31Device pixel ratio. retina=2 doubles output resolution for crisp HiDPI captures.
no_adsbooltrue / falseAds and trackers are always blocked at the renderer; parameter accepted for compatibility.
no_cookie_bannersbooltrue / falsefalseRemove common cookie-consent banners before capture.
nocachebooltrue / falsefalseForce a fresh render. Cached repeats within 24h are free.
max_heightint240 – 2000020000Hard cap for full-page captures, in CSS pixels.
scaled_widthint100 – 3840Downscale the output image to this width (thumbnails).

Example request

A full-page capture with ad blocking and lazy-load handling:

terminal
curl "https://screenshotink.com/v1/capture" \
  -H "Authorization: Bearer sk_live_…" \
  -d url="https://example.com" \
  -d full_size=true \
  -d no_ads=true \
  -d lazy_load=true

Example response

200 OK · application/json
{
  "status":    "done",
  "image_url": "https://screenshotink.com/shots/9f/9f2k1x.png",
  "width":     1440,
  "height":    8260,
  "format":    "png",
  "bytes":     1984412,
  "render_ms": 1840,
  "cached":    false,
  "expires_at": "2026-07-12T14:03:00Z"
}

Image URLs are valid for 30 days on Free, 90 on Starter, 365 on Pro and Scale. Re-request with the same parameters within 24 hours and you get the cached render for free ("cached": true).

Agents: every parameter on this page will also be exposed through the MCP server's take_screenshot tool with the same names and defaults.