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.
https://bookwise.live/api/v1/openapi.jsonBusinesses 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
| Step | Request |
|---|---|
| Business details and booking params schema | GET /businesses/{business} |
| Live availability | POST /businesses/{business}/availability with { params } |
| Hold an option | POST /businesses/{business}/holds with { optionId, params, customer, idempotencyKey } |
| Confirm with contact details | POST /holds/{holdId}/confirm with { customer, idempotencyKey } |
| Verify the code, if one was sent | POST /holds/{holdId}/verify with { code } |
| Read or cancel later | GET /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_…
| Request | Scope |
|---|---|
GET /owner/bookings?status=confirmed&from=2026-11-01T00:00:00Z | bookings:read |
GET /owner/overview?days=30 | overview: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.