# Delete Task Source: https://docs.screenshotmax.com/endpoints/delete-tasks DELETE https://api.screenshotmax.com/v1/tasks/{id} Delete a scheduled task It’s simple to use: you only need to submit your `access_key` and the task `id`. The API will delete the scheduled task for your account. **Plan Requirement** Scheduled Tasks are available only on the **Scale plan**. Upgrade your account via the Subscription / Dashboard [section](https://app.screenshotmax.com/subscribe/monthly) to unlock this feature. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Task API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Task API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Task API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST and PATCH requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/tasks ``` ### Validation endpoint ScreenshotMAX’s Task API simply requires your unique access key. The API will return an empty response. ``` DELETE https://api.screenshotmax.com/v1/tasks/5650820808835072 ? access_key=YOUR_ACCESS_KEY ``` This was a successful request, so the API returned a 204 Created response. ### Path parameters Unique identifier for the scheduled task. ### Query parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Response parameters The API will return a 204 No Content response if the task was successfully deleted. There is no response body. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ---------------------------------------------------------------- | | 204 | OK | The request was successful. | | 400 | Bad Request | The request was rejected due to a missing or invalid parameter. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 402 | Payment Required | Access denied due to an unpaid invoice. | | 404 | Not Found | The requested resource was not found. | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Devices Source: https://docs.screenshotmax.com/endpoints/devices GET https://api.screenshotmax.com/v1/devices Get a list of available devices for emulation. It’s simple to use: you only need to submit your `access_key`. The API will return a list of available devices for emulation. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Device API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Device API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Device API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/devices ``` ### Validation endpoint ScreenshotMAX’s Device API simply requires your unique access key. The API will return a list of available devices for emulation. ``` https://api.screenshotmax.com/v1/devices ? access_key=YOUR_ACCESS_KEY ``` This was a successful request, so the API returned a 200 OK response with the list of available devices for emulation. ```json { "devices": [ { "id": "blackberry_playbook", "name": "Blackberry PlayBook", "viewport": { "width": 600, "height": 1024, "device_scale_factor": 1, "mobile": true, "landscape": false, "has_touch": true } }, { "id": "blackberry_playbook_landscape", "name": "Blackberry PlayBook landscape", "viewport": { "width": 1024, "height": 600, "device_scale_factor": 1, "mobile": true, "landscape": true, "has_touch": true } }, ... ] } ``` ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). List of available devices for emulation. Device ID. Name of the device in snake\_case format. Device name. Device user agent. Device viewport. Viewport width. Viewport height. Device scale factor. Whether the `meta viewport` tag is taken into account. Specifies if the viewport is in landscape mode. Specify if the viewport supports touch events. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------ | | 200 | OK | The request was successful. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 500 | Internal server error | The request failed due to an internal server error. | # Pdf Source: https://docs.screenshotmax.com/endpoints/get-pdf GET https://api.screenshotmax.com/v1/pdf Generate a PDF from a webpage. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the pdf of the webpage. ## Getting started ### REST The PDF API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The PDF API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The PDF API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/pdf ``` ### Validation endpoint ScreenshotMAX’s PDF API simply requires your unique access key and url to be passed in the URL. The API will return a pdf of the webpage. ``` https://api.screenshotmax.co/v1/pdf ?access_key=YOUR_ACCESS_KEY &url=https://example.com ``` This was a successful request, so the API returned a 200 OK response. The pdf is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. **Either `url` or `html` must be provided.** For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. This parameter allows you to provide raw HTML content to render and capture as a screenshot. It must be a valid HTML string. **Either `url` or `html` must be provided.** Example: `html=

Hello, World!

