Webhooks
10 operations. All areas
- GET /v1/webhooks
- POST /v1/webhooks
- GET /v1/webhooks/{id}
- POST /v1/webhooks/{id}
- POST /v1/webhooks/{id}/remove
- POST /v1/webhooks/{id}/rotate-secret
- POST /v1/webhooks/{id}/test
- GET /v1/webhooks/{id}/deliveries
- POST /v1/webhook-deliveries/{id}/redeliver
- GET /v1/webhook-events
GET/v1/webhooks
Outbound webhook endpoints and the event types they can subscribe to
- Operation
listWebhookEndpoints - Scope: read
- Read
- Responses
200Endpoints (object)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/webhooks
Add an endpoint (https, a public address; at most 10). Returns its signing secret ONCE (ebwhsec_...): every delivery carries Evenbead-Signature: t=<unix>,v1=<HMAC-SHA256 of "t.body">. People with admin access (a firm member needs "Manage integrations"); agents and AI apps are refused; audited.
- Operation
createWebhookEndpoint - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Request body
urlstring, requireddescriptionstringevent_typesarray of "entry.posted" | "entry.reversed" | "invoice.created" | "invoice.paid" | "invoice.voided" | "bill.created" | "bill.paid" | "bill.voided" | "payment.received" | "payment.made" | "proposal.created" | "proposal.decided" | "reconciliation.finished" | "period.status_changed" | "integration.error" | "*", required
- Responses
201Created (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/webhooks/{id}
One endpoint and its latest deliveries
- Operation
getWebhookEndpoint - Scope: read
- Read
- Parameters
idpath, string, required
- Responses
200Endpoint (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/webhooks/{id}
Change an endpoint's URL, description or event types, or turn it off and on (turning on clears an automatic turn-off). People with admin access; audited.
- Operation
updateWebhookEndpoint - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Parameters
idpath, string, required
- Request body
urlstringdescriptionstringevent_typesarray of "entry.posted" | "entry.reversed" | "invoice.created" | "invoice.paid" | "invoice.voided" | "bill.created" | "bill.paid" | "bill.voided" | "payment.received" | "payment.made" | "proposal.created" | "proposal.decided" | "reconciliation.finished" | "period.status_changed" | "integration.error" | "*"enabledboolean
- Responses
200Updated (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/webhooks/{id}/remove
Remove an endpoint: no more deliveries, its secrets deleted, waiting deliveries given up. People with admin access; audited.
- Operation
removeWebhookEndpoint - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Parameters
idpath, string, required
- Request body
Empty object
{}.- Responses
200Removed (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/webhooks/{id}/rotate-secret
A new signing secret, returned ONCE. The previous one keeps signing too (both v1 values in the header) for previous_valid_hours (0-168, default 24), so the receiver can switch without missing a delivery. People with admin access; audited.
- Operation
rotateWebhookSecret - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
previous_valid_hoursinteger
- Responses
200Rotated (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/webhooks/{id}/test
Send a test event (webhook.test) to the endpoint now, signed like every delivery, and say what it answered. Not retried.
- Operation
testWebhookEndpoint - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Parameters
idpath, string, required
- Request body
Empty object
{}.- Responses
200Sent (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
GET/v1/webhooks/{id}/deliveries
The delivery log of an endpoint, newest first: event, attempts, the receiver's status code or the error, next retry
- Operation
listWebhookDeliveries - Scope: read
- Read
- Parameters
idpath, string, requiredlimitquery, integer
- Responses
200Deliveries (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/webhook-deliveries/{id}/redeliver
Send a delivery again (within a minute or two), with fresh retries
- Operation
redeliverWebhook - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Parameters
idpath, string, required
- Request body
Empty object
{}.- Responses
200Queued (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
GET/v1/webhook-events
The event feed (kept 30 days): the events Evenbead sent or is sending to this company's endpoints, newest first. Events exist only while an endpoint wants them.
- Operation
listWebhookEvents - Scope: read
- Read
- Parameters
typequery, stringbeforequery, stringlimitquery, integer
- Responses
200Events (object)- Errors
400,401,403,429,500(Error:error.type,message)