Skip to main content
POST
/
v1
/
bookings
/
{booking_id}
/
cancel
curl -X POST https://api.saoma.io/v1/bookings/bkg_7f1a9c3b8d4e4f21/cancel \
  -H "Authorization: Bearer $SAOMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Customer rescheduled through partner app",
    "cancelled_by": "customer"
  }'
{
  "data": {
    "id": "bkg_7f1a9c3b8d4e4f21",
    "status": "cancelled",
    "start_at": "2026-05-12T12:00:00Z",
    "cancellation": {
      "fee": { "amount": 0, "currency": "EUR" },
      "policy": "Free cancellation up to 24h before the appointment.",
      "cancelled_at": "2026-04-22T14:10:00Z"
    }
  }
}
Not yet available. This endpoint is not implemented in the API yet. The specification below is a preview and may change before release. Contact the Saoma team if you need it.
Cancels a booking. The venue’s cancellation policy is applied server-side: depending on the timing, a cancellation fee may be recorded for reconciliation.
Only bookings in status pending, awaiting_therapist or confirmed can be cancelled through this endpoint. Completed, no-show or already cancelled bookings return BOOKING_ALREADY_CANCELLED (422).

Path parameters

booking_id
string
required
The booking id (or ext: external reference).

Body parameters

reason
string
required
Free-text reason for cancellation. Stored for support and analytics.
cancelled_by
'partner' | 'customer'
default:"partner"
Who is requesting the cancellation. Used by the cancellation policy (e.g. a customer-triggered cancellation may incur a different fee).

Response

Returns the updated Booking object with status = "cancelled", plus a cancellation block describing the applied policy.
cancellation.fee
Money
Cancellation fee applied, if any. { amount: 0, currency: "EUR" } if free.
cancellation.policy
string
Human-readable summary of the policy applied.
cancellation.cancelled_at
string (ISO 8601 UTC)

Errors

CodeHTTPMeaning
BOOKING_NOT_FOUND404Unknown booking
BOOKING_ALREADY_CANCELLED422Already cancelled, completed or no-show
FORBIDDEN403Not your booking

Example

curl -X POST https://api.saoma.io/v1/bookings/bkg_7f1a9c3b8d4e4f21/cancel \
  -H "Authorization: Bearer $SAOMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Customer rescheduled through partner app",
    "cancelled_by": "customer"
  }'
{
  "data": {
    "id": "bkg_7f1a9c3b8d4e4f21",
    "status": "cancelled",
    "start_at": "2026-05-12T12:00:00Z",
    "cancellation": {
      "fee": { "amount": 0, "currency": "EUR" },
      "policy": "Free cancellation up to 24h before the appointment.",
      "cancelled_at": "2026-04-22T14:10:00Z"
    }
  }
}