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

# Send a test webhook delivery

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

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/webhooks/{id}/test`
- Auth: HTTP bearer

Send a real, signed sample delivery to this endpoint now. It is a genuine delivery rather than a simulation, so it exercises the same signature verification your receiver uses in production. The payload has the same fields as a real event of that type, filled from one of your screens where possible, plus `test: true`. Pick the event with `event` in the body; by default the test uses the first event the endpoint is subscribed to. This call returns 409 if the endpoint is not subscribed to that event.

Sends a real, signed delivery of one subscribed event now and records it in the delivery log. `data` carries every documented key of that event (the same shape a real event has), filled from a screen in the workspace when there is one and with sample values otherwise, plus `test: true`. A failed send is NOT an HTTP error: the answer is 200 with `ok: false`.

**Notes.**
- A test payload has `data.test: true`. Real events never carry `test`.
- Needs the permission at the workspace root: a location-scoped key is refused.

## Path parameters

- `id` string, required

## Request body

- object
  - `event` 'screen.offline' | 'screen.online' | 'content.recalled' | 'content.restored' | 'approval.requested' | 'approval.decided' | 'emergency.started' | 'emergency.cleared': The event to test. Default: the first event the endpoint is subscribed to.

## Response `200`

Success.

- object
  - `data` object, required
    - `deliveryId` string, required: Id of the delivery this call made (a new `whd_…` row in the delivery log).
    - `ok` boolean, required: The receiver answered 2xx.
    - `status` integer, nullable, required: HTTP status the receiver answered with; null when no answer came.
    - `error` string, nullable, required: Why the delivery failed (`http 500`, a timeout, an unsafe address); null on success.
    - `event` 'screen.offline' | 'screen.online' | 'content.recalled' | 'content.restored' | 'approval.requested' | 'approval.decided' | 'emergency.started' | 'emergency.cleared', required: The event the test delivery sent.

## Other responses

- `400`: `bad_request`: `event` is not a webhook event.
- `401`: Missing, expired or revoked bearer token.
- `403`: The token lacks the permission this operation needs (see `x-brix-permission`).
- `404`: No such endpoint in this workspace.
- `409`: `not_subscribed`: the endpoint is not subscribed to `event` (or to any event), or it is switched off.
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
