Создайте аккаунт
Вы получите токен доступа. API принимает его в заголовке Authorization.
API скриншотов
Отправьте публичный адрес, HTML или Markdown. Задайте экран, уберите лишнее и получите PNG, JPG, WebP, PDF, HTML или Markdown.
Токен API будет на следующем экране.
Снятая страница
Вся страница, а не только первый экран.
POST /api/v1/screenshots Authorization: Bearer <access_token> { "url": "https://example.com", "full_page": true } 202 Accepted status: pending
Источник, экран, лишнее, ожидание и файл, который вернётся.
Блокировка
Скажите, что должно остаться за кадром. Тот же запрос скрывает баннеры, рекламу и виджеты.
Блокируйте баннеры cookie, баннеры по эвристике, рекламу, трекеры и виджеты чатов.
Передайте CSS-селекторы, которые нужно скрыть. Остальная страница остаётся на снимке.
Блокируйте шаблоны URL или отбрасывайте типы ресурсов: image, stylesheet, script, font, media и XHR.
{
"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.
Вставьте стили и выполните скрипт до снимка. Если скрипт переходит на другую страницу, назовите событие, которого нужно дождаться. Обходите Content-Security-Policy, когда страница блокирует эту вставку.
Дождитесь load, DOMContentLoaded или затишья сети. Дождитесь селектора, кликните его, наведите курсор или прокрутите в зону видимости, затем добавьте паузу. Задайте, сколько могут длиться переход и ожидание селектора.
{
"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. Задача завершается ошибкой, если селектор, клик или наведение ничего не находят.
{
"url": "https://example.com",
"viewport_device": "iphone_14",
"full_page": true,
"full_page_scroll": true,
"full_page_max_height": 8000,
"selector": "article"
}
Вход и выход
Отправьте ровно один источник. Выберите файл, который вернётся.
Публичный адрес http или https, HTML до 500 КБ или Markdown до 200 КБ.
PNG, JPG, WebP, PDF, HTML или Markdown. JPEG сохраняется как JPG. MARKDOWN сохраняется как MD.
Измените размер изображения, задайте качество JPEG или WebP от 0 до 100 или уберите фон для прозрачного PNG. Для PDF задайте бумагу, поля, альбомную ориентацию, укладку на одну страницу и печать фона.
{
"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.
Завершайте ошибкой, если текст страницы содержит строку или в нём нет обязательной строки. Сохраните свой внешний идентификатор и ключ кэша в задаче.
{
"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, место и время уходят вместе со снимком. Частные сети отклоняются.
Добавьте заголовки запроса, значение Authorization для страницы и cookie, которые остаются на целевом хосте.
Задайте часовой пояс IANA, широту, долготу и точность. Задайте user agent сами или позвольте это пресету устройства.
Localhost, имена .local и частные, loopback и link-local адреса отклоняются до того, как их откроет Chrome. ignore_host_errors продолжает работу, когда сама публичная страница возвращает ошибку HTTP.
{
"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" ]
}
Создайте аккаунт, отправьте источник и заберите файл, когда он будет готов.
Вы получите токен доступа. API принимает его в заголовке Authorization.
Публичный адрес, HTML или Markdown. Site2image проверяет адрес, принимает задачу и отвечает 202, пока идёт снимок.
Опросите скриншот или передайте callback URL, и мы отправим подписанную ссылку методом POST.
Доставка
Create отвечает, как только задача попадает в очередь. Файл остаётся закрытым, пока не выдана подписанная ссылка.
Статус идёт от pending к processing, затем к ready или failed. У готовой задачи есть подписанный URL. Скачивание перенаправляет на него.
Задайте callback_url, и Site2image отправит результат методом POST. Подпишите тело как HMAC-SHA256 вашего токена доступа. Сбой вебхука оставляет скриншот готовым.
Повторно используйте последний готовый снимок с тем же адресом, форматом и параметрами. Окно по умолчанию — 4 часа. Попадание возвращает 200 с готовым скриншотом.
{
"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 возвращаются текстом, когда размер это позволяет.
{
"mcpServers": {
"site2image": {
"url": "https://site2image.ru/mcp",
"headers": {
"Authorization": "Bearer <access_token>"
}
}
}
}
Публичные страницы входят. Частные сети остаются закрытыми. Файл остаётся в вашем аккаунте.
Абсолютные HTTP- и HTTPS-адреса в публичном интернете. Localhost, имена .local и частные, loopback и link-local адреса отклоняются.
Отправьте ровно одно из полей 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, и может дождаться файла.
Создайте аккаунт, скопируйте токен и отправьте публичный адрес, HTML или Markdown.