---
title: "Screenshot a web page (query parameters; embeddable in <img src> with api_key)"
method: GET
path: "/v1/screenshot"
---

# Screenshot a web page (query parameters; embeddable in <img src> with api_key)

`GET /v1/screenshot`

## Request

- Base URL: `https://shotkiln.com`
- URL: `https://shotkiln.com/v1/screenshot`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
  - none

## Query parameters

- `url` string, uri, required: Public http(s) URL (ports 80/443/8080/8443)
- `width` integer
- `height` integer
- `full_page` boolean: Capture the full scrollable page (max 16384 px tall)
- `scroll` boolean: With full_page: scroll through the page in steps first, then back to the top, so lazy-loaded images appear. Bounded by the render timeout. Set false to capture without scrolling. Ignored for viewport captures.
- `format` 'png' | 'jpeg' | 'webp'
- `quality` integer: jpeg/webp only
- `delay` integer: Extra wait after load (ms)
- `device_scale_factor` number
- `dark_mode` boolean: Emulate prefers-color-scheme: dark
- `cache_ttl` integer: Seconds to cache; 0 = always render fresh. Cache hits do not use quota.

## Response `200`

Rendered file

## Other responses

- `400`: Invalid parameter or blocked URL (code: invalid_parameter, invalid_url, url_blocked, blocked_url)
- `401`: Invalid or revoked API key
- `413`: Target page too large
- `429`: Rate limit, daily limit or monthly quota exceeded (see Retry-After)
- `502`: Target page failed to load
- `503`: Browser capacity temporarily unavailable (see Retry-After)
- `504`: Render timed out

---

[API](https://skmtc.dev/shotkiln/apis/shotkiln-api.md) · [All operations](https://skmtc.dev/shotkiln/apis/shotkiln-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shotkiln/apis/shotkiln-api/revisions/8123a05b6719?raw)
