Главная/Справочный центр/API & MCP

Вебхуки о готовности и изменениях отчёта

Вебхук уведомляет вашу систему, когда отчёт сформирован или изменён. SEO Reports отправляет POST с JSON на адрес, настроенный в кабинете. Получатель принимает событие и при необходимости скачивает файл через API.

Настройте получателя

  1. Подготовьте доступный сервису HTTP-обработчик. Для передачи данных используйте HTTPS.
  2. Откройте «API & MCP» → API и найдите поле адреса уведомлений.
  3. Укажите полный URL и нажмите «Сохранить» — настройка общая для всего аккаунта.
  4. Соберите новый отчёт или сохраните в нём правку и проверьте событие. Для отключения очистите адрес и сохраните настройку.
Вкладка API: под таблицей ключей — поле адреса уведомлений о готовности и изменениях отчётов и кнопка «Сохранить».
Вкладка API: под таблицей ключей — поле адреса уведомлений о готовности и изменениях отчётов и кнопка «Сохранить».

Когда приходят события

СобытиеКогда отправляется
report_generatedЗавершилась сборка отчёта, в том числе повторная генерация.
report_changedСохранена правка отчёта: кнопкой «Сохранить» в редакторе или изменением структуры через API, в том числе из MCP-ассистента.

Каждое сохранение создаёт отдельное событие со своим номером правки: несколько правок подряд не объединяются в одно уведомление. Чтение отчёта и выгрузка файла событий не создают.

Обратите внимание. Событие о правке создаётся, только если адрес вебхука уже сохранён. Правки, сделанные до настройки адреса, не отправляются.

Формат события

Тело report_changed такое же, как у report_generated, и дополнительно содержит data.revision.

json
{
  "event": "report_changed",
  "event_id": "e4c07a2f9b1d4e3a8c5f6b7d2a1e9c30",
  "data": {
    "project_id": "35328",
    "domain": "example.ru",
    "report_id": "35328.a3f1c9e84b2d7061fe5c8a94d20b3e77",
    "revision": 4,
    "export_link": "https://seo-reports.ru/api/reports/35328.a3f1c9e84b2d7061fe5c8a94d20b3e77/export/word"
  }
}
ПолеЗначение
eventreport_generated — отчёт собран, report_changed — сохранена правка.
event_idИдентификатор для обработки дублей.
data.project_idИдентификатор проекта — тот же project_id, что в API.
data.domainАдрес проекта.
data.report_idИдентификатор отчёта — тот же report_id, что в API.
data.revisionТолько в report_changed: номер, который получила эта правка. Совпадает с revision в ответе на сохранение.
data.export_linkАдрес выгрузки Word, требующий Bearer-ключа.

Обработка события

  1. Проверьте тип события и структуру JSON. Если передан event_id, сохраните его.
  2. Запишите событие в очередь или хранилище. На повтор уже принятого события отвечайте успешно, но не запускайте повторную его обработку.
  3. Быстро верните успешный HTTP-ответ, обычно 200 или 204. Скачивание и дальнейшую обработку выполняйте отдельно.
  4. По data.report_id проверьте карточку и предупреждения. Для скачивания по export_link используйте ключ с правами reports:read.

Таймаут запроса к получателю — 30 секунд. Вебхук не содержит ключ и не открывает отчёт гостям. Исходящий POST не подписывается HMAC и не содержит Bearer-авторизации.

Совет. Перед передачей ключа проверяйте, что export_link ведёт на ожидаемый HTTPS-домен SEO Reports и путь /api/reports/. Не отправляйте ключ произвольному URL из непроверенного входящего запроса. Подтверждайте известный отчёт запросом API.

Свои правки и порядок событий

По data.revision интеграция узнаёт, что правку через API сделала она сама, и отбрасывает события, пришедшие не по порядку.

  • После своего сохранения через API запишите revision из ответа как последний учтённый номер отчёта. Событие report_changed с этим номером — отклик на вашу правку, повторно её не обрабатывайте.
  • Принимайте report_changed, только если его revision больше последнего учтённого, и обновляйте сохранённый номер. Событие с меньшим номером пришло не по порядку: более новая правка уже учтена.
  • В report_generated номера нет. После сборки берите актуальный revision из карточки отчёта.

Повторы и дубли

При таймауте, сетевой ошибке или ответе 4xx/5xx предусмотрено до восьми попыток доставки. Паузы между попытками увеличиваются: 1 минута, 5 минут, 15 минут, 1 час, 3 часа, 6 часов и 12 часов. Если все попытки исчерпаны, событие отмечается неуспешным. Доставка постоянно недоступному получателю не гарантируется.

Повтор возможен и после принятия события, если ответ потерялся. Дедупликацию делайте по event_id, а не report_id: новая сборка или правка того же отчёта порождает новое событие.

Если уведомление не пришло

  • Проверьте сохранённый адрес и доступность обработчика из интернета.
  • Убедитесь, что завершилась новая сборка, а не вернулся существующий результат.
  • Для report_changed убедитесь, что правка сохранена и адрес вебхука был задан до неё.
  • Проверьте логи получателя: ответ должен прийти до таймаута.
  • До восстановления вебхука отслеживайте готовность и revision GET-запросом карточки отчёта.

Выгрузка описана в справочнике, ошибки API — в диагностике.

Помогла статья?
Не нашли ответ в справке?

Напишите нам в любой удобный канал — почта, чат или мессенджер. Отвечает живой специалист, а не бот. В рабочее время помогаем в течение дня.

Наши контакты →