API скриншотов

API скриншотов для разработчиков.

Отправьте публичный адрес, HTML или Markdown. Задайте экран, уберите лишнее и получите PNG, JPG, WebP, PDF, HTML или Markdown.

  • PNG
  • JPG
  • WebP
  • PDF
  • HTML
  • Markdown

Токен API будет на следующем экране.

  • Вся страница, экран или элемент
  • Баннеры, реклама и чаты блокируются
  • Подписанные ссылки и вебхуки
https://example.com
PNG

Снятая страница

Example Domain

Вся страница, а не только первый экран.

POST /api/v1/screenshots
Authorization: Bearer <access_token>

{
  "url": "https://example.com",
  "full_page": true
}

202 Accepted  status: pending

Что меняет один запрос

Источник, экран, лишнее, ожидание и файл, который вернётся.

Блокировка

Чистые скриншоты

Скажите, что должно остаться за кадром. Тот же запрос скрывает баннеры, рекламу и виджеты.

Баннеры cookie, реклама и чаты

Блокируйте баннеры cookie, баннеры по эвристике, рекламу, трекеры и виджеты чатов.

Скрывайте селекторы

Передайте CSS-селекторы, которые нужно скрыть. Остальная страница остаётся на снимке.

Блокируйте запросы и ресурсы

Блокируйте шаблоны URL или отбрасывайте типы ресурсов: image, stylesheet, script, font, media и XHR.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "block_cookie_banners": true,
  "block_banners_by_heuristics": true,
  "block_ads": true,
  "block_trackers": true,
  "block_chats": true,
  "hide_selectors": [ ".cookie", ".chat" ],
  "block_resources": [ "font" ]
}

Рендер

Страница рендерится так, как нужно снимку

Тема, движение, скрипты и паузы — поля того же запроса.

Тема, движение и носитель

Запросите тёмную или светлую тему, уменьшенное движение или замороженные анимации. Эмулируйте screen или print.

CSS и JavaScript

Вставьте стили и выполните скрипт до снимка. Если скрипт переходит на другую страницу, назовите событие, которого нужно дождаться. Обходите Content-Security-Policy, когда страница блокирует эту вставку.

Ожидание, клик и наведение

Дождитесь load, DOMContentLoaded или затишья сети. Дождитесь селектора, кликните его, наведите курсор или прокрутите в зону видимости, затем добавьте паузу. Задайте, сколько могут длиться переход и ожидание селектора.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "dark_mode": true,
  "reduce_motion": true,
  "media_type": "screen",
  "styles": "header { position: static }",
  "wait_until": [ "networkidle0" ],
  "wait_for_selector": ".price",
  "click": "button.accept",
  "delay": 0.5
}

Окно

Любой экран, вся страница или один элемент

Начните с телефона или планшета либо задайте окно сами. Снимите всё, один экран, селектор или прямоугольник.

Пресеты устройств

Пресеты iPhone, Pixel, Galaxy и iPad задают размер, плотность пикселей, касание, альбомную ориентацию и user agent. Эти поля можно задать и самим. GET /api/v1/devices перечисляет идентификаторы.

Вся страница, вместе с ленивым содержимым

Полная страница включена по умолчанию. Прокрутите страницу, чтобы подгрузить ленивое содержимое, ограничьте высоту или сохраните перекрывающиеся вертикальные срезы PNG, JPG или WebP.

Селектор или фрагмент

Снимите CSS-селектор, в том числе как прямоугольник, или передайте clip_x, clip_y, clip_width и clip_height. Задача завершается ошибкой, если селектор, клик или наведение ничего не находят.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "viewport_device": "iphone_14",
  "full_page": true,
  "full_page_scroll": true,
  "full_page_max_height": 8000,
  "selector": "article"
}

Вход и выход

На входе URL, HTML или Markdown

Отправьте ровно один источник. Выберите файл, который вернётся.

URL, HTML или Markdown

Публичный адрес http или https, HTML до 500 КБ или Markdown до 200 КБ.

Шесть форматов

PNG, JPG, WebP, PDF, HTML или Markdown. JPEG сохраняется как JPG. MARKDOWN сохраняется как MD.

Параметры изображения и PDF

Измените размер изображения, задайте качество JPEG или WebP от 0 до 100 или уберите фон для прозрачного PNG. Для PDF задайте бумагу, поля, альбомную ориентацию, укладку на одну страницу и печать фона.

POST /api/v1/screenshots Пример
{
  "markdown": "# Receipt\n\nThanks for your order.",
  "format": "PDF",
  "pdf_paper_format": "a4",
  "pdf_margin": "12mm",
  "pdf_print_background": true
}

Метаданные

Что было на странице

Запросите факты в готовой задаче или завершите снимок ошибкой, если текст не тот.

Факты о странице

Размер изображения, заголовок, статус HTTP, шрифты, теги Open Graph и значок страницы.

Содержимое страницы

Включите содержимое как HTML, простой текст или Markdown.

Проверки текста

Завершайте ошибкой, если текст страницы содержит строку или в нём нет обязательной строки. Сохраните свой внешний идентификатор и ключ кэша в задаче.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "metadata_page_title": true,
  "metadata_open_graph": true,
  "metadata_content": true,
  "metadata_content_format": "markdown",
  "fail_if_content_missing": [ "In stock" ]
}

