API

Скриншот страницы

Открывает страницу в настоящем браузере и возвращает её вид: ссылку на полноразмерный скриншот и текст страницы в markdown. Нужен, когда важно увидеть вёрстку, цвета и типографику — например «повтори дизайн как на этом сайте», — а не найти информацию.

POSThttps://srezai.ru/api/v1/fetch

REST отдаёт ссылку, MCP — саму картинку

Этот REST-эндпоинт возвращает screenshotUrl (временная presigned-ссылка на PNG). Инструмент fetch_page в MCP дополнительно вкладывает сам скриншот картинкой в ответ — чтобы vision-модель (в том числе локальная) его увидела, ведь открыть ссылку она обычно не может.

Когда использовать#

Инструмент отвечает на вопрос «как эта страница выглядит», а не«что написано в вебе по теме». Берите его, когда важен сам вид конкретной страницы:

  • «Сделай лендинг в стиле вот этого сайта» — агент видит вёрстку, цвета, типографику и переносит их в свой код.
  • Проверить, как реально отрисовалась страница (а не только её HTML).
  • Снять текст со страницы, которую вы уже нашли, в чистом markdown — без парсинга HTML на своей стороне.

Если же нужно найти информацию по теме — это веб-поиск excerpts: true для текста топ-страниц), а для многошагового разбора — DeepResearch.

Пример запроса#

curl -X POST https://srezai.ru/api/v1/fetch \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer srz_live_ВАШ_КЛЮЧ" \
  -d '{ "url": "https://exa.ai/blog" }'

Параметры тела#

Тело запроса — JSON. Обязателен только адрес страницы.

urlstringrequired

Полный адрес страницы, схема http или https, порт 80 или 443. Адреса, ведущие во внутреннюю сеть (приватные IP, локальные имена), отклоняются с ошибкой 400 — см. ниже.

maxCharsnumberoptional

Сколько символов текста вернуть в markdown: от 200 до 50000 (4000 по умолчанию). Поднимайте, когда нужен весь текст страницы, а не только начало: для RAG и длинной документации 4000 символов часто мало. Значения вне диапазона подгоняются к границе.

Ответ#

json
{
  "url": "https://exa.ai/blog",
  "title": "Exa | Blog",
  "screenshotUrl": "https://s3.ru1.storage.beget.cloud/bucket/shots/ab12….png?X-Amz-…",
  "markdown": "# Exa Blog\n\nThe latest from the team…",
  "truncated": false,
  "meta": {
    "tookMs": 4820,
    "bytes": 812344,
    "totalChars": 3184
  }
}

Поля ответа#

urlstringoptional

Нормализованный адрес, который был отрендерен.

titlestringoptional

Заголовок страницы (из <title>/метаданных), может быть пустым.

screenshotUrlstring | nulloptional

Временная presigned-ссылка на полноразмерный PNG в хранилище. Действует ограниченное время (по умолчанию 1 час). null, если хранилище не настроено на сервере — тогда остаётся markdown.

markdownstringoptional

Текст страницы в markdown, очищенный от навигации, иконок и служебной разметки, обрезанный до maxChars. Точный контент для text-only обработки.

truncatedbooleanoptional

true, если текст не поместился в maxChars — у страницы есть продолжение. Сколько всего дала страница, видно в meta.totalChars: по нему решайте, с каким maxChars повторить запрос.

metaobjectoptional

tookMs — время рендера, bytes — размер полноразмерного PNG, totalChars — объём чистого текста страницы до обрезки.

Остаток лимита приходит в заголовках X-RateLimit-* — см. Лимиты и квоты. Вызов считается как один запрос к дневной квоте, наравне с поиском.

Через MCP: инструмент fetch_page#

Тот же функционал доступен ИИ-агенту как встроенный инструмент fetch_page через MCP-сервер — с теми же параметрами url и maxChars. Ключевое отличие от REST: MCP-ответ вкладывает сам скриншот картинкой (уменьшенный JPEG), а не только ссылку. Это сделано специально — vision-модель (в том числе локальная, вроде Qwen-VL или GLM) видит изображение прямо в контексте, а открыть screenshotUrl самостоятельно она обычно не может.

Ответ инструмента содержит два блока:

  • image — уменьшенный до ~1024px JPEG-скриншот; его и «видит» модель.
  • text — заголовок страницы, presigned-ссылка на полноразмерный PNG и текст в markdown. Если текст обрезан по maxChars, туда же добавляется явная пометка с полным объёмом страницы — чтобы агент не принял начало за всю страницу.

Подключение сервера и общий список инструментов — на странице MCP-сервер.

Только публичные адреса

Рендер идёт с нашего сервера, поэтому запросы к внутренней сети запрещены: приватные диапазоны (10.x, 192.168.x, 127.x, 169.254.x), нестандартные порты и локальные имена отклоняются с 400 и кодом ssrf_blocked.

Только POST

Эндпоинт принимает только POST. Запрос методом GET вернёт 405 Method Not Allowed.