`
Available options include: are `letter`, `legal`, `tabloid`, `ledger`, `a0`, `a1`, `a2`, `a3`, `a4`, `a5`, `a6`. Use this setting to control the dimensions of the output when generating PDF documents. Defines the orientation of the webpage when rendering as a PDF. `true` for landscape and `false` for portrait. Print background colors and images. `true` to print background colors and images, `false` to not print background colors and images. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture content without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). The cryptographic signature used to verify the authenticity of the request. For more information on how to compute and validate this signature, see the [signed requests documentation](https://docs.screenshotmax.com/start/signed-request"). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Scrape Source: https://docs.screenshotmax.com/endpoints/get-scrape GET https://api.screenshotmax.com/v1/scrape Scrape data from webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the content of the webpage. ## Getting started ### REST The Scrape API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Scrape API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Scrape API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/scrape ``` ### Validation endpoint ScreenshotMAX’s Scrape API simply requires your unique access key and url to be passed in the URL. The API will return the content of the webpage. ``` https://api.screenshotmax.co/v1/scrape ?access_key=YOUR_ACCESS_KEY &url=https://example.com ``` This was a successful request, so the API returned a 200 OK response. The content of the webpage is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. The format of the screenshot. Available formats are `html`, `md`. The `html` format returns the HTML content of the webpage, while the `md` format returns the content in Markdown format. Whether to enable JavaScript on the page. If set to `false`, the API will return the HTML content of the page without executing any JavaScript. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The media type for the rendering. Options include `screen` and `print`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture content without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). The cryptographic signature used to verify the authenticity of the request. For more information on how to compute and validate this signature, see the [signed requests documentation](https://docs.screenshotmax.com/start/signed-request"). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Screencast Source: https://docs.screenshotmax.com/endpoints/get-screencast GET https://api.screenshotmax.com/v1/screencast Capture high-quality animated screenshots of webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the animated screenshot of the webpage. ## Getting started ### REST The Screencast API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Screencast API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Screencast API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/screencast ``` ### Validation endpoint ScreenshotMAX’s Screencast API simply requires your unique access key and url to be passed in the URL. The API will return an animated screenshot of the webpage. ``` https://api.screenshotmax.co/v1/screencast ?access_key=YOUR_ACCESS_KEY &url=https://example.com ``` This was a successful request, so the API returned a 200 OK response. The animated screenshot is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. The format of the animated screenshot. Available formats are `webm`, `mp4`, `mov`, `avi`. The duration of the animated screenshot in seconds. The default value is `5` seconds. Maximum value is `30` seconds. The scenario of the animated screenshot. Available scenarios are `video`, and `scroll`. The `video` scenario captures the entire webpage as a video. The `scroll` scenario captures the webpage by scrolling down. The `scroll_by_amount` parameter is only applicable for the `scroll` scenario. It specifies the amount to scroll in pixels for one step. The default value is `1000` pixels. The `scroll_by_delay` parameter is only applicable for the `scroll` scenario. It specifies the delay between each scroll in milliseconds. The default value is `500` milliseconds. The `scroll_by_duration` parameter is only applicable for the `scroll` scenario. It specifies the total duration for all steps of scrolls in milliseconds. The default value is `1500` milliseconds. The `scroll_back` parameter is only applicable for the `scroll` scenario. When set to `true`, the animated screenshot will scroll back to the top of the page after reaching the bottom. The `scroll_back_delay` parameter is only applicable for the `scroll` scenario. It specifies the delay before scrolling back to the top in milliseconds. The default value is `800` milliseconds. The `scroll_easing` parameter is only applicable for the `scroll` scenario. It specifies the easing function to use for the scroll animation. Available values are `linear`, `ease_in_quad`, `ease_out_quad`, `ease_in_out_quad`, `ease_in_cubic`, `ease_out_cubic`, `ease_in_out_cubic`, `ease_in_quart`, `ease_out_quart`, `ease_in_out_quart`, `ease_in_quint`, `ease_out_quint` and `ease_in_out_quint`. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture content without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). The cryptographic signature used to verify the authenticity of the request. For more information on how to compute and validate this signature, see the [signed requests documentation](https://docs.screenshotmax.com/start/signed-request"). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Screenshot Source: https://docs.screenshotmax.com/endpoints/get-screenshot GET https://api.screenshotmax.com/v1/screenshot Capture high-quality screenshots of webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the screenshot of the webpage. ## Getting started ### REST The Screenshot API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Screenshot API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Screenshot API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/screenshot ``` ### Validation endpoint ScreenshotMAX’s Screenshot API simply requires your unique access key and url to be passed in the URL. The API will return a screenshot of the webpage. ``` https://api.screenshotmax.com/v1/screenshot ?access_key=YOUR_ACCESS_KEY &url=https://example.com ``` This was a successful request, so the API returned a 200 OK response. The screenshot is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. **Either `url` or `html` must be provided.** For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. This parameter allows you to provide raw HTML content to render and capture as a screenshot. It must be a valid HTML string. **Either `url` or `html` must be provided.** Example: `html=

Hello, World!

