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

# Send a test event

`POST /webhooks/{id}/test`

## Request

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

Sends one signed `test` event with a single sample contract to the
registered url, using the same headers, signature, timeout and retry
policy as real deliveries, and reports the outcome synchronously
(the request can take up to ~25 s if every attempt times out). A
successful test resumes a paused webhook and resets
`consecutive_failures`; a failed test does not count towards the
pause threshold. The test delivery is recorded in
`GET /webhooks/{id}/deliveries`.

Answers **200** when a 2xx was received and **502** when it was not -
both with the same body shape.

## Response `200`

Delivered (`delivered: true`).

- WebhookTestResult
  - `delivered` boolean, required
  - `delivery_id` string, required
  - `attempts` integer, required
  - `http_status` integer, nullable, required
  - `duration_ms` integer, required
  - `error` string, nullable, required

## Other responses

- `401`: Missing or invalid API key: `MISSING_API_KEY`, `INVALID_API_KEY_FORMAT`, `INVALID_API_KEY`. No rate-limit headers.
- `403`: Key is valid but has no usable subscription: `NO_ACTIVE_SUBSCRIPTION` (no Personal plan on the key) or `SUBSCRIPTION_INACTIVE` (past due, paused, expired, or canceled past its period end). No rate-limit headers.
- `404`: `NOT_FOUND`: no webhook with this id on your subscription (app-created alerts are not reachable through this API).
- `429`: Rate limit exceeded: `RATE_LIMIT_MINUTE` (60/min) or `RATE_LIMIT_DAY` (4,000/day). Carries both rate-limit header sets and `Retry-After` (seconds until the exhausted window opens again). Rejected requests count against the minute window, so back off instead of retrying immediately.
- `500`: Unexpected server error: `INTERNAL_ERROR`. The body and the X-Request-Id header carry the request id.
- `502`: Not delivered (`delivered: false`). Same body shape; `error` says why (`HTTP 500`, `timeout after 5000 ms`, a network error).
- `503`: Authentication backend unreachable: `AUTH_UNAVAILABLE`. Retry later. No rate-limit headers.

---

[API](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api.md) · [All operations](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api/revisions/42db9bcaa61f?raw)
