Получайте события AI-анализа в свой CRM, Telegram-бот или 1С — без опроса API.
Три шага до первой доставки
Укажите HTTPS-URL вашего сервера. Сохраните signing_secret — он показывается единожды. Несколько endpoint-ов можно настроить одновременно.
Каждый POST содержит заголовок X-Webhook-Signature: sha256=… Подпись считается от timestamp + raw body. Replay-защита — 5-минутное окно.
Получили событие, обработали, вернули 200 — доставка считается успешной. Не-2xx или таймаут — автоматический повтор по расписанию.
Интеграция без компромиссов
POST поступает в течение секунды после завершения AI-анализа. Никаких задержек опроса — ваш CRM узнаёт о результате раньше, чем вы откроете браузер.
6 попыток за 13.5 часов с half-jitter. Auto-disable после 5 подряд неудач. Ручной replay из лога доставок — если сервер был временно недоступен.
HMAC-SHA256 подпись тела запроса. HTTPS-only. Защита от SSRF и DNS rebinding — URL проверяется по 18 блок-сетям до и в момент запроса.
Лог последних доставок с кодом ответа, телом и временем. Replay в один клик. Тест-запуск из дашборда — убедитесь, что endpoint отвечает, без ожидания реального события.
Тип tender.analyzed — единственный production-тип на данный момент
{
"id": "8b3a...-uuid",
"type": "tender.analyzed",
"created": 1716000000,
"api_version": "2026-05-18",
"data": {
"tender_id": 12345,
"eis_id": "0173100009325000142",
"verdict": "profitable",
"margin_percent": 14.3,
"margin_rub": 87000.0,
"confidence": "high",
"analyzed_at": "2026-05-18T10:00:00+00:00"
}
}id — стабильный UUID события. При retry остаётся тем же. Используйте его для ON CONFLICT DO NOTHING на своей стороне.Всегда проверяйте подпись перед обработкой тела
import hmac
import hashlib
import time
def verify(
secret: str,
timestamp: str,
body_bytes: bytes,
signature_header: str,
) -> bool:
# 1. Защита от replay — 5-минутное окно
if abs(time.time() - int(timestamp)) > 300:
return False
# 2. Пересчёт HMAC от raw bytes
# (НЕ от re-serialized JSON)
expected = hmac.new(
secret.encode(),
f"{timestamp}.".encode() + body_bytes,
hashlib.sha256,
).hexdigest()
# 3. Constant-time compare
received = signature_header.removeprefix("sha256=")
return hmac.compare_digest(expected, received)Webhooks доступны с плана Business
| Тариф | Доступ | Активных endpoints |
|---|---|---|
| Free | — | |
| Starter | — | |
| Pro | — | |
| Business | 3 | |
| Business Pro | 10 |
Не нашли ответ? Напишите нам
Мы используем cookies для работы авторизации и сохранения настроек. Дополнительно — обезличенная аналитика использования. Подробнее в политике конфиденциальности.