Справочник · Вебхуки
Адреса вебхуков
Адреса вебхуков: сюда Dialogi присылает события - новый диалог, сообщение, контакт, заявку, запись. Адресов у компании не больше 10. Подписаться можно только на события тех ресурсов, которые ключ может читать, и только на проекты ключа. Как проверять подпись запроса - в разделе Вебхуки.
Объект адреса вебхуков
Адрес вебхуков - URL, на который Dialogi присылает события.
objectстрокаобязателенТип объекта, всегда webhook_endpoint.
Значения: webhook_endpoint
iduuidобязателенid адреса.
urlссылкаобязателенАдрес, на который приходят события. Домен с кириллицей хранится в виде xn--.
descriptionстрокаобязателенможет быть nullОписание для себя.
enabled_eventsмассив (строка)обязателенТипы событий, на которые подписан адрес, или ["*"] - все события, в том числе будущие. См. События.
project_idsмассив (uuid)обязателенможет быть nullid проектов, события которых приходят на адрес. null - все проекты компании. Пустой список бывает у адреса, все проекты которого удалили: такой адрес выключен.
statusстрокаобязателенenabled - события отправляются, disabled - адрес выключен.
disabled_reasonстрокаобязателенможет быть nullПочему адрес выключен: manual - выключили вручную или удалили все его проекты, failing - адрес не отвечал 2xx 72 часа. У включённого адреса - null.
disabled_atдата и время с зонойобязателенможет быть nullКогда адрес выключили, UTC. У включённого - null.
created_atдата и время с зонойобязателенКогда адрес создан, UTC.
updated_atдата и время с зонойобязателенКогда адрес последний раз меняли, UTC.
{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z"
}/v1/webhook_endpointsСписок адресов
webhooks:manageАдреса вебхуков компании, от новых к старым. Ключ видит только адреса своих проектов.
Параметры запроса
limitцелое числоможет быть nullСколько адресов на странице, от 1 до 100.
По умолчанию: 20
starting_afteruuidможет быть nullid последнего адреса предыдущей страницы: страница начнётся после него. См. Пагинация.
Ответы
200Страница списка адресов.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/webhook_endpoints \
-H "Authorization: Bearer dk_live_…"200{
"object": "list",
"data": [
{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z"
}
],
"has_more": true
}/v1/webhook_endpointsСоздать адрес
webhooks:manage Idempotency-Key обязателенСоздаёт адрес и сразу начинает слать на него события. Адрес - только https с публичным сертификатом, порт 443 или от 1024 до 65535. Секрет для проверки подписи приходит в ответе один раз - сохраните его.
Каждое событие нужно ключу на чтение: conversation.* и message.* - право conversations:read, contact.* - contacts:read, lead.* - leads:read, appointment.* - appointments:read. * требует все четыре права. Если права нет - ошибка 403 с перечнем событий.
Параметры тела
urlстрокаобязателенАдрес, на который придут события: https, без логина и пароля в адресе.
descriptionстрокаможет быть nullОписание для себя, до 256 символов.
enabled_eventsмассив (строка)обязателенТипы событий, например lead.created, или ["*"] - все события, в том числе будущие. Список типов - в разделе События.
project_idsмассив (строка)может быть nullid проектов, события которых слать. null или без поля - все проекты компании, так может только ключ на все проекты.
Ответы
201Созданный адрес с секретом.400Нет заголовка Idempotency-Key (idempotency-key-required) или ключ в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden). У ключа нет права на чтение части событий (в detail - их перечень) или проекты адреса шире проектов ключа.409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress). У компании уже 10 адресов (webhook-endpoint-limit).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/webhook_endpoints \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"url": "https://example.com/dialogi/webhooks",
"enabled_events": [
"lead.created",
"lead.updated"
]
}'201{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z",
"secret": "whsec_2cGx4kYp9QmT7vR1nB5sW8dF3hJ6zL0a"
}/v1/webhook_endpoints/{endpoint}Получить адрес
webhooks:manageАдрес по id. Адрес с проектами, которых нет в ключе, для ключа не существует - ответ 404.
Параметры пути
endpointuuidобязателенid адреса.
Ответы
200Адрес.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/webhook_endpoints/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…"200{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z"
}/v1/webhook_endpoints/{endpoint}Изменить адрес
webhooks:manageМеняет только переданные поля. status: enabled включает адрес после ручного или автоматического отключения: события, пропущенные за время отключения, не досылаются. Права ключа проверяются по событиям адреса после изменения, даже если enabled_events не передан.
Параметры пути
endpointuuidобязателенid адреса.
Параметры тела
urlстрокаАдрес, на который придут события: https, без логина и пароля в адресе.
descriptionстрокаможет быть nullОписание для себя, до 256 символов. null очищает его.
enabled_eventsмассив (строка)Типы событий или ["*"] - все события.
project_idsмассив (строка)может быть nullid проектов или null - все проекты компании (только у ключа на все проекты).
statusстрокаenabled - включить, disabled - выключить.
Значения: enableddisabled
Ответы
200Адрес после изменения.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden). У ключа нет права на чтение части событий адреса (в detail - их перечень) или проекты адреса шире проектов ключа.404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl -X PATCH https://api.ru.dialogi.io/v1/webhook_endpoints/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-d '{
"status": "enabled"
}'200{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z"
}/v1/webhook_endpoints/{endpoint}Удалить адрес
webhooks:manageУдаляет адрес: события на него больше не отправляются, ожидающие повторы отменяются.
Параметры пути
endpointuuidобязателенid адреса.
Ответы
200Адрес удалён.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl -X DELETE https://api.ru.dialogi.io/v1/webhook_endpoints/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…"200{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"deleted": true
}/v1/webhook_endpoints/{endpoint}/roll_secretПеревыпустить секрет
webhooks:manage Idempotency-Key поддерживаетсяВыдаёт новый секрет, он приходит в ответе один раз. Старый секрет ещё expires_in_hours часов подписывает запросы вместе с новым: в заголовке Dialogi-Signature будет по одной подписи v1 на каждый.
Параметры пути
endpointuuidобязателенid адреса.
Параметры тела
expires_in_hoursцелое числообязателенСколько часов старый секрет ещё действует: 0 - перестаёт сразу, 1 или 24.
Значения: 0124
Ответы
200Адрес с новым секретом.400Idempotency-Key в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/webhook_endpoints/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90/roll_secret \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"expires_in_hours": "0"
}'200{
"object": "webhook_endpoint",
"id": "01a0e2b4-6c1d-7f3a-9b2e-4d5c6a7b8e90",
"url": "https://example.com/dialogi/webhooks",
"description": "Заявки в 1С",
"enabled_events": [
"lead.created",
"lead.updated"
],
"project_ids": [
"01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20"
],
"status": "enabled",
"disabled_reason": null,
"disabled_at": null,
"created_at": "2026-09-28T09:41:12Z",
"updated_at": "2026-09-28T09:41:12Z",
"secret": "whsec_2cGx4kYp9QmT7vR1nB5sW8dF3hJ6zL0a"
}/v1/webhook_endpoints/{endpoint}/testОтправить тестовое событие
webhooks:manage Idempotency-Key поддерживаетсяСразу отправляет на адрес событие выбранного типа с test: true и образцом объекта с нулевыми id. Ответ приходит после попытки: код ответа вашего сервера, время и ошибка. Повторов у тестового события нет, в список событий оно не попадает. Тест можно отправить и на выключенный адрес.
Не больше одного теста одновременно и 10 в минуту на компанию. Ваш сервер должен ответить за 5 секунд.
Параметры пути
endpointuuidобязателенid адреса.
Параметры тела
typeстрокаобязателенТип события, например lead.created.
Ответы
200Итог тестовой отправки.400Idempotency-Key в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden). У ключа нет права на чтение событий этого типа.404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress). У компании уже идёт тестовая отправка (webhook-test-in-progress).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After. У тестовых событий свой лимит - 10 в минуту на компанию.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/webhook_endpoints/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90/test \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"type": "lead.created"
}'200{
"object": "webhook_delivery",
"id": "01a0e2b5-1a2b-7c3d-8e4f-5a6b7c8d9e01",
"event_id": "01a0e2b5-19f0-7a1b-8c2d-3e4f5a6b7c8d",
"status": "failed",
"status_code": 500,
"duration_ms": 412,
"error": "http_500",
"created_at": "2026-09-28T11:01:30Z"
}