`
The format of the screenshot. Available formats are `jpeg`, `jpg`, `png`, `webp`, `gif`. `jpg` is an alias for `jpeg`. The quality of the image. This parameter is only applicable for `jpeg`, `jpg`, `webp` formats. Allowed values range from `1` to `100`. The `image_width` and `image_height` parameters let you generate a thumbnail version of the screenshot. When specified, the screenshot is resized to fit within the given width and height while preserving the aspect ratio. The image will be as large as possible without exceeding the specified dimensions.\ If only one parameter is provided, the other is automatically calculated to maintain the aspect ratio. The `image_width` and `image_height` parameters let you generate a thumbnail version of the screenshot. When specified, the screenshot is resized to fit within the given width and height while preserving the aspect ratio. The image will be as large as possible without exceeding the specified dimensions.\ If only one parameter is provided, the other is automatically calculated to maintain the aspect ratio. Render a transparent background for the image. Works only if the site has not defined background color. Available for the following response formats: `png`, `webp`. Whether to take a full page screenshot. Whether to scroll the page to take a full page screenshot. This is useful for pages that load content dynamically as you scroll. The amount of pixels to scroll per step. The duration in milliseconds for each step. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata image width and height in the screenshot. This allows you to capture the dimensions of the screenshot. The dimensions will be included in the header `X-Screenshotmax-Metadata-Image-Size`. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture content without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). The cryptographic signature used to verify the authenticity of the request. For more information on how to compute and validate this signature, see the [signed requests documentation](https://docs.screenshotmax.com/start/signed-request"). ## Response and error codes The API response is returned in binary format. The response is a screenshot of the webpage in the specified format. The response headers include the following: * `Content-Type`: The content type of the response. This indicates the format of the screenshot. * `Content-Disposition`: The content disposition of the response. This indicates how the screenshot should be handled by the browser. If the `attachment_name` parameter is provided, the filename will be included in this header. * `X-Screenshotmax-Request-Id`: The unique identifier for the request. This can be used to track the request in the logs. * `X-Screenshotmax-Metadata-Icon`: The URL of the icon of the webpage. This is only included if the `metadata_icon` parameter is set to `true`. * `X-Screenshotmax-Metadata-Title`: The title of the webpage. This is only included if the `metadata_title` parameter is set to `true`. * `X-Screenshotmax-Metadata-Fonts`: The fonts used on the webpage. This is only included if the `metadata_fonts` parameter is set to `true`. * `X-Screenshotmax-Metadata-Hash`: The hash of the screenshot. This is only included if the `metadata_hash` parameter is set to `true`. * `X-Screenshotmax-Metadata-Status`: The HTTP status code of the webpage. This is only included if the `metadata_status` parameter is set to `true`. * `X-Screenshotmax-Metadata-Headers`: The headers of the webpage. This is only included if the `metadata_headers` parameter is set to `true`. * `X-Screenshotmax-Metadata-Image-Size`: The dimensions of the screenshot. This is only included if the `metadata_image_size` parameter is set to `true`. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # List Tasks Source: https://docs.screenshotmax.com/endpoints/get-tasks GET https://api.screenshotmax.com/v1/tasks Get all your scheduled tasks It’s simple to use: you only need to submit your `access_key`. The API will return the list of your scheduled tasks for your account. **Plan Requirement** Scheduled Tasks are available only on the **Scale plan**. Upgrade your account via the Subscription / Dashboard [section](https://app.screenshotmax.com/subscribe/monthly) to unlock this feature. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Task API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Task API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Task API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST and PATCH requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/tasks ``` ### Validation endpoint ScreenshotMAX’s Task API simply requires your unique access key. The API will return the list of your scheduled tasks for your account. ``` https://api.screenshotmax.com/v1/tasks ? access_key=YOUR_ACCESS_KEY ``` This was a successful request, so the API returned a 200 OK response with the list of your scheduled tasks for your account. ```json { [ { "id": 5650820808835072, "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "crontab": "34 9 28 * *", "timezone": "Etc/UTC", "enabled": true, "created": 1714296566, "last_run": 1745832566, "runs": 12 }, ... ] } ``` ### Query parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). Unique identifier for the scheduled task. This ID is automatically generated when you create a new scheduled task. Name of the scheduled task. Service to be used for the scheduled task. Available options include `screenshot`, `screencast`, `pdf` and `scrape`. Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are `every_minute`, `every_hour`, `every_day`, `every_month` and `custom` (use standard cron syntax). Cron expression used to the scheduled task. Use [Unix Cron Format](https://crontab-generator.com/en) Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. Unix timestamp in seconds when the scheduled task was created. Unix timestamp in seconds when the scheduled task was last run. Number of times the scheduled task has run. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ---------------------------------------------------------------- | | 200 | OK | The request was successful. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 402 | Payment Required | Access denied due to an unpaid invoice. | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Get Task Source: https://docs.screenshotmax.com/endpoints/get-tasks-id GET https://api.screenshotmax.com/v1/tasks/{id} Get a scheduled task It’s simple to use: you only need to submit your `access_key`. The API will return the list of your scheduled tasks for your account. **Plan Requirement** Scheduled Tasks are available only on the **Scale plan**. Upgrade your account via the Subscription / Dashboard [section](https://app.screenshotmax.com/subscribe/monthly) to unlock this feature. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Task API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Task API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Task API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST and PATCH requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/tasks ``` ### Validation endpoint ScreenshotMAX’s Task API simply requires your unique access key. The API will return the scheduled task. ``` https://api.screenshotmax.com/v1/tasks/5650820808835072 ? access_key=YOUR_ACCESS_KEY ``` This was a successful request, so the API returned a 200 OK response with the scheduled task. ```json { "id": 5650820808835072, "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "crontab": "34 9 28 * *", "timezone": "Etc/UTC", "enabled": true, "created": 1714296566, "last_run": 1745832566, "runs": 12 } ``` ### Path parameters Unique identifier for the scheduled task. ### Query parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). Unique identifier for the scheduled task. This ID is automatically generated when you create a new scheduled task. Name of the scheduled task. Service to be used for the scheduled task. Available options include `screenshot`, `screencast`, `pdf` and `scrape`. Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are `every_minute`, `every_hour`, `every_day`, `every_month` and `custom` (use standard cron syntax). Cron expression used to the scheduled task. Use [Unix Cron Format](https://crontab-generator.com/en) Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. Unix timestamp in seconds when the scheduled task was created. Unix timestamp in seconds when the scheduled task was last run. Number of times the scheduled task has run. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ---------------------------------------------------------------- | | 200 | OK | The request was successful. | | 400 | Bad Request | The request was rejected due to a missing or invalid parameter. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 402 | Payment Required | Access denied due to an unpaid invoice. | | 404 | Not Found | The requested resource was not found. | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Update Task Source: https://docs.screenshotmax.com/endpoints/patch-tasks PATCH https://api.screenshotmax.com/v1/tasks/{id} Update a scheduled task It’s simple to use: you only need to submit your `access_key` and the payload. The API will return the scheduled task updated. **Plan Requirement** Scheduled Tasks are available only on the **Scale plan**. Upgrade your account via the Subscription / Dashboard [section](https://app.screenshotmax.com/subscribe/monthly) to unlock this feature. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Task API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Task API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Task API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST and PATCH requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/tasks/ ``` ### Validation endpoint ScreenshotMAX’s Task API simply requires your unique access key. The API will return the scheduled task updated. ```json PATCH https://api.screenshotmax.com/v1/tasks/5650820808835072 { "access_key": "YOUR_ACCESS_KEY", "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "timezone": "Etc/UTC", "enabled": true } ``` This was a successful request, so the API returned a 201 OK response with the updated scheduled task. ```json { "id": 5650820808835072, "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "crontab": "34 9 28 * *", "timezone": "Etc/UTC", "enabled": true, "created": 1714296566, "last_run": 1745832566, "runs": 12 } ``` ### Path parameters Unique identifier for the scheduled task. ### Body parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). Name of the scheduled task. The maximum length is 100 characters. Service to be used for the scheduled task. Available options include: * `screenshot` * `screencast` * `pdf` * `scrape` Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are: * `every_minute` * `every_hour` * `every_day` * `every_month` * `custom` (use standard cron syntax) **Optional** - Only available if the `frequency` is set to `custom`. Cron expression used to the scheduled task. You can create one easily using the [Unix Cron Format](http://crontab.org) with this tool [Unix Cron Generator](https://crontab-generator.com/en). The cron expression is a string that represents a schedule in the Unix cron format. It consists of five fields separated by spaces, each representing a different unit of time. The fields are: * minute (0-59) * hour (0-23) * day of the month (1-31) * month (1-12) * day of the week (0-6, where 0 is Sunday) The cron expression can also include special characters such as `*` (any value), `,` (list of values), `-` (range of values), and `/` (step values). For example, the cron expression `34 9 28 * *` means "run at 9:34 AM on the 28th day of every month". Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). Unique identifier for the scheduled task. This ID is automatically generated when you create a new scheduled task. Name of the scheduled task. Service to be used for the scheduled task. Available options include `screenshot`, `screencast`, `pdf` and `scrape`. Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are `every_minute`, `every_hour`, `every_day`, `every_month` and `custom` (use standard cron syntax). Cron expression used to the scheduled task. Use [Unix Cron Format](https://crontab-generator.com/en) Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. Unix timestamp in seconds when the scheduled task was created. Unix timestamp in seconds when the scheduled task was last run. Number of times the scheduled task has run. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ---------------------------------------------------------------- | | 201 | OK | The request was successful. | | 400 | Bad Request | The request was rejected due to a missing or invalid parameter. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 402 | Payment Required | Access denied due to an unpaid invoice. | | 404 | Not Found | The requested resource was not found. | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Pdf Source: https://docs.screenshotmax.com/endpoints/post-pdf POST https://api.screenshotmax.com/v1/pdf Generate a PDF from a webpage. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the pdf of the webpage. ## Getting started ### REST The PDF API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The PDF API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The PDF API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. You have to include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/pdf ``` ### Validation endpoint ScreenshotMAX’s PDF API simply requires your unique access key and url to be passed in the URL. The API will return a pdf of the webpage. ```json POST https://api.screenshotmax.com/v1/pdf { "access_key": "YOUR_ACCESS_KEY", "url": "https://example.com" } ``` This was a successful request, so the API returned a 200 OK response. The pdf is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. **Either `url` or `html` must be provided.** For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. This parameter allows you to provide raw HTML content to render and capture as a screenshot. It must be a valid HTML string. **Either `url` or `html` must be provided.** Example: `html=

