Skip to main content
For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt — this page is also available in markdown by appending .md to the URL.
The Webhooks API manages webhook subscription records and can send a manual test delivery to a registered endpoint. For the delivery format, fan-out, signature verification, and the event catalog, see the Webhooks guide. For the audit trail of every attempt, see Webhook delivery history. All endpoints are org-scoped to the API key. See API conventions for authentication and the error envelope.

Register a webhook

POST
POST /v1/webhooks
Creates a webhook subscription. Returns 201 Created.

Request body

string
required
The public HTTPS endpoint Coverbase will POST to. Rejected with 400 invalid_url if it is not HTTPS, carries credentials, uses a non-standard port, or resolves to a private / loopback / link-local / metadata address. See URL restrictions.
string[]
required
Event type strings to subscribe to. Strictly validated against the event catalog — any value not in the catalog fails with 422 invalid_event_types. Use the exact, case-sensitive values (e.g. Vendor.Created).
string
required
Shared secret used to sign deliveries (HMAC-SHA256). Must be at least 16 characters. Write-only — it is never returned in any response.
string
Optional human-readable label.
boolean
Defaults to true. When false, the subscription is created in a disabled state.

Example request

Example response

201 Created:
The secret is never returned after creation. Store it at registration time. If lost, set a new one via the update endpoint.

Response fields

string
Webhook ID (cbwh_...).
string
The registered HTTPS endpoint.
string[]
Subscribed event strings.
string | null
The label, if set.
boolean
true when the subscription is active.
integer
Unix timestamp (seconds) when the webhook was created.
string | null
Status of the most recent recorded delivery attempt — one of delivered, timeout, error, skipped — or null if there are no recorded deliveries yet.
number | null
Fraction of recorded attempts that were delivered, 01 (rounded to 4 dp). null when there are no recorded deliveries.
integer
Total recorded delivery attempts for this webhook. 0 when none.
See Webhook delivery history for the per-attempt records behind these aggregates.

Error responses

Validation is applied in this order: secret, then url, then events.

List webhooks

GET
GET /v1/webhooks
Returns all (non-archived) webhook subscriptions for the org, each including its delivery-health aggregates.

Example response

Each item has the same shape as the create response, including last_delivery_status, delivery_success_rate, and delivery_count.

Update a webhook

PATCH
PATCH /v1/webhooks/{webhook_id}
Updates a webhook subscription. Only the fields you include are changed; omitted or null fields are left unchanged. Returns the updated webhook (same shape as the create response).

Request body

string
New endpoint. If provided, must start with https://.
string[]
Replace the subscribed event list. Strictly validated against the event catalog — an unsupported value fails with 422 invalid_event_types.
string
Rotate the signing secret. If provided, must be at least 16 characters.
string
Update the label.
boolean
Enable or disable the subscription.

Example requests

Update events
Rotate the secret

Error responses

Delete a webhook

DELETE
DELETE /v1/webhooks/{webhook_id}
Archives (soft-deletes) the webhook subscription. Returns 204 No Content.
cURL

Test a webhook

POST
POST /v1/webhooks/{webhook_id}/test
Enqueues a test delivery to the webhook’s URL. The delivery is dispatched asynchronously, so the response confirms the test was enqueued — it does not contain the receiver’s HTTP status.

Request body

string
default:"webhook.test"
Event type string to send in the test delivery. Unlike subscription events, this is not validated against the catalog — any string is accepted, including webhook.test.
object
Optional. The object delivered as the envelope’s data. Defaults to {"test": true}.

Example request

Custom payload
Default payload

Example response

delivered reflects that the test was enqueued, not that the receiver accepted it. response_status and response_time_ms are always null on this response because delivery happens out of band. The actual attempt (and the receiver’s real status) is recorded in delivery history. The delivered envelope’s data is your payload (default {"test": true}).

Error responses

List delivery attempts

GET
GET /v1/webhooks/{webhook_id}/deliveries
Returns the paginated delivery history for a webhook, newest first. Full request/response schema, query parameters, status values, and pagination are documented on the Webhook delivery history page.
cURL

Appendix A: cURL quick reference

One block per endpoint, copy-paste ready. Set these once:
Setup
Create a webhook
Validation errors
List webhooks (with delivery health)
Update a webhook
Send a test delivery
Delivery history (paginated, newest first)
Delete a webhook
Org-level API IP allowlist
For receiver-side signature verification (Python and Node), see Webhooks → Signature verification.