Options
All 107 options of the shotkit screenshot API: types, defaults, ranges and how to pass them.
All 107 options, grouped as in the playground: Essentials · Viewport · Image · Full page · Clip · PDF · Animation · Emulation · Customization · Blocking · Wait · Request · Geolocation · Caching · Metadata · Async & webhooks · Errors · OpenAI vision.
Passing options
Every option works in both request styles:
- POST a JSON body: booleans and numbers as JSON values, lists as arrays (
"block_resources": ["font", "media"]). - GET with a query string:
true/falsefor booleans, and repeat a key for lists (block_resources=font&block_resources=media). Enum lists also accept commas (wait_until=load,networkidle2), and list options accept newlines.
Unknown options are rejected with invalid_parameter, so typos don't silently do nothing. Empty values are ignored.
All options
| Option | Type | Default | Description |
|---|---|---|---|
url |
string | URL of the site to screenshot. | |
html |
string | HTML to render instead of a URL. | |
markdown |
string | Markdown to render instead of a URL. | |
format |
enum | jpg |
Response format. |
response_type |
enum | by_format |
Return the file, JSON metadata, or nothing. |
selector |
string | CSS selector of the element to capture. | |
selector_scroll_into_view |
boolean | true |
Scroll to the element to trigger lazy content. |
capture_beyond_viewport |
boolean | Capture parts outside the viewport (full page / selector). | |
scroll_into_view |
string | Scroll this selector to the top before capture. | |
scroll_into_view_adjust_top |
number | 0 |
Pixel offset after scroll_into_view. |
attachment_name |
string | Download filename (extension added). | |
external_identifier |
string | Your ID, echoed in webhook headers. | |
include_shadow_dom |
boolean | false |
Include shadow roots in html/markdown output. |
viewport_device |
enum | Emulate a device preset (sets size, DPR, UA, touch). | |
viewport_width |
number | 1280 |
Viewport width in px. |
viewport_height |
number | 1024 |
Viewport height in px. |
device_scale_factor |
number | 1 |
Device pixel ratio (1–5). Animated formats record at 1×. |
viewport_mobile |
boolean | false |
Respect the meta viewport tag. |
viewport_has_touch |
boolean | false |
Enable touch events. |
viewport_landscape |
boolean | false |
Landscape orientation. |
image_quality |
number | 80 |
Quality for lossy formats and video (0–100). |
image_width |
number | Resize output to fit this width (keeps ratio). | |
image_height |
number | Resize output to fit this height (keeps ratio). | |
omit_background |
boolean | false |
Transparent background (PNG only). |
full_page |
boolean | false |
Capture the full scrollable page. |
full_page_scroll |
boolean | Scroll to bottom first to load lazy images (auto with full_page). | |
full_page_scroll_delay |
number | 400 |
Delay between scroll steps (ms). |
full_page_scroll_by |
number | Pixels per scroll step (default: viewport height). | |
full_page_max_height |
number | Cap the full-page height (px). | |
full_page_slices |
boolean | false |
Split into vertical slices (URLs returned). |
full_page_slice_height |
number | 4000 |
Max height per slice. |
full_page_slice_overlap_height |
number | 0 |
Overlap between slices. |
clip_x |
number | Clip area X. | |
clip_y |
number | Clip area Y. | |
clip_width |
number | Clip area width. | |
clip_height |
number | Clip area height. | |
pdf_print_background |
boolean | false |
Print background graphics. |
pdf_fit_one_page |
boolean | false |
Fit the whole page on one PDF page. |
pdf_landscape |
boolean | false |
Landscape orientation. |
pdf_paper_format |
enum | letter |
Paper size. |
pdf_margin |
string | Margin for all sides (e.g. 20px, 1cm). | |
pdf_margin_top |
string | Top margin override. | |
pdf_margin_right |
string | Right margin override. | |
pdf_margin_bottom |
string | Bottom margin override. | |
pdf_margin_left |
string | Left margin override. | |
animation_duration |
number | 3 |
Seconds to record. With format=webp, records an animated WebP. |
animation_fps |
number | Frames per second (default: 10 for gif/webp, 30 for video). | |
animation_scroll |
boolean | false |
Scroll smoothly from the current position to the bottom while recording. |
dark_mode |
boolean | Emulate prefers-color-scheme: dark. Otherwise pages render in light mode. | |
reduce_motion |
boolean | false |
Actively finish/pause animations and videos. |
reduced_motion |
boolean | Emulate prefers-reduced-motion: reduce. | |
media_type |
enum | CSS media type. | |
hide_selectors |
list | Hide every element matching each selector. | |
styles |
string | CSS injected before capture. | |
scripts |
string | JavaScript executed before capture. | |
scripts_wait_until |
enum list | Wait for these events after scripts run. | |
click |
string | Click this selector before capture. | |
hover |
string | Hover this selector before capture. | |
error_on_click_selector_not_found |
boolean | true |
Fail if the click target is missing. |
error_on_hover_selector_not_found |
boolean | true |
Fail if the hover target is missing. |
block_cookie_banners |
boolean | false |
Hide cookie / GDPR banners. |
block_banners_by_heuristics |
boolean | false |
Aggressive heuristic banner removal. |
block_chats |
boolean | false |
Hide chat widgets (Intercom, Crisp, Drift…). |
block_ads |
boolean | false |
Block ad networks. |
block_trackers |
boolean | false |
Block analytics / trackers. |
block_requests |
list | Block requests matching wildcard patterns. | |
block_resources |
enum list | Block resource types. | |
wait_until |
enum list | load |
Navigation events to wait for. |
delay |
number | 0 |
Extra seconds to wait before capture. |
timeout |
number | 60 |
Total request timeout (s). Up to 90, or 600 with async (render time only). |
navigation_timeout |
number | 30 |
Navigation timeout (s). |
wait_for_selector |
string | Wait for this selector to appear. | |
wait_for_selector_algorithm |
enum | at_least_one |
How comma-separated selectors are matched. |
user_agent |
string | Custom User-Agent. | |
authorization |
string | Authorization header for the target. | |
headers |
list | Extra headers, one per line. | |
cookies |
list | Cookies, one per line. | |
time_zone |
enum | Browser time zone. | |
proxy |
string | Your HTTP proxy (http://user:pass@host:port). | |
bypass_csp |
boolean | false |
Bypass Content-Security-Policy. |
geolocation_latitude |
number | Latitude. | |
geolocation_longitude |
number | Longitude. | |
geolocation_accuracy |
number | Accuracy in meters. | |
cache |
boolean | false |
Cache the result and return a CDN URL. |
cache_ttl |
number | 14400 |
Cache lifetime in seconds. |
cache_key |
string | Distinguish otherwise identical cached renders. | |
metadata_image_size |
boolean | false |
Return image width/height. |
metadata_page_title |
boolean | false |
Return the page title. |
metadata_icon |
boolean | false |
Return the favicon URL. |
metadata_open_graph |
boolean | false |
Return Open Graph tags. |
metadata_fonts |
boolean | false |
Return fonts used by the page. |
metadata_content |
boolean | false |
Also store page content and return its URL. |
metadata_content_format |
enum | html |
Content format. |
metadata_http_response_status_code |
boolean | false |
Return the target's HTTP status. |
metadata_http_response_headers |
boolean | false |
Return the target's HTTP headers. |
async |
boolean | false |
Return 202 immediately and render in the background. |
webhook_url |
string | POST the result here when done. | |
webhook_sign |
boolean | true |
Sign webhook body with your secret key. |
webhook_errors |
boolean | false |
Also send errors to the webhook. |
ignore_host_errors |
boolean | false |
Capture even if the site returns 4xx/5xx. |
error_on_selector_not_found |
boolean | false |
Fail if selector / scroll_into_view is missing. |
fail_if_request_failed |
list | Fail if a matching sub-request fails. | |
fail_if_content_missing |
list | Fail if this text is missing (case-insensitive). | |
fail_if_content_contains |
list | Fail if this text is present (case-insensitive). | |
openai_api_key |
string | Your OpenAI key (never stored). | |
vision_prompt |
string | Prompt sent with the screenshot. | |
vision_max_tokens |
number | Max completion tokens. |