Hello, World!

`
Available options include: are `letter`, `legal`, `tabloid`, `ledger`, `a0`, `a1`, `a2`, `a3`, `a4`, `a5`, `a6`. Use this setting to control the dimensions of the output when generating PDF documents. Defines the orientation of the webpage when rendering as a PDF. `true` for landscape and `false` for portrait. Print background colors and images. `true` to print background colors and images, `false` to not print background colors and images. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture screenshots without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Scrape Source: https://docs.screenshotmax.com/endpoints/post-scrape POST https://api.screenshotmax.com/v1/scrape Scrape data from webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the content of the webpage. ## Getting started ### REST The Scrape API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Scrape API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Scrape API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. You have to include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/scrape ``` ### Validation endpoint ScreenshotMAX’s Scrape API simply requires your unique access key and url to be passed in the URL. The API will return the content of the webpage. ```json POST https://api.screenshotmax.com/v1/scrape { "access_key": "YOUR_ACCESS_KEY", "url": "https://example.com" } ``` This was a successful request, so the API returned a 200 OK response. The content of the webpage is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. The format of the screenshot. Available formats are `html`, `md`. The `html` format returns the HTML content of the webpage, while the `md` format returns the content in Markdown format. Whether to enable JavaScript on the page. If set to `false`, the API will return the HTML content of the page without executing any JavaScript. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The media type for the rendering. Options include `screen` and `print`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture screenshots without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Screencast Source: https://docs.screenshotmax.com/endpoints/post-screencast POST https://api.screenshotmax.com/v1/screencast Capture high-quality animated screenshots of webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the animated screenshot of the webpage. ## Getting started ### REST The Screencast API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Screencast API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Screencast API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. You have to include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/screencast ``` ### Validation endpoint ScreenshotMAX’s Screencast API simply requires your unique access key and url to be passed in the URL. The API will return an animated screenshot of the webpage. ```json POST https://api.screenshotmax.com/v1/screencast { "access_key": "YOUR_ACCESS_KEY", "url": "https://example.com" } ``` This was a successful request, so the API returned a 200 OK response. The animated screenshot is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. The format of the animated screenshot. Available formats are `webm`, `mp4`, `mov`, `avi`. The duration of the animated screenshot in seconds. The default value is `5` seconds. Maximum value is `30` seconds. The scenario of the animated screenshot. Available scenarios are `video`, and `scroll`. The `video` scenario captures the entire webpage as a video. The `scroll` scenario captures the webpage by scrolling down. The `scroll_by_amount` parameter is only applicable for the `scroll` scenario. It specifies the amount to scroll in pixels for one step. The default value is `1000` pixels. The `scroll_by_delay` parameter is only applicable for the `scroll` scenario. It specifies the delay between each scroll in milliseconds. The default value is `500` milliseconds. The `scroll_by_duration` parameter is only applicable for the `scroll` scenario. It specifies the total duration for all steps of scrolls in milliseconds. The default value is `1500` milliseconds. The `scroll_back` parameter is only applicable for the `scroll` scenario. When set to `true`, the animated screenshot will scroll back to the top of the page after reaching the bottom. The `scroll_back_delay` parameter is only applicable for the `scroll` scenario. It specifies the delay before scrolling back to the top in milliseconds. The default value is `800` milliseconds. The `scroll_easing` parameter is only applicable for the `scroll` scenario. It specifies the easing function to use for the scroll animation. Available values are `linear`, `ease_in_quad`, `ease_out_quad`, `ease_in_out_quad`, `ease_in_cubic`, `ease_out_cubic`, `ease_in_out_cubic`, `ease_in_quart`, `ease_out_quart`, `ease_in_out_quart`, `ease_in_quint`, `ease_out_quint` and `ease_in_out_quint`. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture screenshots without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). ## Response and error codes ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Screenshot Source: https://docs.screenshotmax.com/endpoints/post-screenshot POST https://api.screenshotmax.com/v1/screenshot Capture high-quality screenshots of webpages. It’s simple to use: you only need to submit your `access_key` and a url `url` of a webpage. The API will return the screenshot of the webpage. ## Getting started ### REST The Screenshot API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Screenshot API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Screenshot API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX API. You have to include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/screenshot ``` ### Validation endpoint ScreenshotMAX’s Screenshot API simply requires your unique access key and url to be passed in the URL. The API will return a screenshot of the webpage. ```json POST https://api.screenshotmax.com/v1/screenshot { "access_key": "YOUR_ACCESS_KEY", "url": "https://example.com" } ``` This was a successful request, so the API returned a 200 OK response. The screenshot is returned in the body of the response. ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). The URL of the webpage you want to rendering of. Must be a valid URL and accessible from the internet. If the URL contains a querystring, it must be URL-encoded. **Either `url` or `html` must be provided.** For example, `https://example.com/test?param=1` should be passed as `https%3A%2F%2Fexample.com%2Ftest%3Fparam%3D1`. This parameter allows you to provide raw HTML content to render and capture as a screenshot. It must be a valid HTML string. **Either `url` or `html` must be provided.** Example: `html=

