Developer reference
Livwell Open API
A read-focused, key-authenticated REST API for pulling a business's payments, memberships, catalog and directory data, plus signed webhooks for real-time events. Every request is scoped to a single branch and gated by fine-grained scopes.
Production base URL
https://platform-api.golivwell.comLive data and real money. Use production credentials.
Get started
Quickstart
- 1.In the Livwell dashboard, open Settings → Developer / API and create an API key. Copy the access key and secret; the secret is shown only once.
- 2.Pick the branch you want to read from and note its id. Every request must carry it in the
X-Branch-Idheader. - 3.Call any endpoint with the three headers below.
curl https://platform-api.golivwell.com/api/v1/open/payment/history \
-H "X-Access-Key: ak_live_..." \
-H "X-Secret-Key: sk_live_..." \
-H "X-Branch-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6"Security
Authentication
Partner endpoints under /api/v1/open authenticate with three request headers, not a bearer token. Credentials are verified in constant time; the secret is stored hashed and can never be retrieved after creation.
- A key is either business-wide or locked to one branch. Branch-locked keys only accept their own branch id.
- Keys may carry an IP allowlist (CIDR). Requests from outside the allowlist are rejected.
- Keys expire (default two years) and can be rotated or revoked at any time.
Security
Scopes
Each endpoint requires a scope. A key is granted only the scopes it needs. Scopes ending in :READ_PII unlock personal data and require a step-up confirmation when the key is created or rotated.
Data handling
PII & redaction
Personal fields (names, emails, phone numbers) are redacted by default. They appear only when the key holds the matching :READ_PII scope; otherwise the field is omitted from the JSON entirely. PII fields are marked with a pii badge throughout this reference.
Limits
Rate limits
Each key has an hourly request quota (default 1,000 requests/hour, configurable per key). Exceeding it returns 429 Too Many Requests. Back off and retry after the window resets.
Conventions
Pagination
List endpoints accept page (1-based, default 1) and pageSize (default 20, max 100), and return the envelope below. Note the request page is 1-based while the pagination.page in the response is 0-based.
{
"data": [ /* array of items */ ],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 137,
"totalPages": 7
}
}Conventions
Errors
Errors follow RFC 9457 Problem Details (application/problem+json) and include a traceId for support.
Payments
Transaction history, revenue summary and CSV export.
/api/v1/open/payment/historySCOPE PAYMENT:READList transactions
Paginated transaction history for the key's branch, with rich filtering.
GET https://platform-api.golivwell.com/api/v1/open/payment/historyQuery parameters
Response OpenApiTransactionResponse (paginated)
A payment transaction (sales ledger entry).
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"ownerType": "MEMBERSHIP",
"currency": "USD",
"subtotalAmount": 49.99,
"taxAmount": 49.99,
"feeAmount": 49.99,
"discountAmount": 49.99,
"grossAmount": 49.99,
"refundedAmount": 49.99,
"status": "ACTIVE",
"description": "string",
"clientName": "Jane Doe",
"clientEmail": "jane@example.com",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/payment/history/exportSCOPE PAYMENT:EXPORTExport transactions (CSV)
Streams matching transactions as a CSV attachment. Same filters as the list endpoint (no paging).
GET https://platform-api.golivwell.com/api/v1/open/payment/history/exportQuery parameters
- Capped at 50,000 rows.
- Columns: id, createdAt, ownerType, status, currency, subtotalAmount, taxAmount, feeAmount, discountAmount, grossAmount, refundedAmount, description. clientName and clientEmail columns are added only when the key holds PAYMENT:READ_PII.
- Returns Content-Disposition: attachment; filename=transactions.csv.
Returns text/csv.
/api/v1/open/payment/history/{transactionId}SCOPE PAYMENT:READGet a transaction
A single transaction. Must belong to the key's branch.
GET https://platform-api.golivwell.com/api/v1/open/payment/history/{transactionId}Path parameters
Response OpenApiTransactionResponse
A payment transaction (sales ledger entry).
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"ownerType": "MEMBERSHIP",
"currency": "USD",
"subtotalAmount": 49.99,
"taxAmount": 49.99,
"feeAmount": 49.99,
"discountAmount": 49.99,
"grossAmount": 49.99,
"refundedAmount": 49.99,
"status": "ACTIVE",
"description": "string",
"clientName": "Jane Doe",
"clientEmail": "jane@example.com",
"createdAt": "2026-09-15T09:30:00Z"
}/api/v1/open/payment/summarySCOPE PAYMENT:READRevenue summary
Aggregate revenue over a window, broken down by owner type.
GET https://platform-api.golivwell.com/api/v1/open/payment/summaryQuery parameters
Response OpenApiRevenueSummaryResponse
Aggregate revenue over a window, broken down by owner type.
Example response
{
"from": "2026-09-15T09:30:00Z",
"to": "2026-09-15T09:30:00Z",
"grossAmount": 49.99,
"refundedAmount": 49.99,
"netAmount": 49.99,
"transactionCount": 128,
"byOwnerType": [
{
"ownerType": "MEMBERSHIP",
"grossAmount": 49.99,
"refundedAmount": 49.99,
"transactionCount": 128
}
]
}Catalog & records
Events, memberships, orders, packages, guest passes and check-ins.
/api/v1/open/eventsSCOPE EVENT:READList events
The branch's event catalog.
GET https://platform-api.golivwell.com/api/v1/open/eventsQuery parameters
Response OpenApiEventResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchName": "string",
"name": "Sunrise Yoga",
"summary": "string",
"eventType": "CLASS",
"scheduleType": "RECURRING",
"status": "ACTIVE",
"basePrice": 49.99,
"currency": "USD",
"maxCapacity": 20,
"imageUrl": "string",
"nextSessionDate": "2026-09-15",
"lastSessionDate": "2026-09-15",
"hasEnded": true,
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/membershipsSCOPE MEMBERSHIP:READList memberships
Business-level membership records.
GET https://platform-api.golivwell.com/api/v1/open/membershipsQuery parameters
- purchaserName is included only when the key holds MEMBERSHIP:READ_PII.
Response OpenApiMembershipResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"purchaserClientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"planId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"planName": "Unlimited Monthly",
"status": "ACTIVE",
"currentPeriodStart": "2026-09-15T09:30:00Z",
"currentPeriodEnd": "2026-09-15T09:30:00Z",
"autoRenew": true,
"complimentary": true,
"cancelEffectiveAt": "2026-09-15T09:30:00Z",
"seatsUsed": 20,
"seatsTotal": 20,
"purchaserName": "Jane Doe"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/checkinsSCOPE CHECKIN:READList check-ins
Attendance / check-in events.
GET https://platform-api.golivwell.com/api/v1/open/checkinsQuery parameters
- clientName is included only when the key holds CHECKIN:READ_PII.
Response OpenApiCheckInResponse (paginated)
Example response
{
"data": [
{
"checkInId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"scannedAt": "2026-09-15T09:30:00Z",
"clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"membershipRecordId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"planName": "Unlimited Monthly",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchName": "string",
"statusAtScan": "string",
"clientName": "Jane Doe"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/ordersSCOPE ORDER:READList orders
Storefront orders.
GET https://platform-api.golivwell.com/api/v1/open/ordersQuery parameters
Response OpenApiOrderResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "ORD-10432",
"subtotal": 49.99,
"taxTotal": 49.99,
"discountAmount": 49.99,
"totalAmount": 49.99,
"currency": "USD",
"status": "ACTIVE",
"purchaseChannel": "string",
"paymentMethod": "string",
"paidAt": "2026-09-15T09:30:00Z",
"fulfilledAt": "2026-09-15T09:30:00Z",
"cancelledAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/orders/{orderId}SCOPE ORDER:READGet an order
A single storefront order.
GET https://platform-api.golivwell.com/api/v1/open/orders/{orderId}Path parameters
Response OpenApiOrderResponse
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "ORD-10432",
"subtotal": 49.99,
"taxTotal": 49.99,
"discountAmount": 49.99,
"totalAmount": 49.99,
"currency": "USD",
"status": "ACTIVE",
"purchaseChannel": "string",
"paymentMethod": "string",
"paidAt": "2026-09-15T09:30:00Z",
"fulfilledAt": "2026-09-15T09:30:00Z",
"cancelledAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}/api/v1/open/packagesSCOPE PACKAGE:READList packages
The package catalog.
GET https://platform-api.golivwell.com/api/v1/open/packagesQuery parameters
Response OpenApiPackageResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchName": "string",
"categoryName": "string",
"packageName": "10-Class Pack",
"slug": "string",
"price": 49.99,
"currency": "USD",
"onlineSale": true,
"published": true,
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/guest-passesSCOPE GUEST_PASS:READList guest passes
Business-level guest passes.
GET https://platform-api.golivwell.com/api/v1/open/guest-passesQuery parameters
Response OpenApiGuestPassResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sunrise Yoga",
"customerLabel": "string",
"accessCount": 20,
"validityRule": "string",
"price": 49.99,
"currency": "USD",
"status": "ACTIVE",
"saleStartAt": "2026-09-15T09:30:00Z",
"saleEndAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}Clients
Client directory. Inherently PII.
/api/v1/open/clientsSCOPE CLIENT:READ_PIIList clients
Client directory for the business.
GET https://platform-api.golivwell.com/api/v1/open/clientsQuery parameters
Response OpenApiClientResponse (paginated)
Client directory record. Inherently PII (requires CLIENT:READ_PII). Excludes health data, financials and notes.
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"memberNumber": "MEM-0087",
"firstName": "Jane",
"lastName": "Doe",
"preferredName": "string",
"email": "jane@example.com",
"phone": "string",
"status": "ACTIVE",
"joinedAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/clients/{clientId}SCOPE CLIENT:READ_PIIGet a client
A single client record.
GET https://platform-api.golivwell.com/api/v1/open/clients/{clientId}Path parameters
Response OpenApiClientResponse
Client directory record. Inherently PII (requires CLIENT:READ_PII). Excludes health data, financials and notes.
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"memberNumber": "MEM-0087",
"firstName": "Jane",
"lastName": "Doe",
"preferredName": "string",
"email": "jane@example.com",
"phone": "string",
"status": "ACTIVE",
"joinedAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}Directory & finance
Branches, staff, payouts, balance and the occupancy feed.
/api/v1/open/directory/branchesSCOPE DIRECTORY:READList branches
Branch directory.
GET https://platform-api.golivwell.com/api/v1/open/directory/branchesQuery parameters
Response OpenApiBranchResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sunrise Yoga",
"code": "string",
"status": "ACTIVE",
"headquarters": true,
"email": "jane@example.com",
"phone": "string",
"timezone": "Africa/Lagos",
"capacity": 20,
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/directory/staffSCOPE DIRECTORY:READList staff
Staff directory (role and display fields only).
GET https://platform-api.golivwell.com/api/v1/open/directory/staffQuery parameters
Response OpenApiStaffResponse (paginated)
Staff directory entry. Role and display fields only.
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"primaryBranchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"firstName": "Jane",
"lastName": "Doe",
"preferredName": "string",
"jobTitle": "string",
"department": "string",
"status": "ACTIVE",
"photoUrl": "string",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/payoutsSCOPE PAYOUT:READList payouts
Business-level payouts.
GET https://platform-api.golivwell.com/api/v1/open/payoutsQuery parameters
Response OpenApiPayoutResponse (paginated)
Example response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"amount": 49.99,
"currency": "USD",
"status": "ACTIVE",
"railReference": "string",
"destinationMasked": "string",
"periodStart": "2026-09-15T09:30:00Z",
"periodEnd": "2026-09-15T09:30:00Z",
"settledAt": "2026-09-15T09:30:00Z",
"createdAt": "2026-09-15T09:30:00Z"
}
],
"pagination": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1
}
}/api/v1/open/balanceSCOPE PAYOUT:READGet balance
Pending and available balance for the business.
GET https://platform-api.golivwell.com/api/v1/open/balanceResponse OpenApiBalanceResponse
Example response
{
"pendingAmount": 49.99,
"availableAmount": 49.99,
"currency": "USD"
}/api/v1/open/bookings/occurrencesSCOPE BOOKING:READBooking occupancy feed
Occupancy across bookable surfaces in a window. Returns a bare JSON array (not paginated).
GET https://platform-api.golivwell.com/api/v1/open/bookings/occurrencesQuery parameters
Response OpenApiBookingOccurrenceResponse (array)
An occupancy feed entry across bookable surfaces.
Example response
[
{
"surface": "APPOINTMENT",
"occurrenceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"resourceCatalogId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"branchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"startAt": "2026-09-15T09:30:00Z",
"endAt": "2026-09-15T09:30:00Z",
"bookingCount": 128
}
]Real-time
Webhooks
Receiving events
Register an HTTPS endpoint and subscribe to the events you care about. Livwell POSTs a JSON payload for each event, signs it, and retries failed deliveries with exponential backoff (up to 5 attempts). Respond with a 2xx to acknowledge.
POST https://your-app.com/livwell/webhooks
X-Livwell-Signature: sha256=<hex>
X-Webhook-Event: payment.succeeded
Content-Type: application/json
{
"id": "evt_9f2c...",
"event": "payment.succeeded",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"createdAt": "2026-09-15T09:30:00Z",
"data": { }
}Verifying signatures
Every delivery carries an X-Livwell-Signature header of the form sha256=<hex>: an HMAC-SHA256 of the raw request body using your endpoint's signing secret. Compute the same HMAC and compare in constant time. Always verify against the raw bytes, before any JSON parsing.
import crypto from "node:crypto";
function isValid(rawBody, signatureHeader, signingSecret) {
const expected =
"sha256=" +
crypto.createHmac("sha256", signingSecret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
);
}Event types
Provisioning
Managing webhooks
The endpoints below register and manage webhook endpoints. They authenticate with a user JWT (Authorization: Bearer) and are what the Livwell dashboard calls under the hood. API keys themselves are created and managed in the dashboard under Settings → Developer / API.
Webhook endpoints
Register and manage webhook endpoints. Authenticated with a user JWT.
/api/v1/businesses/{businessId}/webhooksWEBHOOK:CREATECreate an endpoint
Registers a webhook endpoint and returns the signing secret once.
POST https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks
Authorization: Bearer <jwt>Path parameters
Request body WebhookEndpointCreateRequest
Response WebhookEndpointCreationResponse
Returned once on create/rotate-secret. The signing secret is shown only once.
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://example.com/livwell/webhooks",
"signingSecret": "whsec_shown_once_do_not_share_xxxxxxxxxx",
"events": [
"string"
],
"warning": "Store this secret now. It cannot be retrieved again."
}/api/v1/businesses/{businessId}/webhooksWEBHOOK:LISTList endpoints
All webhook endpoints for the business.
GET https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks
Authorization: Bearer <jwt>Path parameters
Response WebhookEndpointResponse (array)
Webhook endpoint metadata. Never carries the signing secret.
Example response
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://example.com/livwell/webhooks",
"description": "string",
"events": [
"string"
],
"active": true,
"secretSet": true,
"createdAt": "2026-09-15T09:30:00Z"
}
]/api/v1/businesses/{businessId}/webhooks/{endpointId}WEBHOOK:READGet an endpoint
A single webhook endpoint.
GET https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}
Authorization: Bearer <jwt>Path parameters
Response WebhookEndpointResponse
Webhook endpoint metadata. Never carries the signing secret.
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://example.com/livwell/webhooks",
"description": "string",
"events": [
"string"
],
"active": true,
"secretSet": true,
"createdAt": "2026-09-15T09:30:00Z"
}/api/v1/businesses/{businessId}/webhooks/{endpointId}WEBHOOK:UPDATEUpdate an endpoint
Update URL, description, events or active state.
PUT https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}
Authorization: Bearer <jwt>Path parameters
Request body WebhookEndpointUpdateRequest
PATCH-style: null fields are left unchanged.
Response WebhookEndpointResponse
Webhook endpoint metadata. Never carries the signing secret.
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://example.com/livwell/webhooks",
"description": "string",
"events": [
"string"
],
"active": true,
"secretSet": true,
"createdAt": "2026-09-15T09:30:00Z"
}/api/v1/businesses/{businessId}/webhooks/{endpointId}/rotate-secretWEBHOOK:UPDATERotate signing secret
Issues a new signing secret and returns it once.
POST https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}/rotate-secret
Authorization: Bearer <jwt>Path parameters
Response WebhookEndpointCreationResponse
Returned once on create/rotate-secret. The signing secret is shown only once.
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://example.com/livwell/webhooks",
"signingSecret": "whsec_shown_once_do_not_share_xxxxxxxxxx",
"events": [
"string"
],
"warning": "Store this secret now. It cannot be retrieved again."
}/api/v1/businesses/{businessId}/webhooks/{endpointId}/testWEBHOOK:UPDATESend a test event
Delivers a test payload to the endpoint and returns the delivery result.
POST https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}/test
Authorization: Bearer <jwt>Path parameters
Response WebhookDeliveryResponse
Example response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"eventType": "CLASS",
"status": "ACTIVE",
"responseCode": 20,
"error": "string",
"attempts": 20,
"createdAt": "2026-09-15T09:30:00Z",
"lastAttemptAt": "2026-09-15T09:30:00Z"
}/api/v1/businesses/{businessId}/webhooks/{endpointId}/deliveriesWEBHOOK:READList deliveries
Recent delivery attempts for an endpoint.
GET https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}/deliveries
Authorization: Bearer <jwt>Path parameters
Query parameters
Response WebhookDeliveryResponse (array)
Example response
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"eventType": "CLASS",
"status": "ACTIVE",
"responseCode": 20,
"error": "string",
"attempts": 20,
"createdAt": "2026-09-15T09:30:00Z",
"lastAttemptAt": "2026-09-15T09:30:00Z"
}
]/api/v1/businesses/{businessId}/webhooks/{endpointId}WEBHOOK:DELETEDelete an endpoint
Removes the endpoint. Returns 204.
DELETE https://platform-api.golivwell.com/api/v1/businesses/{businessId}/webhooks/{endpointId}
Authorization: Bearer <jwt>