Download OpenAPI specification:
Capture any public URL as JPEG, PNG, WebP, AVIF, or PDF.
Authentication: include your 12-character alphanumeric API key as key in every POST request body.
No HTTP headers required.
Result CDN: https://static.shotbot.net/{token[0]}/{token[0..1]}/{token}.{format}
Example: token 4XyZaBd2… → https://static.shotbot.net/4/4X/4XyZaBd2….jpg
Pro subscription unlocks all formats (PNG / WebP / AVIF / PDF), custom viewport widths
(280-3840 px), URLs with custom TCP ports, wait up to 30 s, and advanced options
(scroll_before_capture, block_ads, http_auth, crop_height,
cookies, selector, autoplay_videos, omit_background,
emulate_print_media, non-default render_region).
Subscribe at https://shotbot.net/pro/
Typical flow
POST /capture → get tokenGET /capture/{token} every ~2 s until status is done or failedimage URL from the CDNOr use POST /capture/callback and let Shotbot push the result to your webhook.
Private captures (private: true): the result is not published on
static.shotbot.net. The done response carries a download URL on
api.shotbot.net that streams the file; you can fetch it as many times as
you like until it auto-expires after a short retention window.
Useful when the captured page is sensitive (intranet, account dashboards…).
Submit a URL for screenshot capture. Returns immediately with a token.
Poll GET /capture/{token} until status is done or failed.
If the same URL with identical capture options was already submitted within the last
60 seconds by the same account, the existing token is returned (deduplicated: true)
without consuming quota. A different viewport, format, or any other option produces a
distinct capture and is never deduplicated. Private captures are never deduplicated.
If quota and credits are both exhausted, the request is queued in a wait list
(status: waitlisted) and will be processed at the next monthly quota reset.
| preset | string Default: "" Enum: "" "og" "mobile" "youtube_thumbnail" "square" "reel" "pinterest" "tablet" "laptop" "desktop" "desktop_hd" "twitter_header" "linkedin_banner" "hero_banner" Named output preset. When set, fills missing
Omit | ||||||||||||||||||||||||||||||||||||||||||
| viewport_width | integer [ 280 .. 3840 ] Default: 1280 Browser viewport width in pixels. Default: 1280.
Common labelled widths: 360, 375, 390, 414, 430, 768, 1024, 1200, 1280, 1440, 1920.
Non-Pro accounts are limited to 390, 768, 1280.
Shotbot Pro may also pass any custom width between 280 and 3840 px,
useful for CSS / responsive testing at arbitrary breakpoints.
A value outside the allowed set returns | ||||||||||||||||||||||||||||||||||||||||||
| output_size | integer Enum: 120 160 240 320 390 480 640 768 1024 1080 1200 1280 1440 1500 1584 1920 Output image width in pixels. Defaults to | ||||||||||||||||||||||||||||||||||||||||||
| ratio | string Default: "16:9" Enum: "16:9" "4:3" "16:10" "3:2" "2:1" "1:1" "9:16" "3:4" "10:16" "2:3" "1:2" Aspect ratio used to compute output height. An empty string falls back to
the default; a non-empty value outside the enum returns | ||||||||||||||||||||||||||||||||||||||||||
| crop_height | integer [ 10 .. 30000 ] Custom output height in pixels. Overrides | ||||||||||||||||||||||||||||||||||||||||||
| fullpage | boolean Default: false Capture the full page height (max 30,000 px). Ignores | ||||||||||||||||||||||||||||||||||||||||||
| format | string Default: "jpg" Enum: "jpg" "png" "webp" "webp_lossless" "avif" "pdf" Output format. Non-Pro accounts are limited to | ||||||||||||||||||||||||||||||||||||||||||
| hidpi | boolean Default: false Render at 2× device pixel ratio (HiDPI / Retina). | ||||||||||||||||||||||||||||||||||||||||||
| color_scheme | string or null Enum: "dark" "light" null Force a color scheme before capture.
| ||||||||||||||||||||||||||||||||||||||||||
| render_region | string Default: "fr-paris" Enum: "fr-paris" "ca-montreal" "sg-singapore" "au-sydney" "vn-hanoi" Geographic region the rendering worker exits from. The browser is routed through a SOCKS5 proxy in the chosen region and its locale, timezone, and geolocation are emulated to match. Region key shape:
Use to capture geo-restricted content, regionally localised pages, currency
or banner variants, or to verify what a page looks like from a given
market. Pro only for non- | ||||||||||||||||||||||||||||||||||||||||||
| nojs | boolean Default: false Disable JavaScript execution before capture. | ||||||||||||||||||||||||||||||||||||||||||
| autoplay_videos | boolean Default: false Launch Chromium with No effect on PDF captures (no playback) or when the page itself
has no | ||||||||||||||||||||||||||||||||||||||||||
| prefers_reduced_motion | boolean Default: false Emulate the | ||||||||||||||||||||||||||||||||||||||||||
| omit_background | boolean Default: false Render with a transparent background ( Visible on | ||||||||||||||||||||||||||||||||||||||||||
| emulate_print_media | boolean Default: false Call | ||||||||||||||||||||||||||||||||||||||||||
| wait_time | integer [ 0 .. 30 ] Default: 5 Seconds to wait after page load before capturing
(0 = capture immediately after page load).
Free accounts: 0-5. Shotbot Pro: 0-30 (longer waits help
JavaScript-heavy / slow pages). A free request above 5 s is rejected
with | ||||||||||||||||||||||||||||||||||||||||||
| dismiss_cookies | string Default: "" Enum: "" "accept" "reject" Auto-interact with cookie consent banners. Pro only.
| ||||||||||||||||||||||||||||||||||||||||||
| frame | string Default: "" Enum: "" "rounded" "shadow" "browser_chrome" "browser_chrome_dark" "mobile" "mobile_light" "tablet" "tablet_light" "laptop" "polaroid" "gradient" "shotbot_brand" Decorative frame composited around the rendered image (image formats only, silently ignored for PDF).
Most variants extend OUTSIDE the requested Free accounts get a small PNG/WebP/AVIF formats render transparent pixels outside the mockup bezel (real see-through corners). JPG has no alpha channel so those areas flatten to black. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_before_capture | boolean Default: false Scroll the page before capturing (triggers lazy-loaded images). Pro only. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_offset_px | integer [ 0 .. 30000 ] Default: 0 Scroll the page down by this many pixels before capturing (no scroll back),
so the viewport frame starts at Y=N. Runs after | ||||||||||||||||||||||||||||||||||||||||||
| scroll_to | string <= 500 characters CSS selector to | ||||||||||||||||||||||||||||||||||||||||||
| block_ads | boolean Default: false Block ad network requests during capture. Pro only. | ||||||||||||||||||||||||||||||||||||||||||
object HTTP Basic Auth credentials for password-protected pages. Pro only. | |||||||||||||||||||||||||||||||||||||||||||
| pdf_page_size | string Default: "A4" Enum: "A4" "A3" "A5" "Letter" "Legal" "Tabloid" PDF page size. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_margin_mm | integer [ 0 .. 50 ] Default: 10 PDF page margin in mm. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_scale | number [ 0.1 .. 2 ] Default: 1 PDF rendering scale factor. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_landscape | boolean Default: false PDF landscape orientation. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| selector | string <= 500 characters CSS selector of the DOM element to screenshot. Only the matched element is
captured, returned at its natural dimensions: | ||||||||||||||||||||||||||||||||||||||||||
| private | boolean Default: false Private capture. When The web preview ( Deduplication is disabled for private captures (each call produces a fresh token with its own file). Available to all accounts (not Pro-gated). | ||||||||||||||||||||||||||||||||||||||||||
Array of objects <= 50 items Cookies to inject before navigation. Useful for capturing authenticated pages
without HTTP Basic Auth. Each entry must include | |||||||||||||||||||||||||||||||||||||||||||
| key required | string^[0-9A-Za-z]{12}$ Your 12-character alphanumeric API key. | ||||||||||||||||||||||||||||||||||||||||||
| url required | string <uri> Target URL. Must be a public http/https URL (no private IPs, no localhost).
URLs with a non-standard TCP port (e.g. |
{- "key": "aB3kR7mZx9Lq",
}{- "job_id": 1843221,
- "token": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
- "status": "queued",
- "eta_seconds": 17
}Submit a URL for capture with webhook delivery of the result.
No polling required - Shotbot POSTs the result image (multipart) to your callback_url
when the capture is complete.
If callback_secret is set, the worker echoes it back in the callback POST.
Verify authenticity on your side with hash_equals($secret, $received_secret).
On failure the worker POSTs status=ERR to your callback URL.
The callback_url must use HTTPS and resolve to a public IP (SSRF protection).
DNS rebinding is mitigated by re-validation on the worker side.
| preset | string Default: "" Enum: "" "og" "mobile" "youtube_thumbnail" "square" "reel" "pinterest" "tablet" "laptop" "desktop" "desktop_hd" "twitter_header" "linkedin_banner" "hero_banner" Named output preset. When set, fills missing
Omit | ||||||||||||||||||||||||||||||||||||||||||
| viewport_width | integer [ 280 .. 3840 ] Default: 1280 Browser viewport width in pixels. Default: 1280.
Common labelled widths: 360, 375, 390, 414, 430, 768, 1024, 1200, 1280, 1440, 1920.
Non-Pro accounts are limited to 390, 768, 1280.
Shotbot Pro may also pass any custom width between 280 and 3840 px,
useful for CSS / responsive testing at arbitrary breakpoints.
A value outside the allowed set returns | ||||||||||||||||||||||||||||||||||||||||||
| output_size | integer Enum: 120 160 240 320 390 480 640 768 1024 1080 1200 1280 1440 1500 1584 1920 Output image width in pixels. Defaults to | ||||||||||||||||||||||||||||||||||||||||||
| ratio | string Default: "16:9" Enum: "16:9" "4:3" "16:10" "3:2" "2:1" "1:1" "9:16" "3:4" "10:16" "2:3" "1:2" Aspect ratio used to compute output height. An empty string falls back to
the default; a non-empty value outside the enum returns | ||||||||||||||||||||||||||||||||||||||||||
| crop_height | integer [ 10 .. 30000 ] Custom output height in pixels. Overrides | ||||||||||||||||||||||||||||||||||||||||||
| fullpage | boolean Default: false Capture the full page height (max 30,000 px). Ignores | ||||||||||||||||||||||||||||||||||||||||||
| format | string Default: "jpg" Enum: "jpg" "png" "webp" "webp_lossless" "avif" "pdf" Output format. Non-Pro accounts are limited to | ||||||||||||||||||||||||||||||||||||||||||
| hidpi | boolean Default: false Render at 2× device pixel ratio (HiDPI / Retina). | ||||||||||||||||||||||||||||||||||||||||||
| color_scheme | string or null Enum: "dark" "light" null Force a color scheme before capture.
| ||||||||||||||||||||||||||||||||||||||||||
| render_region | string Default: "fr-paris" Enum: "fr-paris" "ca-montreal" "sg-singapore" "au-sydney" "vn-hanoi" Geographic region the rendering worker exits from. The browser is routed through a SOCKS5 proxy in the chosen region and its locale, timezone, and geolocation are emulated to match. Region key shape:
Use to capture geo-restricted content, regionally localised pages, currency
or banner variants, or to verify what a page looks like from a given
market. Pro only for non- | ||||||||||||||||||||||||||||||||||||||||||
| nojs | boolean Default: false Disable JavaScript execution before capture. | ||||||||||||||||||||||||||||||||||||||||||
| autoplay_videos | boolean Default: false Launch Chromium with No effect on PDF captures (no playback) or when the page itself
has no | ||||||||||||||||||||||||||||||||||||||||||
| prefers_reduced_motion | boolean Default: false Emulate the | ||||||||||||||||||||||||||||||||||||||||||
| omit_background | boolean Default: false Render with a transparent background ( Visible on | ||||||||||||||||||||||||||||||||||||||||||
| emulate_print_media | boolean Default: false Call | ||||||||||||||||||||||||||||||||||||||||||
| wait_time | integer [ 0 .. 30 ] Default: 5 Seconds to wait after page load before capturing
(0 = capture immediately after page load).
Free accounts: 0-5. Shotbot Pro: 0-30 (longer waits help
JavaScript-heavy / slow pages). A free request above 5 s is rejected
with | ||||||||||||||||||||||||||||||||||||||||||
| dismiss_cookies | string Default: "" Enum: "" "accept" "reject" Auto-interact with cookie consent banners. Pro only.
| ||||||||||||||||||||||||||||||||||||||||||
| frame | string Default: "" Enum: "" "rounded" "shadow" "browser_chrome" "browser_chrome_dark" "mobile" "mobile_light" "tablet" "tablet_light" "laptop" "polaroid" "gradient" "shotbot_brand" Decorative frame composited around the rendered image (image formats only, silently ignored for PDF).
Most variants extend OUTSIDE the requested Free accounts get a small PNG/WebP/AVIF formats render transparent pixels outside the mockup bezel (real see-through corners). JPG has no alpha channel so those areas flatten to black. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_before_capture | boolean Default: false Scroll the page before capturing (triggers lazy-loaded images). Pro only. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_offset_px | integer [ 0 .. 30000 ] Default: 0 Scroll the page down by this many pixels before capturing (no scroll back),
so the viewport frame starts at Y=N. Runs after | ||||||||||||||||||||||||||||||||||||||||||
| scroll_to | string <= 500 characters CSS selector to | ||||||||||||||||||||||||||||||||||||||||||
| block_ads | boolean Default: false Block ad network requests during capture. Pro only. | ||||||||||||||||||||||||||||||||||||||||||
object HTTP Basic Auth credentials for password-protected pages. Pro only. | |||||||||||||||||||||||||||||||||||||||||||
| pdf_page_size | string Default: "A4" Enum: "A4" "A3" "A5" "Letter" "Legal" "Tabloid" PDF page size. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_margin_mm | integer [ 0 .. 50 ] Default: 10 PDF page margin in mm. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_scale | number [ 0.1 .. 2 ] Default: 1 PDF rendering scale factor. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_landscape | boolean Default: false PDF landscape orientation. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| selector | string <= 500 characters CSS selector of the DOM element to screenshot. Only the matched element is
captured, returned at its natural dimensions: | ||||||||||||||||||||||||||||||||||||||||||
| private | boolean Default: false Private capture. When The web preview ( Deduplication is disabled for private captures (each call produces a fresh token with its own file). Available to all accounts (not Pro-gated). | ||||||||||||||||||||||||||||||||||||||||||
Array of objects <= 50 items Cookies to inject before navigation. Useful for capturing authenticated pages
without HTTP Basic Auth. Each entry must include | |||||||||||||||||||||||||||||||||||||||||||
| key required | string^[0-9A-Za-z]{12}$ Your 12-character alphanumeric API key. | ||||||||||||||||||||||||||||||||||||||||||
| url required | string <uri> Target URL. Must be a public http/https URL (no private IPs, no localhost).
URLs with a non-standard TCP port (e.g. | ||||||||||||||||||||||||||||||||||||||||||
| callback_url required | string <uri> HTTPS endpoint where Shotbot will POST the result (multipart image). Must use HTTPS and resolve to a public IP address. | ||||||||||||||||||||||||||||||||||||||||||
| callback_secret | string <= 255 characters Optional shared secret. Shotbot echoes it back in the callback POST body.
Compare with |
{- "key": "aB3kR7mZx9Lq",
- "callback_secret": "s3cr3t"
}{- "job_id": 1843222,
- "token": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
- "status": "queued",
- "eta_seconds": 17
}Poll the status of a submitted capture. No API key required - the 32-character token is a bearer: anyone who holds it can read the status and download the result.
Poll every ~2 seconds. A queued response includes eta_seconds as a hint.
Result image URLs follow the pattern:
https://static.shotbot.net/{token[0]}/{token[0..1]}/{token}.{format}
| token required | string^[A-Za-z0-9]{32}$ Example: 4XyZaBd2E1lk39PQ7m8r5wN0c6f4H2g1 32-character alphanumeric token returned by POST /capture |
{- "token": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
- "status": "queued",
- "format": "jpg",
- "viewport_width": 1280,
- "output_size": 1280,
- "output_height": 720,
- "ratio": "16:9",
- "fullpage": false,
- "eta_seconds": 18
}Download the binary result of a private capture (private: true on
submission). The file is not deleted on read: you can fetch it as
many times as you like until it auto-expires after a short retention
window, after which you get 410 Gone.
This endpoint is the only way to retrieve a private capture: the bytes
are not on static.shotbot.net, and there is no other URL.
Authentication is by token: the 32-character alphanumeric token returned at submission acts as a bearer credential. Anyone holding it can read the file.
| token required | string^[A-Za-z0-9]{32}$ 32-character alphanumeric token from POST /capture (with |
{- "error": "not_found"
}Submit up to 500 URLs (Pro accounts: up to 5000) in a single request.
Global options (top-level) apply to all jobs. Per-job options override globals for that specific job.
Quota is allocated atomically in a single transaction. If quota runs out mid-batch, remaining jobs go to the wait list. Deduplication (60 s window, same account, same URL and identical capture options) is applied before quota consumption, both within the batch and against recent jobs. Entries differing only by viewport, format, or any other option are kept distinct.
The response contains a per-job status for each submitted URL:
queued, waitlisted, or error.
To receive results via webhook instead of polling, include a global callback_url.
All jobs in the batch then become callback jobs.
Batch submission is expensive: large batches with slow DNS can exceed transport timeouts and produce 504 responses on the client side, while server-side processing continues. Naive retry then creates duplicate jobs.
Send an idempotency_key (16-128 chars [A-Za-z0-9_.-]) to make retries safe:
a second batch with the same key from the same account, within 24 h, returns the
original response (X-Idempotent-Replay: true header) without creating new jobs
or deducting quota.
Recommended pattern: generate a UUID before the first call, retry with the same UUID on transport/parse errors, drop it on success.
| preset | string Default: "" Enum: "" "og" "mobile" "youtube_thumbnail" "square" "reel" "pinterest" "tablet" "laptop" "desktop" "desktop_hd" "twitter_header" "linkedin_banner" "hero_banner" Named output preset. When set, fills missing
Omit | ||||||||||||||||||||||||||||||||||||||||||
| viewport_width | integer [ 280 .. 3840 ] Default: 1280 Browser viewport width in pixels. Default: 1280.
Common labelled widths: 360, 375, 390, 414, 430, 768, 1024, 1200, 1280, 1440, 1920.
Non-Pro accounts are limited to 390, 768, 1280.
Shotbot Pro may also pass any custom width between 280 and 3840 px,
useful for CSS / responsive testing at arbitrary breakpoints.
A value outside the allowed set returns | ||||||||||||||||||||||||||||||||||||||||||
| output_size | integer Enum: 120 160 240 320 390 480 640 768 1024 1080 1200 1280 1440 1500 1584 1920 Output image width in pixels. Defaults to | ||||||||||||||||||||||||||||||||||||||||||
| ratio | string Default: "16:9" Enum: "16:9" "4:3" "16:10" "3:2" "2:1" "1:1" "9:16" "3:4" "10:16" "2:3" "1:2" Aspect ratio used to compute output height. An empty string falls back to
the default; a non-empty value outside the enum returns | ||||||||||||||||||||||||||||||||||||||||||
| crop_height | integer [ 10 .. 30000 ] Custom output height in pixels. Overrides | ||||||||||||||||||||||||||||||||||||||||||
| fullpage | boolean Default: false Capture the full page height (max 30,000 px). Ignores | ||||||||||||||||||||||||||||||||||||||||||
| format | string Default: "jpg" Enum: "jpg" "png" "webp" "webp_lossless" "avif" "pdf" Output format. Non-Pro accounts are limited to | ||||||||||||||||||||||||||||||||||||||||||
| hidpi | boolean Default: false Render at 2× device pixel ratio (HiDPI / Retina). | ||||||||||||||||||||||||||||||||||||||||||
| color_scheme | string or null Enum: "dark" "light" null Force a color scheme before capture.
| ||||||||||||||||||||||||||||||||||||||||||
| render_region | string Default: "fr-paris" Enum: "fr-paris" "ca-montreal" "sg-singapore" "au-sydney" "vn-hanoi" Geographic region the rendering worker exits from. The browser is routed through a SOCKS5 proxy in the chosen region and its locale, timezone, and geolocation are emulated to match. Region key shape:
Use to capture geo-restricted content, regionally localised pages, currency
or banner variants, or to verify what a page looks like from a given
market. Pro only for non- | ||||||||||||||||||||||||||||||||||||||||||
| nojs | boolean Default: false Disable JavaScript execution before capture. | ||||||||||||||||||||||||||||||||||||||||||
| autoplay_videos | boolean Default: false Launch Chromium with No effect on PDF captures (no playback) or when the page itself
has no | ||||||||||||||||||||||||||||||||||||||||||
| prefers_reduced_motion | boolean Default: false Emulate the | ||||||||||||||||||||||||||||||||||||||||||
| omit_background | boolean Default: false Render with a transparent background ( Visible on | ||||||||||||||||||||||||||||||||||||||||||
| emulate_print_media | boolean Default: false Call | ||||||||||||||||||||||||||||||||||||||||||
| wait_time | integer [ 0 .. 30 ] Default: 5 Seconds to wait after page load before capturing
(0 = capture immediately after page load).
Free accounts: 0-5. Shotbot Pro: 0-30 (longer waits help
JavaScript-heavy / slow pages). A free request above 5 s is rejected
with | ||||||||||||||||||||||||||||||||||||||||||
| dismiss_cookies | string Default: "" Enum: "" "accept" "reject" Auto-interact with cookie consent banners. Pro only.
| ||||||||||||||||||||||||||||||||||||||||||
| frame | string Default: "" Enum: "" "rounded" "shadow" "browser_chrome" "browser_chrome_dark" "mobile" "mobile_light" "tablet" "tablet_light" "laptop" "polaroid" "gradient" "shotbot_brand" Decorative frame composited around the rendered image (image formats only, silently ignored for PDF).
Most variants extend OUTSIDE the requested Free accounts get a small PNG/WebP/AVIF formats render transparent pixels outside the mockup bezel (real see-through corners). JPG has no alpha channel so those areas flatten to black. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_before_capture | boolean Default: false Scroll the page before capturing (triggers lazy-loaded images). Pro only. | ||||||||||||||||||||||||||||||||||||||||||
| scroll_offset_px | integer [ 0 .. 30000 ] Default: 0 Scroll the page down by this many pixels before capturing (no scroll back),
so the viewport frame starts at Y=N. Runs after | ||||||||||||||||||||||||||||||||||||||||||
| scroll_to | string <= 500 characters CSS selector to | ||||||||||||||||||||||||||||||||||||||||||
| block_ads | boolean Default: false Block ad network requests during capture. Pro only. | ||||||||||||||||||||||||||||||||||||||||||
object HTTP Basic Auth credentials for password-protected pages. Pro only. | |||||||||||||||||||||||||||||||||||||||||||
| pdf_page_size | string Default: "A4" Enum: "A4" "A3" "A5" "Letter" "Legal" "Tabloid" PDF page size. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_margin_mm | integer [ 0 .. 50 ] Default: 10 PDF page margin in mm. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_scale | number [ 0.1 .. 2 ] Default: 1 PDF rendering scale factor. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| pdf_landscape | boolean Default: false PDF landscape orientation. Only used when | ||||||||||||||||||||||||||||||||||||||||||
| selector | string <= 500 characters CSS selector of the DOM element to screenshot. Only the matched element is
captured, returned at its natural dimensions: | ||||||||||||||||||||||||||||||||||||||||||
| private | boolean Default: false Private capture. When The web preview ( Deduplication is disabled for private captures (each call produces a fresh token with its own file). Available to all accounts (not Pro-gated). | ||||||||||||||||||||||||||||||||||||||||||
Array of objects <= 50 items Cookies to inject before navigation. Useful for capturing authenticated pages
without HTTP Basic Auth. Each entry must include | |||||||||||||||||||||||||||||||||||||||||||
| key required | string^[0-9A-Za-z]{12}$ Your 12-character alphanumeric API key. | ||||||||||||||||||||||||||||||||||||||||||
required | Array of objects (BatchJobInput) [ 1 .. 5000 ] items Array of capture jobs. Each entry must include a | ||||||||||||||||||||||||||||||||||||||||||
| callback_url | string <uri> Global webhook URL. When set, all jobs in the batch become callback jobs. Must use HTTPS and resolve to a public IP. | ||||||||||||||||||||||||||||||||||||||||||
| callback_secret | string <= 255 characters Global HMAC secret echoed back in every callback POST. | ||||||||||||||||||||||||||||||||||||||||||
| idempotency_key | string^[A-Za-z0-9_.\-]{16,128}$ Client-supplied retry-safety key. Replaying the same key within 24 h from
the same account returns the original response ( |
{- "key": "aB3kR7mZx9Lq",
- "format": "png",
- "viewport_width": 1280,
}{- "submitted": 2,
- "waitlisted": 0,
- "deduplicated": 1,
- "errors": 1,
- "eta_seconds": 25,
- "jobs": [
- {
- "index": 0,
- "token": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
- "job_id": 1843221,
- "status": "queued"
}, - {
- "index": 1,
- "token": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
- "status": "queued",
- "deduplicated": true
}, - {
- "index": 2,
- "token": "c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6",
- "job_id": 1843222,
- "status": "queued"
}, - {
- "index": 3,
- "status": "error",
- "error": "invalid_url",
- "detail": "Only public http/https URLs are supported"
}
]
}Returns the current plan, credit balance, monthly quota usage, and number of captures in flight for the authenticated account.
Authentication: pass the 12-character alphanumeric API key as ?key= query
parameter or as an Authorization: Bearer <key> header.
| key | string^[0-9A-Za-z]{12}$ 12-character alphanumeric API key (required if no Bearer header). |
{- "plan": "free",
- "pro_until": null,
- "credit": 50,
- "quota_used": 12,
- "quota_total": 200,
- "quota_remaining": 188,
- "inflight": 1,
- "inflight_cap": 3
}