> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wede.pt/llms.txt
> Use this file to discover all available pages before exploring further.

# Test webhook

> Send a real, signed test delivery to a webhook and see how your endpoint answered.

```
POST /v1/webhooks/{webhook_id}/test
```

Sends one `webhook.test` delivery to the webhook's URL, signed with its secret exactly like any other delivery, and returns the result. Use it to check that your endpoint is reachable and verifies signatures.

The test is a single attempt: no retries, and it does not change the webhook's `failure_count`.

## Authentication

API key or session token with the `webhooks:read` permission. API keys have it. The delivery's `environment` is `sandbox` when you call with a `wede_test_` key, otherwise `production`.

## Path parameters

**webhook\_id** `string` *required*

Webhook ID (UUID).

## Example

```bash theme={null}
curl -X POST https://api.wede.pt/v1/webhooks/b7e3c1a9-2d4f-4e6a-8c0b-1f3e5d7a9c2e/test \
  -H "x-wede-api-key: wede_live_YOUR_KEY"
```

Your endpoint receives:

```json theme={null}
{
  "id": "5d0c8e2a-4b6f-4a1d-9c3e-7f2b1a0d9e8c",
  "event": "webhook.test",
  "created_at": "2026-09-26T10:05:00.120Z",
  "tenant_id": "9eb65ffa-3c1d-4d7e-8f02-1a2b3c4d5e6f",
  "environment": "production",
  "data": {
    "webhook_id": "b7e3c1a9-2d4f-4e6a-8c0b-1f3e5d7a9c2e",
    "message": "Test delivery from wede"
  }
}
```

## Response

`200 OK`, whether or not your endpoint accepted the delivery. Check `success`.

```json theme={null}
{
  "webhook_id": "b7e3c1a9-2d4f-4e6a-8c0b-1f3e5d7a9c2e",
  "delivery_id": "5d0c8e2a-4b6f-4a1d-9c3e-7f2b1a0d9e8c",
  "success": true,
  "response_status": 200,
  "response_time_ms": 184,
  "error": null
}
```

**webhook\_id** `string`

The webhook tested.

**delivery\_id** `string`

ID of the test delivery. Same value as the `X-Wede-Delivery` header and the envelope `id`.

**success** `boolean`

`true` if your endpoint answered with a `2xx` status.

**response\_status** `integer | null`

HTTP status your endpoint returned. `null` if no response was received.

**response\_time\_ms** `integer`

Time until wede had the result, in milliseconds.

**error** `string | null`

Network error when no response was received (for example a timeout after 10 seconds or a DNS failure), otherwise `null`.

## Errors

| Status | Code | When |
| - | - | - |
| 401 | `unauthorized` | Credential missing, malformed, revoked or expired |
| 403 | `forbidden` | The credential lacks `webhooks:read` |
| 404 | `not_found` | No webhook with this ID in your tenant |
| 503 | `service_unavailable` | The API key could not be validated right now. Retry |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.