Unsubscribe webhook endpoint
Removes a webhook endpoint and its delivery log, so no more events are sent to it. This is the only deletion allowed with an API key in this area. Sends no messages to contacts.
DELETE /v1/webhook-endpoints/{endpoint_id}
| Permission | webhooks:write (all permissions) |
| Risk | Write (no outside effect) |
| Idempotency-Key | Not needed (how it works) |
| Safe to repeat | Safe by nature: the end state is the same when you repeat it, so no key is needed. A second call finds nothing to remove and answers with its not-found error. |
| Rate limit class | write (120 requests per minute per key) |
| Confirmation | None |
| MCP tool | Not available in MCP |
| Since version | 2026-10-25 |
#What it does
- Changes data in your account. It does not send messages to contacts.
- Removes data. Only allowed for the few removals that keys may do (remove a tag, unsubscribe a webhook endpoint).
- Safe to repeat by nature; it needs no Idempotency-Key. A second call finds nothing to remove and answers with its not-found error.
#Request
Path parameters
| Name | Type | Description |
|---|---|---|
endpoint_id | string | Webhook endpoint ID. |
#Examples
curl -X DELETE "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234" \
-H "Authorization: Bearer $SMARTCHAT_API_KEY"import os
import requests
response = requests.delete(
"https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
)
response.raise_for_status()
print(response.json())const response = await fetch("https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
},
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());Response (200):
{
"object": "webhook_endpoint",
"id": "whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
"deleted": true
}#Response
Status 200. Every response has the headers Request-Id, SmartChat-Version and X-RateLimit-*.
| Name | Type | Description |
|---|---|---|
object | string | Always "webhook_endpoint". always webhook_endpoint |
id | string | ID of the deleted object. up to 64 characters |
deleted | boolean | Always true. always true |
#Errors
| Code | Status | When |
|---|---|---|
api_key_expired | 401 | This API key has expired. |
api_key_invalid | 401 | This API key is not valid. |
api_key_revoked | 401 | This API key was revoked. |
authentication_required | 401 | No API key was sent. Send 'Authorization: Bearer <key>'. |
insufficient_scope | 403 | This key lacks a required permission. |
ip_not_allowed | 403 | This IP address is not allowed for this key. |
endpoint_not_found | 404 | No webhook endpoint with this ID exists in this account. |
validation_failed | 422 | A field is not valid. |
rate_limited | 429 | Too many requests. Wait and try again. |
internal_error | 500 | Something went wrong on our side. |
All errors use one format.