Send a test event to a webhook endpoint
Scopewebhooks:writeDeprecated. Use POST /v1/accounts/{account_id}/webhooks/{webhook_id}/test, which behaves identically.
Sends a synthetic payload to the subscription's URL immediately, outside the normal delivery queue. Use it to verify that your endpoint is reachable and handles deliveries correctly before you rely on real events.
- Payload: carries
"test": trueand synthetic data, and is signed like any other delivery, so it also exercises your signature check. - Retries: none. A failed test is not retried and does not appear in the delivery history.
Idempotency-Key: repeating the call with the same key returns the cached result without sending the test payload again.- Result: read
delivery_success; a delivery your endpoint rejected is still a successful test run, not an error.
Keys are prefixed beel_sk_, and each one carries the scopes it was created with: a key
short of the scope an operation needs is answered 403. The scope an operation requires
is shown next to its title, and the full catalogue lives in the Scopes reference.
Keys are created from the BeeL dashboard. They are secret credentials: do not share them or commit them to source control.
In: header
Path Parameters
uuidHeader Parameters
Idempotency key to prevent duplicates in sensitive operations.
- Any unique client-generated string (e.g. an order id). A UUID also works but is not required
- Allowed characters: letters, digits,
_and-(max 255 chars) - If the same key is sent twice, the result of the first operation is returned
- Keys expire 24 hours after processing
The key is scoped per user and environment, and bound to the request body, so retrying after a network timeout replays the stored response instead of repeating the operation.
| Status | Code | When |
|---|---|---|
400 | INVALID_IDEMPOTENCY_KEY | The key breaks the format rules above. |
409 | IDEMPOTENCY_KEY_PROCESSING | The first request is still in flight. Wait and retry with the same key. |
409 | IDEMPOTENCY_KEY_MISMATCH | The key was already used with a different body. Use a new key. |
^[a-zA-Z0-9_-]+$length <= 255Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://app.beel.es/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08/test"{
"success": true,
"data": {
"delivery_success": true,
"http_status": 200,
"duration_ms": 142,
"error": null
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
}{
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "You do not have permission to access this resource"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
}{
"success": false,
"error": {
"code": "CONCURRENT_MODIFICATION",
"message": "The resource was modified by another request; read it again and retry"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
}{
"success": false,
"error": {
"code": "UNSUPPORTED_MEDIA_TYPE",
"message": "Unsupported media type: text/plain. Supported: application/json"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
}Delete a webhook subscription DELETE
**Deprecated.** Use `DELETE /v1/accounts/{account_id}/webhooks/{webhook_id}`, which behaves identically. Permanently deletes a webhook subscription. No further events are delivered to its URL. To stop deliveries reversibly, set `active` to `false` instead.
Rotate the signing secret of a webhook POST
**Deprecated.** Use `POST /v1/accounts/{account_id}/webhooks/{webhook_id}/secret`, which behaves identically. Generates a new HMAC signing secret for a webhook subscription. - **Old secret:** **immediately invalidated**. Update your signature verification logic before rotating, to avoid missing events during the transition. - **New secret:** returned **once**, in this response only. It cannot be read again.