---
title: "Send a test event"
method: POST
path: "/v1/webhook-endpoints/{endpoint_id}/test"
tags: ["Webhooks"]
---

# Send a test event

`POST /v1/webhook-endpoints/{endpoint_id}/test`

## Request

- Base URL: `https://api-eu.dynamicdocumentapi.com`
- URL: `https://api-eu.dynamicdocumentapi.com/v1/webhook-endpoints/{endpoint_id}/test`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Queues a signed sample event (`test: true`) to the endpoint and returns the delivery id; follow it with `GET /v1/webhook-deliveries/{id}`. Every event type can be tested; the sample `data` has the real event's shape, including `data.event` for `email.delivered`, `email.bounced` and `email.complained`. Ids are made up and files have no URL.

## Path parameters

- `endpoint_id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- TestEvent
  - `event` 'render.succeeded' | 'render.failed' | 'render.expired' | 'batch.progress' | 'batch.completed' | 'storage.upload_failed' | 'email.sent' | 'email.send_failed' | 'email.delivered' | 'email.bounced' | 'email.complained' | 'usage.threshold_reached' | 'template.published' | 'api_key.expiring': * `render.succeeded` - render.succeeded * `render.failed` - render.failed * `render.expired` - render.expired * `batch.progress` - batch.progress * `batch.completed` - batch.completed * `storage.upload_failed` - storage.upload_failed * `email.sent` - email.sent * `email.send_failed` - email.send_failed * `email.delivered` - email.delivered * `email.bounced` - email.bounced * `email.complained` - email.complained * `usage.threshold_reached` - usage.threshold_reached * `template.published` - template.published * `api_key.expiring` - api_key.expiring

## Response `202`

Queued.

- WebhookTest
  - `delivery_id` string, required: Follow it with `GET /v1/webhook-deliveries/{id}`.
  - `object` string

## Other responses

- `400`: Invalid request body (`errors[]` with JSON pointers).
- `401`: Missing, invalid, expired or revoked credentials.
- `403`: Insufficient scope, IP not allowed, workspace suspended or scheduled for deletion, or email not verified.
- `404`: Webhook endpoint not found, or not replicated to this region yet.
- `429`: Rate limited (`Retry-After`).
- `503`: The control plane is unreachable (`Retry-After`).

---

[API](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api.md) · [All operations](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api/revisions/0f14bc0000f4?raw)
