
# Send a test event to a webhook endpoint

`POST /v1/webhook-endpoints/{endpoint_id}:test` · permission `webhook-endpoints:write` · all plans

Sends one signed synthetic event of the chosen type (default `user.created`) to the endpoint and returns the outcome. The event carries `data.test = true` and is signed with the endpoint's current secret, exactly like a real delivery, so you can check your signature verification. No delivery record is written and the receiver's response body is not returned. Each endpoint allows 10 tests per minute.

## Request

| Field | Type | Required | Description |
|---|---|---|---|
| `endpoint_id` | path | yes | Webhook endpoint ID (`whe_…`). |
| `event_type` | string | no | Event catalog type to send; default `user.created`. The body is optional. |
| `Idempotency-Key` | header | no | Replays the result for a repeated request with the same key. |

```json
{
  "event_type": "user.updated"
}
```

## Response

`200 OK` with the outcome. A failed delivery is still `200`: `succeeded` is `false` and `error_class` says why (`timeout`, `tls`, `dns`, `egress_blocked`, `http_status`, `connection`).

```json
{
  "succeeded": true,
  "http_status": 204,
  "error_class": null,
  "latency_ms": 87,
  "event_id": "evt_01k8a3m7s9v1w3x5y7z9b2c4d6"
}
```

## Errors

| HTTP | code | When |
|---|---|---|
| 400 | `unknown_field` | The body has a field that is not listed above. |
| 404 | `not_found` | No such endpoint in this environment. |
| 409 | `conflict` | The endpoint is not `enabled`. |
| 422 | `validation_failed` | `/event_type unknown_event_type`: not a catalog type. |
| 429 | `rate_limited` | More than 10 tests a minute for this endpoint; retry after `Retry-After`. |
| 401 | `unauthenticated` | The credential is missing, invalid or revoked. |
| 403 | `insufficient_permissions` | The credential lacks `webhook-endpoints:write`. |
| 503 | `service_unavailable` | Webhook administration is temporarily unavailable; retry after the `Retry-After` period. |

## Example

```bash
curl -X POST https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4:test \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"user.updated"}'
```

CLI: `keenauth webhook-endpoints test whe_01k8a3m5q7t9v1w3x5y7z9b2c4 --event-type user.updated`
