Capture a screenshot
Sync by default (holds up to 28s). Pass async: true in the body or ?async=true in the
query string to return 202 immediately; either one is enough, and false in one never
cancels true in the other.
Poll via GET /v1/screenshots/{id}.
Limits: request bodies are capped at 512 KB. An oversized body
returns a 400 with error code request_too_large.
For AI agents: https://bytekit.com/llms.txt — every docs page is available as markdown by appending .md
Authorization
AuthorizationRequiredBearer <token>API key. Manage keys from the dashboard at app.bytekit.com.
In: header
Request Body
application/jsonRequiredurlRequiredstring"uri"devicestring"desktop"Value in: "desktop" | "mobile"viewportobjectnullasyncbooleanWhen true, the request returns 202 immediately and the screenshot is captured in the background; poll GET /v1/screenshots/{id}. The ?async=true query parameter is a second spelling of this field: the request is async when either one says true, and false in one never cancels true in the other.
falsefull_pagebooleanfalseformatstring"jpeg"Value in: "jpeg" | "png"qualityinteger80Minimum: 1Maximum: 100block_adsbooleantrueblock_cookie_bannersbooleantruewait_untilstring"load"Value in: "load" | "domcontentloaded" | "networkidle"wait_for_selectorstring | nullnulldelay_msinteger0Minimum: 0Maximum: 10000scrollbooleantrueclipobjectnulldark_modebooleanfalsedevice_scale_factorinteger | nullnullValue in: 1 | 2 | nullinclude_htmlbooleanfalsecountrystring"US"Pattern: "^[A-Z]{2}$"languagestring | nullnullmetadataobjectArbitrary key-value metadata. Max 4096 bytes when JSON-serialized.
Query Parameters
asyncbooleanQuery-string spelling of the body async field. true returns the 202 immediately; any other value is ignored.
falseScreenshot completed (sync mode).