Evenbead docs

Webhooks

10 operations. All areas

GET/v1/webhooks

Outbound webhook endpoints and the event types they can subscribe to

  • Operation listWebhookEndpoints
  • Scope: read
  • Read
Responses
  • 200 Endpoints (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
  • url string, required
  • description string
  • event_types array 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
  • 201 Created (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
  • id path, string, required
Responses
  • 200 Endpoint (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
  • id path, string, required
Request body
  • url string
  • description string
  • event_types array 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" | "*"
  • enabled boolean
Responses
  • 200 Updated (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
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Removed (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
  • id path, string, required
Request body
  • previous_valid_hours integer
Responses
  • 200 Rotated (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
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Sent (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
  • id path, string, required
  • limit query, integer
Responses
  • 200 Deliveries (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
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Queued (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
  • type query, string
  • before query, string
  • limit query, integer
Responses
  • 200 Events (object)
  • Errors 400, 401, 403, 429, 500 (Error: error.type, message)