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/webhooks201 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:
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, 0–1 (rounded to 4 dp). null when there are no recorded deliveries.integer
Total recorded delivery attempts for this webhook.
0 when none.Error responses
Validation is applied in this order:secret, then url, then events.
List webhooks
GET
GET /v1/webhooksExample response
last_delivery_status, delivery_success_rate, and delivery_count.
Update a webhook
PATCH
PATCH /v1/webhooks/{webhook_id}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}204 No Content.
cURL
Test a webhook
POST
POST /v1/webhooks/{webhook_id}/testRequest 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}/deliveriescURL
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