Webhooks
Получение результатов обработки через callback URL
Обзор
Вместо polling статуса задачи вы можете указать webhook_url при создании задачи. Premiss отправит POST-запрос на этот URL, когда обработка завершится.
Webhook — рекомендуемый способ получения результатов. Он не требует дополнительных запросов и экономит ресурсы.
Как подключить
Укажите webhook_url при создании задачи:
Формат callback
Когда обработка завершится, Premiss отправит POST-запрос на ваш webhook_url в формате конверта с полями event, task и timestamp:
При ошибке обработки событие будет task.failed:
Заголовки запроса
Каждый webhook-запрос содержит следующие заголовки:
| Заголовок | Описание |
|---|---|
Content-Type | application/json |
X-Premiss-Event | Тип события: task.completed или task.failed |
X-Premiss-Delivery | Уникальный ID доставки (для дедупликации повторных попыток) |
Обработка на сервере
История доставки
Проверить статус доставки webhook'ов можно через API:
Ответ содержит историю всех попыток доставки, включая HTTP-статус ответа вашего сервера и время отклика.
Требования к webhook URL
- Должен быть доступен из интернета (публичный URL)
- Должен отвечать любым 2xx статусом (200–299) в течение 10 секунд
- Рекомендуется HTTPS
Политика повторных попыток
Если ваш webhook не отвечает или возвращает статус, отличный от 2xx, Premiss повторит доставку:
| Попытка | Задержка | Время от первой попытки |
|---|---|---|
| 1-я (повтор) | 5 секунд | ~5 сек |
| 2-я (повтор) | 25 секунд | ~30 сек |
| 3-я (повтор) | 125 секунд | ~2.5 мин |
Всего 4 попытки (1 первоначальная + 3 повтора) с экспоненциальным backoff. После исчерпания попыток доставка помечается как failed.
Используйте заголовок X-Premiss-Delivery для дедупликации — при повторных попытках он остаётся одинаковым. Результат всегда можно получить через polling GET /api/v1/tasks/{taskId}.