Кінцеві точки вебхуків
Керуйте кількома URL-адресами вебхуків із секретами для кожної кінцевої точки та фільтрами подій.
Система вебхуків на основі кінцевих точок дає змогу зареєструвати кілька адресатів для кожної організації, кожного з окремим секретом, власним статусом і власною підпискою на підмножину типів подій. Це рекомендована модель для всіх нових інтеграцій.
Порівняйте із застарілим вебхуком з однією URL-адресою, який зберігається для зворотної сумісності, але підтримує лише одну URL-адресу на організацію.
Кінцеві точки
| Метод | Шлях | Необхідна роль | Опис |
|---|---|---|---|
GET | /v1/developer/webhook-endpoints | admin+ | Отримати список кінцевих точок |
POST | /v1/developer/webhook-endpoints | admin+ | Створити кінцеву точку |
PATCH | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Оновити мітку / URL-адресу / події / статус |
DELETE | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Видалити кінцеву точку |
POST | /v1/developer/webhook-endpoints/{endpoint_id}/test | admin+ | Надіслати підписану тестову доставку |
Об’єкт кінцевої точки
{
"id": "c4d5e6f7-...",
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
"status": "active",
"secret_hint": "a1b2…9f0e",
"created_at": "2026-04-20T18:24:10.113Z",
"updated_at": "2026-04-20T18:24:10.113Z"
}| Поле | Тип | Опис |
|---|---|---|
id | UUID | Ідентифікатор кінцевої точки |
label | рядок | Відображувана назва, 1–120 символів |
url | рядок | HTTPS URL-адреса; http://localhost дозволено для розробки |
events | масив рядків | Типи подій за підпискою (див. припустимі значення). Порожній масив підписує на всі події, крім явних подій для кожного ходу (telephony.turn / web.turn) |
status | рядок | active, disabled (призупинено вручну) або failing (встановлюється автоматично, коли доставка вичерпує свій 24-годинний графік повторних спроб без жодної відповіді 2xx) |
secret_hint | рядок | Перші 4 й останні 4 символи секрету підпису з багатокрапкою (a1b2…9f0e) — достатньо, щоб зіставити його із секретом, який ви зберегли локально, не розкриваючи повне значення |
created_at, updated_at | позначка часу |
Припустимі типи подій
events перевіряється за цим точним набором — значення поза списком
повертають 400. Див. каталог подій для структури
корисного навантаження кожного типу.
telephony.incoming,telephony.complete,telephony.tool,telephony.turnweb.incoming,web.complete,web.tool,web.turncall.gradedissue.reportedtest-call.completedalert.triggered
Статуси кінцевих точок
active— доставки виконуються у звичайному режимі.disabled— призупинено вручну черезPATCH. Запити не надсилаються. Ми ніколи не змінюємо статус кінцевої точкиdisabled; повернути його доactive— завжди ваше рішення.failing— встановлюється автоматично, коли доставка до кінцевої точки вичерпує весь графік повторних спроб (8 спроб протягом 24 годин), так і не отримавши відповіді 2xx. Кінцева точка зі статусом помилки не отримує подальшого трафіку. Після виправлення кінцевої точки поверніть її статус доactiveчерезPATCH; доставки, чий графік повторних спроб ще не вичерпано, відновляться з того місця, де зупинилися.
Список кінцевих точок
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Повертає масив об’єктів кінцевих точок.
Створення ендпойнта
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"]
}'result = requests.post(
"https://api.thunderphone.com/v1/developer/webhook-endpoints",
headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
json={
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
},
).json()
secret = result["secret"]
endpoint_id = result["id"]Поля запиту
| Поле | Тип | Обов’язкове | Опис |
|---|---|---|---|
label | рядок | так | 1–120 символів |
url | рядок | так | HTTPS URL (http дозволено лише для localhost / 127.0.0.1) |
events | масив | ні | Порожнє або пропущене значення підписує на всі події, крім telephony.turn / web.turn, для яких потрібна явна підписка. Потрібно використовувати значення зі списку Допустимі типи подій; дублікати видаляються |
Повертає 201 Created з об’єктом ендпойнта і додатковим
полем верхнього рівня secret, що містить необроблений ключ підпису —
48-символьний шістнадцятковий рядок:
{
"id": "c4d5e6f7-…",
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
"status": "active",
"secret_hint": "a1b2…9f0e",
"created_at": "2026-04-20T18:24:10.113Z",
"updated_at": "2026-04-20T18:24:10.113Z",
"secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}Оновлення ендпойнта
curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Production — Call + Grade events",
"events": ["telephony.incoming", "telephony.complete", "call.graded"]
}'| Поле | Тип | Опис |
|---|---|---|
label | рядок | |
url | рядок | |
events | масив | |
status | рядок | active або disabled. Установіть active, щоб повторно ввімкнути ендпойнт, який сервер позначив як failing |
Повертає 200 OK з оновленим об’єктом ендпойнта.
Надіслати тестову доставку
Надішліть синтетичну подію webhook.test до однієї кінцевої точки через стандартний
конвеєр доставки, включно з канонічною серіалізацією JSON,
X-ThunderPhone-Signature, записом доставки та обліком повторних спроб.
Тест спрямовується до вибраної кінцевої точки незалежно від її фільтра events.
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Кінцева точка отримує конверт такого вигляду:
{
"data": {
"message": "ThunderPhone webhook test",
"sent_at": "2026-07-17T20:12:34.567890+00:00"
},
"event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
"type": "webhook.test"
}API повертає 200 OK після першої спроби, навіть якщо призначення
повертає помилку. Перевірте success, status, response_code та error,
щоб дізнатися результат доставки:
{
"success": true,
"event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
"event_type": "webhook.test",
"status": "delivered",
"response_code": 204,
"error": ""
}webhook.test є синтетичною подією, і її не можна додати до підписки кінцевої точки
на events. Якщо перша спроба не вдається, доставка виконується за тим самим
розкладом повторних спроб, що й звичайні доставки подій.
Видалити кінцеву точку
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Повертає 204 No Content. Доставка на URL негайно припиняється;
повторні спроби, що виконуються, скасовуються.