Hello, World!

`
The format of the screenshot. Available formats are `jpeg`, `jpg`, `png`, `webp`, `gif`. `jpg` is an alias for `jpeg`. The quality of the image. This parameter is only applicable for `jpeg`, `jpg`, `webp` formats. Allowed values range from `1` to `100`. The `image_width` and `image_height` parameters let you generate a thumbnail version of the screenshot. When specified, the screenshot is resized to fit within the given width and height while preserving the aspect ratio. The image will be as large as possible without exceeding the specified dimensions.\ If only one parameter is provided, the other is automatically calculated to maintain the aspect ratio. The `image_width` and `image_height` parameters let you generate a thumbnail version of the screenshot. When specified, the screenshot is resized to fit within the given width and height while preserving the aspect ratio. The image will be as large as possible without exceeding the specified dimensions.\ If only one parameter is provided, the other is automatically calculated to maintain the aspect ratio. Render a transparent background for the image. Works only if the site has not defined background color. Available for the following response formats: `png`, `webp`. Whether to take a full page screenshot. Whether to scroll the page to take a full page screenshot. This is useful for pages that load content dynamically as you scroll. The amount of pixels to scroll per step. The duration in milliseconds for each step. Whether to use GPU rendering. Only available for **scale paid plan.** Whether to capture content beyond the viewport. The device type for the viewport. The width of the viewport in pixels. The height of the viewport in pixels. Whether the viewport should be in landscape mode. Whether the viewport has touch capabilities. Whether the viewport is a mobile device. The device scale factor for the viewport. The x-coordinate of the top-left corner of the clipping region. The y-coordinate of the top-left corner of the clipping region. The width of the clipping region. The height of the clipping region. The annoyance to block. Options include `none`, `cookies_banner`, `ads`, `tracking`. The resources to block. Options include `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest` and `other`. The media type for the rendering. Options include `screen` and `print`. The vision deficiency for the rendering. Options include `reduced_contrast`, `blurred_vision`, `deuteranopia`, `achromatopsia`. Whether to use dark mode for the rendering. Whether to reduce motion for the rendering. The accuracy of the geolocation in meters. Minimum is `0`. Maximum is `1000`. The latitude of the geolocation. Minimum is `-90`. Maximum is `90`. The longitude of the geolocation. Minimum is `-180`. Maximum is `180`. The selectors to hide in the content. This allows you to remove specific elements from the rendering. Example: `hide_selectors=div.header,div.footer`. The selector to click in the content. This allows you to interact with specific elements before the rendering. Example: `click_selector=button.submit`. The name of the attachment, without the extension filename. This is the name that will be used when downloading the response. Extension will be automatically added based on the `format` parameter. The time zone for the request. This allows you to simulate different time zones. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). The authorization header to use for the request. This should be a base64-encoded string (e.g., for Basic Auth, encode "username:password" using base64). This allows you to authenticate with the webpage before capturing the content. The user agent to use for the request. This allows you to simulate different browsers and devices. The cookies to use for the request. This allows you to simulate different sessions and states. Example: `cookies=name=value; name2=value2`. The headers to use for the request. This allows you to simulate different requests and responses. Example: `headers=header1:value1; header2:value2`. The IP location to use for the request. This allows you to simulate requests from different countries by routing them through proxy servers with corresponding IP addresses. This feature is only available on **scale paid plan**. Supported locations: * United States (`us`) * China (`cn`) * Europe (`eu`) (random EU country) * Canada (`ca`) * Mexico (`mx`) * United Kingdom (`gb`) * Germany (`de`) * France (`fr`) * Switzerland (`ch`) * India (`in`) * Japan (`jp`) * South Korea (`kr`) * Russia (`ru`) * Brazil (`br`) * Australia (`au`) The proxy to use for the request. This allows you to route the request through a different IP address. The proxy must be in the format `http://username:password@host:port` or `https://username:password@host:port`. Whether to bypass the Content Security Policy (CSP) of the webpage. This allows you to capture content of webpages with strict CSPs. The delay in seconds before rendering. This allows you to wait for specific elements to load before capturing the content. Maximum is `30`. The timeout in seconds for the rendering. This allows you to set a maximum time for the request to complete. Maximum is `30`. The conditions to wait for before rendering. This allows you to ensure that specific elements are loaded before capturing the content. Available options include: * `load`: Wait for the load event to be fired. * `domcontentloaded`: Wait for the DOMContentLoaded event to be fired. * `networkidle0`: Wait for no network connections for at least 500 ms. * `networkidle2`: Wait for no more than 2 network connections to be active for at least 500 ms. Whether to include the metadata image width and height in the screenshot. This allows you to capture the dimensions of the screenshot. The dimensions will be included in the header `X-Screenshotmax-Metadata-Image-Size`. Whether to include the metadata icon in the response. This allows you to capture the favicon of the webpage. The link of the icon will be included in the header `X-Screenshotmax-Metadata-Icon`. Whether to include the metadata title in the response. This allows you to capture the title of the webpage. The title will be included in the header `X-Screenshotmax-Metadata-Title`. Whether to include the metadata fonts in the response. This allows you to capture the fonts used on the webpage. The fonts will be included in the header `X-Screenshotmax-Metadata-Fonts`. Whether to include the metadata hash in the response. This allows you to capture the hash of the webpage. The hash will be included in the header `X-Screenshotmax-Metadata-Hash`. Whether to include the metadata status in the response. This allows you to capture the HTTP status code of the webpage. The status code will be included in the header `X-Screenshotmax-Metadata-Status`. Whether to include the metadata headers in the response. This allows you to capture the headers of the webpage. The headers will be included in the header `X-Screenshotmax-Metadata-Headers`. Whether to store the content of the rendering in the cache. This allows you to store the rendered content for a specified time-to-live (TTL) period. The time-to-live (TTL) for the cache in seconds. This allows you to set a maximum time for the cached resources to be valid. Maximum is 30 days in seconds (`2592000`). Whether to use asynchronous processing for the requestt. This allows you to capture screenshots without blocking the request. The callback URL for asynchronous processing. This allows you to receive the response via a webhook. The webhook will be triggered when the response is ready. The webhook URL must be a valid URL and must be accessible from the internet. The webhook URL must be HTTPS and must support the `POST` method. More information about webhooks can be found in the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). Indicates whether the webhook request should be signed. Enabling this option allows you to verify the authenticity of incoming webhook requests. For more details, refer to the [async & webhook documentation](https://docs.screenshotmax.com/start/async-webhooks). ## Response and error codes The API response is returned in binary format. The response is a screenshot of the webpage in the specified format. The response headers include the following: * `Content-Type`: The content type of the response. This indicates the format of the screenshot. * `Content-Disposition`: The content disposition of the response. This indicates how the screenshot should be handled by the browser. If the `attachment_name` parameter is provided, the filename will be included in this header. * `X-Screenshotmax-Request-Id`: The unique identifier for the request. This can be used to track the request in the logs. * `X-Screenshotmax-Metadata-Icon`: The URL of the icon of the webpage. This is only included if the `metadata_icon` parameter is set to `true`. * `X-Screenshotmax-Metadata-Title`: The title of the webpage. This is only included if the `metadata_title` parameter is set to `true`. * `X-Screenshotmax-Metadata-Fonts`: The fonts used on the webpage. This is only included if the `metadata_fonts` parameter is set to `true`. * `X-Screenshotmax-Metadata-Hash`: The hash of the screenshot. This is only included if the `metadata_hash` parameter is set to `true`. * `X-Screenshotmax-Metadata-Status`: The HTTP status code of the webpage. This is only included if the `metadata_status` parameter is set to `true`. * `X-Screenshotmax-Metadata-Headers`: The headers of the webpage. This is only included if the `metadata_headers` parameter is set to `true`. * `X-Screenshotmax-Metadata-Image-Size`: The dimensions of the screenshot. This is only included if the `metadata_image_size` parameter is set to `true`. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------------------------------------------------------------ | | 200 | OK | The request was successful. | | 400 | Bad request | The request was malformed or invalid. | | 401 | Unauthorized | The request was rejected due to an invalid access key or missing signature when signed requests are enabled. | | 403 | Forbidden | The signature provided is invalid. Occurs when signed requests are enabled. | | 402 | Payment Required | Access denied due to an unpaid invoice. **Applies to paid plans.** | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Create Task Source: https://docs.screenshotmax.com/endpoints/post-tasks POST https://api.screenshotmax.com/v1/tasks Create a new scheduled task It’s simple to use: you only need to submit your `access_key` and the payload. The API will return the new scheduled task created. **Plan Requirement** Scheduled Tasks are available only on the **Scale plan**. Upgrade your account via the Subscription / Dashboard [section](https://app.screenshotmax.com/subscribe/monthly) to unlock this feature. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Task API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Task API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Task API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST and PATCH requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/tasks ``` ### Validation endpoint ScreenshotMAX’s Task API simply requires your unique access key. The API will return the list of your scheduled tasks for your account. ```json POST https://api.screenshotmax.com/v1/tasks { "access_key": "YOUR_ACCESS_KEY", "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "crontab": "34 9 28 * *", "timezone": "Etc/UTC", "enabled": true } ``` This was a successful request, so the API returned a 201 OK response with the new scheduled task for your account. ```json { "id": 5650820808835072, "name": "task screenshot", "api": "screenshot", "query": "url=https%3A%2F%2Fexample.com", "frequency": "every_month", "crontab": "34 9 28 * *", "timezone": "Etc/UTC", "enabled": true, "created": 1714296566, "last_run": 1745832566, "runs": 12 } ``` ### Body parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). Name of the scheduled task. The maximum length is 100 characters. Api endpoint for the scheduled task. Available options are: * `screenshot` * `screencast` * `pdf` * `scrape` Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are: * `every_minute` * `every_hour` * `every_day` * `every_month` * `custom` (use standard cron syntax) **Optional** - Only available if the `frequency` is set to `custom`. Cron expression used to the scheduled task. You can create one easily using the [Unix Cron Format](http://crontab.org) with this tool [Unix Cron Generator](https://crontab-generator.com/en). The cron expression is a string that represents a schedule in the Unix cron format. It consists of five fields separated by spaces, each representing a different unit of time. The fields are: * minute (0-59) * hour (0-23) * day of the month (1-31) * month (1-12) * day of the week (0-6, where 0 is Sunday) The cron expression can also include special characters such as `*` (any value), `,` (list of values), `-` (range of values), and `/` (step values). For example, the cron expression `34 9 28 * *` means "run at 9:34 AM on the 28th day of every month". Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). Unique identifier for the scheduled task. This ID is automatically generated when you create a new scheduled task. Name of the scheduled task. Service to be used for the scheduled task. Available options include `screenshot`, `screencast`, `pdf` and `scrape`. Query parameters for the scheduled task without the `access_key` parameter. The querystring can be URL-encoded. For example, `url=https%3A%2F%2Fexample.com` is the URL-encoded version of `url=https://example.com`. Frequency of the scheduled task. Available options are `every_minute`, `every_hour`, `every_day`, `every_month` and `custom` (use standard cron syntax). Cron expression used to the scheduled task. Use [Unix Cron Format](https://crontab-generator.com/en) Timezone for the scheduled task. Available time zones from the [IANA Time Zone Database](https://www.iana.org/time-zones). Indicates if the scheduled task is enabled or disabled. Unix timestamp in seconds when the scheduled task was created. Unix timestamp in seconds when the scheduled task was last run. Number of times the scheduled task has run. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ---------------------------------------------------------------- | | 201 | OK | The request was successful. | | 400 | Bad Request | The request was rejected due to a missing or invalid parameter. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 402 | Payment Required | Access denied due to an unpaid invoice. | | 404 | Not Found | The requested resource was not found. | | 423 | Locked | The request was denied due to insufficient quota. | | 429 | Too Many Requests | The rate limit has been exceeded (too many requests per minute). | | 500 | Internal server error | The request failed due to an internal server error. | # Usage Source: https://docs.screenshotmax.com/endpoints/usage GET https://api.screenshotmax.com/v1/usage Get usage statistics for your account. It’s simple to use: you only need to submit your `access_key`. The API will return the usage statistics for your account. Requests to this endpoint are **not counted against your usage quota,** but they are **still subject to rate limiting.** This ensures fair use and stability of the platform. If you exceed the rate limit, your requests may be temporarily blocked. ## Getting started ### REST The Usage API, like all of ScreenshotMAX’s APIs, is organized around REST. It is designed to use predictable, resource-oriented URL’s and to use HTTP status codes to indicate errors. ### HTTPS The Usage API requires all communications to be secured TLS 1.2 or greater. ### API Versions All of ScreenshotMAX’s APIs are versioned. The Usage API is currently on Version 1. ### Your Access Key Your access key is your unique authentication key to be used to access ScreenshotMAX APIs. To authenticate your requests, you will need to append your access key to the base URL as a query parameter for GET requests. For POST requests, you can include your access key in the request body as a JSON object. You can also use the `X-Access-Key` header to pass your access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Base URL ``` https://api.screenshotmax.com/v1/usage ``` ### Validation endpoint ScreenshotMAX’s Usage API simply requires your unique access key. The API will return usage statistics for your account. ``` https://api.screenshotmax.com/v1/usage ? access_key=YOUR_ACCESS_KEY ``` This was a successful request, so the API returned a 200 OK response with the usage statistics for your account. ```json { "hits": { "quota": 1000, "used": 500, "remaining": 500 }, "concurrency": { "limit": 100, "remaining": 50, "reset": 1633036868 } } ``` ### Request parameters Your unique access key. You can find your access key in your [account dashboard](https://app.screenshotmax.com/access). ### Response parameters The API response is returned in a universal and lightweight [JSON format](https://www.json.org/json-en.html). Usage statistics for your account. Total number of requests allowed per period. Number of requests used this period. Number of requests remaining this period. Usage statistics for your account. Total number of concurrent requests allowed. Number of concurrent requests remaining. Unix timestamp in seconds when the concurrency limit resets. ### Error Codes Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below. | Code | Type | Details | | ---- | --------------------- | ------------------------------------------------------ | | 200 | OK | The request was successful. | | 401 | Unauthorized | The request was rejected due to an invalid access key. | | 500 | Internal server error | The request failed due to an internal server error. | # null Source: https://docs.screenshotmax.com/guides/no-code/bubble # null Source: https://docs.screenshotmax.com/guides/no-code/make # null Source: https://docs.screenshotmax.com/guides/no-code/zappier # Devices Source: https://docs.screenshotmax.com/guides/references/devices Get a list of available devices for emulation # HTML to PDF Options Source: https://docs.screenshotmax.com/guides/references/pdf-options Customize HTML to PDF generation with ScreenshotMAX API