# 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.

Last updated: 2026-10-25. Source: https://docs.smartchat.marketing/en/api/reference/webhooks/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](https://docs.smartchat.marketing/en/api/permissions/)) |
| Risk | Write (no outside effect) |
| Idempotency-Key | Not needed ([how it works](https://docs.smartchat.marketing/en/concepts/idempotency/)) |
| 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.

> **Note** API keys cannot delete data. This call is one of the few exceptions.

## Request

**Path parameters**

| Name | Type | Description |
|---|---|---|
| `endpoint_id` | string | Webhook endpoint ID. |

## Examples

**curl**

```bash
curl -X DELETE "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
```

**Python**

```python
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())
```

**TypeScript**

```typescript
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):


```json
{
  "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`](https://docs.smartchat.marketing/en/errors/#api_key_expired) | 401 | This API key has expired. |
| [`api_key_invalid`](https://docs.smartchat.marketing/en/errors/#api_key_invalid) | 401 | This API key is not valid. |
| [`api_key_revoked`](https://docs.smartchat.marketing/en/errors/#api_key_revoked) | 401 | This API key was revoked. |
| [`authentication_required`](https://docs.smartchat.marketing/en/errors/#authentication_required) | 401 | No API key was sent. Send 'Authorization: Bearer <key>'. |
| [`insufficient_scope`](https://docs.smartchat.marketing/en/errors/#insufficient_scope) | 403 | This key lacks a required permission. |
| [`ip_not_allowed`](https://docs.smartchat.marketing/en/errors/#ip_not_allowed) | 403 | This IP address is not allowed for this key. |
| [`endpoint_not_found`](https://docs.smartchat.marketing/en/errors/#endpoint_not_found) | 404 | No webhook endpoint with this ID exists in this account. |
| [`validation_failed`](https://docs.smartchat.marketing/en/errors/#validation_failed) | 422 | A field is not valid. |
| [`rate_limited`](https://docs.smartchat.marketing/en/errors/#rate_limited) | 429 | Too many requests. Wait and try again. |
| [`internal_error`](https://docs.smartchat.marketing/en/errors/#internal_error) | 500 | Something went wrong on our side. |

All errors use [one format](https://docs.smartchat.marketing/en/concepts/errors-overview/).
