Webhook-slutpunkter
Administrer flere webhook-URL
Det endepunktbaserede webhook-system giver dig mulighed for at registrere flere destinationer pr. organisation, hver med sin egen hemmelighed, sin egen status og sit eget abonnement på et udvalg af hændelsestyper. Dette er den anbefalede model for alle nye integrationer.
Sammenlign med den ældre webhook med én URL, som bevares af hensyn til bagudkompatibilitet, men kun understøtter én URL pr. organisation.
Endepunkter
| Metode | Sti | Påkrævet rolle | Beskrivelse |
|---|---|---|---|
GET | /v1/developer/webhook-endpoints | admin+ | Vis endepunkter |
POST | /v1/developer/webhook-endpoints | admin+ | Opret et endepunkt |
PATCH | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Opdater etiket / URL / hændelser / status |
DELETE | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Slet et endepunkt |
POST | /v1/developer/webhook-endpoints/{endpoint_id}/test | admin+ | Send en signeret testlevering |
Endepunktsobjekt
{
"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"
}| Felt | Type | Beskrivelse |
|---|---|---|
id | UUID | Endepunkts-id |
label | string | Vist navn, 1–120 tegn |
url | string | HTTPS-URL; http://localhost er tilladt til udvikling |
events | array of string | Abonnerede hændelsestyper (se gyldige værdier). Et tomt array abonnerer på alle hændelser undtagen de eksplicitte hændelser pr. tur (telephony.turn / web.turn) |
status | string | active, disabled (sat på pause manuelt) eller failing (indstilles automatisk, når en levering opbruger sin genforsøgsplan på 24 timer uden en eneste 2xx) |
secret_hint | string | De første 4 og sidste 4 tegn i signeringshemmeligheden med en ellipse (a1b2…9f0e) — nok til at krydsreferere den hemmelighed, du har gemt lokalt, uden at afsløre hele værdien |
created_at, updated_at | timestamp |
Gyldige hændelsestyper
events valideres mod præcis dette sæt — værdier uden for listen
returnerer 400. Se Hændelseskatalog for nyttelastformatet
for hver type.
telephony.incoming,telephony.complete,telephony.tool,telephony.turnweb.incoming,web.complete,web.tool,web.turncall.gradedissue.reportedtest-call.completedalert.triggered
Endepunktsstatusser
active— leverancer forløber normalt.disabled— sat på pause manuelt viaPATCH. Der sendes ingen anmodninger. Vi ændrer aldrig status for etdisabledendepunkt; det er altid din beslutning at ændre det tilbage tilactive.failing— indstilles automatisk, når en levering til endepunktet bruger hele sin genforsøgsplan (8 forsøg over 24 timer) uden nogensinde at få en 2xx. Et fejlende endepunkt modtager ingen yderligere trafik. Når endepunktet er rettet, skal du medPATCHændre status tilbage tilactive; leverancer, hvis genforsøgsplan endnu ikke er udløbet, fortsætter, hvor de slap.
Vis endepunkter
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Returnerer et array af endepunktsobjekter.
Opret et endpoint
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"]Anmodningsfelter
| Felt | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
label | string | ja | 1-120 tegn |
url | string | ja | HTTPS-URL (http er kun tilladt for localhost / 127.0.0.1) |
events | array | nej | En tom eller udeladt værdi abonnerer på alle hændelser undtagen telephony.turn / web.turn, som kræver et eksplicit abonnement. Skal bruge værdierne angivet i Gyldige hændelsestyper; dubletter fjernes |
Returnerer 201 Created med det Endpoint-objekt, der er
opdateret, samt et ekstra secret-felt på øverste niveau, der indeholder den rå
signeringsnøgle - en hexadecimal streng på 48 tegn:
{
"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"
}Opdater et endpoint
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"]
}'| Felt | Type | Beskrivelse |
|---|---|---|
label | string | |
url | string | |
events | array | |
status | string | active eller disabled. Angiv active for at genaktivere et endpoint, som serveren har markeret som failing |
Returnerer 200 OK med det opdaterede Endpoint-objekt.
Send en testlevering
Send en syntetisk webhook.test-hændelse til ét endpoint ved hjælp af den normale
leveringspipeline, herunder kanonisk JSON-serialisering,
X-ThunderPhone-Signature, leveringsregistrering og genforsøgsbogføring.
Testen målretter det valgte endpoint uanset dets events-filter.
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Endpointet modtager en indpakning som:
{
"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'et returnerer 200 OK efter det første forsøg, også hvis destinationen
returnerer en fejl. Kontrollér success, status, response_code og error
for leveringsresultatet:
{
"success": true,
"event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
"event_type": "webhook.test",
"status": "delivered",
"response_code": 204,
"error": ""
}webhook.test er syntetisk og kan ikke føjes til et endpoints events-
abonnement. Hvis det første forsøg mislykkes, følger leveringen den samme
genforsøgsplan som normale hændelsesleveringer.
Slet et endpoint
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Returnerer 204 No Content. Levering til URL'en stopper straks;
igangværende genforsøg opgives.