---
title: "Send a test event to a webhook"
method: POST
path: "/api/v1/webhooks/{id}/test"
tags: ["Webhooks"]
---

# Send a test event to a webhook

`POST /api/v1/webhooks/{id}/test`

## Request

- Base URL: `https://api.dmarc-examiner.com`
- URL: `https://api.dmarc-examiner.com/api/v1/webhooks/{id}/test`
- Auth: API key in header `X-API-Key`

Performs a synchronous delivery of a `webhook.test` event and returns
the result (status code, response time, error if any).

Test deliveries are **not** counted as real events: they do NOT update
`last_triggered_at`, `last_status` or `failure_count` on the webhook.
Use this endpoint to verify connectivity from the dashboard or CI
without polluting the production delivery history.

## Path parameters

- `id` string, uuid, required

## Response `200`

Delivery result

- WebhookTestResult
  - `success` boolean, required: True only when the sink answered with a 2xx status. Network errors and non-2xx responses both return `false`.
  - `status_code` integer, nullable, required: HTTP status returned by the sink. `0` when the request never reached it (timeout, DNS failure, connection refused, etc.).
  - `response_time_ms` integer, required: Milliseconds elapsed between request start and the response (or the failure point).
  - `error` string, nullable, required: Error message when the request could not be completed. Null on a normal HTTP exchange (even if the status was non-2xx).

## Other responses

- `401`: Authentication failed. Two shapes are possible depending on cause: - **Invalid or revoked key** — body is `{"message": "..."}` only. - **Missing `X-API-Key` header** — body adds an `error: "unauthorized"` machine-readable code. Clients should treat both as the same outcome and read `message` for display.
- `403`: The organization's current plan does not include the feature required by this endpoint (e.g. `apiAccess`, `forensicReports`, `advancedAlerts`). Distinct from `PlanLimitExceeded` (HTTP 402), which signals a *quota* exhausted on a feature the plan does include. If a customer downgrades to Free, all `/api/v1/*` requests will start returning this response.
- `404`: Resource not found.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/dmarc-examiner/apis/dmarc-examiner-api.md) · [All operations](https://skmtc.dev/dmarc-examiner/apis/dmarc-examiner-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dmarc-examiner/apis/dmarc-examiner-api/revisions/92f3f57969f5?raw)
