Skip to content
The Bookwise guidev1.1.0Read as Markdown
Documentation menu
Docs/For developers
For developers

REST API

Book and manage bookings over plain HTTP, and read your own business's bookings with an API key.

Overview

The REST API at https://bookwise.live/api/v1 does what the MCP tools do, over plain HTTP and JSON. It uses the same services as the booking page, so availability, prices, policies and error codes are identical. The full contract is in the OpenAPI 3.1 document.

OpenAPI document
text
https://bookwise.live/api/v1/openapi.json

Businesses are addressed by ID (biz_…) or by their booking-page slug. Requests and responses are JSON; send content-type: application/json. Every endpoint allows cross-origin requests.

Booking flow

StepRequest
Business details and booking params schemaGET /businesses/{business}
Live availabilityPOST /businesses/{business}/availability with { params }
Hold an optionPOST /businesses/{business}/holds with { optionId, params, customer, idempotencyKey }
Confirm with contact detailsPOST /holds/{holdId}/confirm with { customer, idempotencyKey }
Verify the code, if one was sentPOST /holds/{holdId}/verify with { code }
Read or cancel laterGET /bookings/{bookingId}, POST /bookings/{bookingId}/cancel with Authorization: Bearer <accessToken>

Follow nextStep in each response: verification_required, payment_required (send the customer to paymentUrl), pending_approval (the business decides), or confirmed. Never collect card details yourself.

Your own bookings

Owners create API keys in Dashboard → Settings → API keys. A key belongs to one business and can only read. Send it as Authorization: Bearer bw_…

RequestScope
GET /owner/bookings?status=confirmed&from=2026-11-01T00:00:00Zbookings:read
GET /owner/overview?days=30overview:read

Limits and errors

Requests are rate-limited per IP address: 60 reads, 10 holds and 5 confirmations a minute. Errors return the same codes as MCP (VALIDATION_ERROR, SLOT_UNAVAILABLE, HOLD_EXPIRED, RATE_LIMITED…) with an HTTP status, a message and, for invalid fields, the fields at fault. See Errors and retries.