Запрос

Отправьте запрос, которого ждёт страница

Заголовки, cookie, место и время уходят вместе со снимком. Частные сети отклоняются.

Заголовки, cookie и auth

Добавьте заголовки запроса, значение Authorization для страницы и cookie, которые остаются на целевом хосте.

Часовой пояс и геолокация

Задайте часовой пояс IANA, широту, долготу и точность. Задайте user agent сами или позвольте это пресету устройства.

Закрытые хосты не открываются

Localhost, имена .local и частные, loopback и link-local адреса отклоняются до того, как их откроет Chrome. ignore_host_errors продолжает работу, когда сама публичная страница возвращает ошибку HTTP.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "time_zone": "Europe/Berlin",
  "geolocation_latitude": 52.52,
  "geolocation_longitude": 13.405,
  "authorization": "Bearer page-token",
  "headers": { "Accept-Language": "en" },
  "cookies": [ "session=abc; Domain=example.com; Secure" ]
}

Три шага до снимка

Создайте аккаунт, отправьте источник и заберите файл, когда он будет готов.

1

Создайте аккаунт

Вы получите токен доступа. API принимает его в заголовке Authorization.

2

Отправьте источник

Публичный адрес, HTML или Markdown. Site2image проверяет адрес, принимает задачу и отвечает 202, пока идёт снимок.

3

Заберите файл

Опросите скриншот или передайте callback URL, и мы отправим подписанную ссылку методом POST.

Доставка

Сначала задача, потом подписанный файл

Create отвечает, как только задача попадает в очередь. Файл остаётся закрытым, пока не выдана подписанная ссылка.

Опрос или скачивание

Статус идёт от pending к processing, затем к ready или failed. У готовой задачи есть подписанный URL. Скачивание перенаправляет на него.

Вебхуки

Задайте callback_url, и Site2image отправит результат методом POST. Подпишите тело как HMAC-SHA256 вашего токена доступа. Сбой вебхука оставляет скриншот готовым.

Кэш

Повторно используйте последний готовый снимок с тем же адресом, форматом и параметрами. Окно по умолчанию — 4 часа. Попадание возвращает 200 с готовым скриншотом.

POST /api/v1/screenshots Пример
{
  "url": "https://example.com",
  "cache": true,
  "cache_ttl": 14400,
  "callback_url": "https://client.example.com/hooks/screenshots",
  "webhook_sign": true
}

MCP

Тот же захват из ассистента

Укажите MCP-клиенту адрес /mcp и передайте тот же токен. Ассистент сможет выбрать устройство, запустить съёмку и прочитать файл.

Те же три инструмента

list_devices, create_screenshot и get_screenshot принимают те же поля, что и HTTP API.

Тот же токен

Передавайте токен доступа в заголовке bearer. Токен остаётся в этом заголовке.

Дождитесь файла

create_screenshot ждёт файл и возвращает тот же JSON, что и проверка статуса. Небольшое изображение прилагается, чтобы ассистент его увидел. HTML и Markdown возвращаются текстом, когда размер это позволяет.

POST /mcpJSON-RPC
{
  "mcpServers": {
    "site2image": {
      "url": "https://site2image.ru/mcp",
      "headers": {
        "Authorization": "Bearer <access_token>"
      }
    }
  }
}

Прежде чем отправить первый адрес

Публичные страницы входят. Частные сети остаются закрытыми. Файл остаётся в вашем аккаунте.

Какие адреса можно снимать?

Абсолютные HTTP- и HTTPS-адреса в публичном интернете. Localhost, имена .local и частные, loopback и link-local адреса отклоняются.

Можно ли отрендерить HTML или Markdown, который у меня уже есть?

Отправьте ровно одно из полей url, html или markdown. HTML ограничен 500 КБ, Markdown — 200 КБ. Файл может быть PNG, JPG, WebP, PDF, HTML или Markdown.

Можно ли убрать баннеры и рекламу?

Блокируйте баннеры cookie, эвристические баннеры, рекламу, трекеры и чаты. Скрывайте CSS-селекторы, блокируйте шаблоны URL или отбрасывайте типы ресурсов, например script и image.

Когда я получу файл?

Создание возвращает 202 с id и статусом pending. Опросите этот скриншот или задайте callback_url, и Site2image отправит подписанную ссылку, когда снимок будет готов.

Та же страница будет снята снова?

Установите cache в true, и Site2image повторно использует ваш последний готовый снимок с тем же адресом, форматом и параметрами за последние cache_ttl секунд. По умолчанию это 4 часа. Попадание возвращает 200 со ссылкой на файл.

Кто может его скачать?

Только аккаунт, который создал скриншот. Чужой id возвращает 404. Сам файл закрыт, пока не выдана подписанная ссылка.

Что, если страницу нельзя снять?

Задача помечается как неудачная, и API возвращает безопасное сообщение. Внутренние ошибки остаются на сервере. Задачу также можно завершить ошибкой, если нет обязательного текста или есть запрещённый.

Может ли ассистент вызвать это?

Да. Отправьте JSON-RPC методом POST на /mcp с тем же bearer-токеном. create_screenshot принимает те же поля, что и HTTP API, и может дождаться файла.

API скриншотов для разработчиков.

Создайте аккаунт, скопируйте токен и отправьте публичный адрес, HTML или Markdown.