API reference

One authenticated endpoint. Send a GET or POST to /api/v1/screenshot with your X-Api-Key header. Add ?response=json to get a durable URL instead of raw bytes.

Quickstart

curl "https://shutterlabs.pics/api/v1/screenshot" \
  -H "X-Api-Key: sk_live_…" \
  -d url="https://your.app" \
  -d format="png" -d full_page=true \
  -o snapshot.png

Parameters

NameValuesDefaultDescription
urlstringTarget URL (http/https). Private IPs and metadata endpoints are blocked.
formatpng · jpeg · webp · pdfpngOutput format.
full_pagebooleanfalseCapture the whole scrollable page, up to 20,000px.
width / heightnumber1280 / 800Viewport size in pixels.
devicedesktop · tablet · mobileDevice preset (overrides width/height/UA).
dark_modebooleanfalseEmulate prefers-color-scheme: dark.
block_adsbooleantrueStrip ad requests before rendering.
block_cookie_bannersbooleantrueRemove consent/cookie modals.
delayms0Wait after load before capturing.
cache_ttlseconds86400Cache lifetime. Cache hits don't count against quota.

Error contract

Every error uses the same JSON shape:

{ "error": {
    "code": "invalid_url" | "blocked_url" | "unauthorized"
          | "quota_exceeded" | "rate_limited"
          | "render_failed" | "invalid_params",
    "message": "human readable"
} }

Status codes: 400 invalid/blocked · 401 unauthorized · 429 quota/rate (with Retry-After) · 500 render failure.

Need a key?

Sign up free — 100 snapshots a month, no card.

Get API key