# Send a test event
Source: https://www.desktopaccountingapi.com/docs/api/reference/operations/webhookendpointssendtestevent/

`POST https://api.desktopaccountingapi.com/v1/webhook-endpoints/{id}/test`

Operation ID: `webhookEndpoints.sendTestEvent`. Tag: Webhooks.

Sends a signed `webhook.test` event to the endpoint now (one attempt, no retries) and returns the delivery with the attempt result. Use it to check your signature verification. The endpoint receives it even when disabled.

Authentication: `Authorization: Bearer <secret key>`.

## Path parameters

- `id` (string, required): Unique identifier for the webhook endpoint. example `whe_01j9x4m6v4c8k2t7q0r5s3w1zg`.

## Headers

- `Idempotency-Key` (string): Makes a write safe to retry. Repeating a key with the same request attaches to or replays the original instead of creating a second one. 1–255 printable ASCII characters, retained 7 days. Reusing a key with a different request returns `422 IDEMPOTENCY_KEY_REUSED`. 1–255 characters; example `6f1c2a0e-1f7e-4c55-9a7a-0b2d2c9e3a10`.

## Responses

### 200

The test delivery and its attempt.

Body (application/json): object (WebhookDelivery).

- `id` (string, required): Unique identifier for the delivery of one event to one endpoint. example `whd_01j9x4m6v4c8k2t7q0r5s3w1zj`.
- `objectType` (string, required): Always `webhook_delivery`. one of `webhook_delivery`.
- `createdAt` (string (date-time), required): When the delivery was created. UTC, ISO 8601 with milliseconds. example `2026-10-05T16:03:59.002Z`.
- `endpointId` (string, required): Unique identifier for the webhook endpoint. example `whe_01j9x4m6v4c8k2t7q0r5s3w1zg`.
- `eventId` (string, required): Unique identifier for the event. Also sent as the `webhook-id` header; deduplicate on it. example `evt_01j9x4m6v4c8k2t7q0r5s3w1zh`.
- `eventType` (string, required): The event type (including `webhook.test`). example `request.succeeded`.
- `status` (string, required): `pending` while attempts remain, `succeeded` after a 2xx, `failed` after the last scheduled attempt (dead-lettered). one of `pending`, `succeeded`, `failed` (open: accept unknown values).
- `attemptCount` (integer, required): Attempts made so far (at most 8).
- `nextAttemptAt` (string, nullable, required): When the next attempt is scheduled. UTC, ISO 8601.
- `completedAt` (string, nullable, required): When the delivery succeeded or failed for good. UTC, ISO 8601.
- `attempts` (array of object (WebhookDeliveryAttempt), required): Every attempt, oldest first.
  - `attempt` (integer, required): Attempt number, starting at 1.
  - `at` (string (date-time), required): When the attempt started. UTC, ISO 8601 with milliseconds. example `2026-10-05T16:03:59.002Z`.
  - `statusCode` (integer, nullable, required): HTTP status your endpoint returned; `null` when no response arrived.
  - `latencyMs` (integer, nullable, required): Milliseconds until the response.
  - `responseExcerpt` (string, nullable, required): First 512 characters of the response body.
  - `error` (string, nullable, required): Why the attempt failed: `non_2xx_status`, `timeout`, `redirect_not_followed`, `network_error: ...` or `blocked_destination: ...`.

### Errors

Every error body is the error object described at https://www.desktopaccountingapi.com/docs/errors/.

- `400`: The request is invalid. Codes: `UNKNOWN_HEADER`, `INVALID_PARAMETER`, `IDEMPOTENCY_KEY_INVALID`.
- `401`: The API key is missing or invalid. Codes: `API_KEY_MISSING`, `API_KEY_INVALID`.
- `403`: The operation is not permitted. Codes: `API_KEY_READ_ONLY`.
- `404`: The object does not exist in this project. Codes: `RESOURCE_MISSING`.
- `422`: The request is well formed but cannot be processed. Codes: `IDEMPOTENCY_KEY_REUSED`.
- `429`: Too many requests. Codes: `RATE_LIMITED`.
- `500`: Unexpected server error. Codes: `INTERNAL_ERROR`.
- `503`: QuickBooks Desktop or the service is not available. Codes: `SERVICE_UNAVAILABLE`.
