List booking types

List booking types

GET/api/v1/booking-types

scope bookings:read

The things a customer can book — a consultation, a site visit — each with its duration and location. Only active types are returned, in the order the business arranged them. Types are managed in Bookings → Settings.

Request
curl "https://your-crm.example.com/api/v1/booking-types" \
  -H "Authorization: Bearer $RAABTA_API_KEY"
Response · 200 OK
{
  "data": [
    {
      "id": "b00c1e00-1234-4abc-9def-000000000002",
      "name": "Consultation",
      "description": "A 30-minute discovery call",
      "duration_minutes": 30,
      "buffer_after_minutes": 0,
      "location": "Clinic, Room 2",
      "color": "#10b981"
    }
  ]
}

Response

Wrapped in { data: … }
NameTypeDescription
idrequired
string (uuid)UUID
namerequired
stringWhat the customer is booking, e.g. Consultation
descriptionrequired
string | nullA line about the type, shown to customers
duration_minutesrequired
integerHow long a booking of this type lasts
buffer_after_minutesrequired
integerGap kept free after the booking; already accounted for in the slots
locationrequired
string | nullWhere it happens; copied onto each booking
colorrequired
string | nullHex colour used on the calendar

Errors

StatusCodeWhen
401unauthorizedNo usable API key: the Authorization header is missing or malformed, or the key is unknown, revoked or expired. The three are deliberately indistinguishable.
403forbiddenThe key is valid but lacks the scope this endpoint requires, or the request came from an address outside the key’s IP allowlist. The message says which.
403account_suspendedThe account this key belongs to is suspended. Rotating the key will not help; contact support.
422unprocessableThe request was well-formed but cannot be carried out. `reason` is a stable string saying why (for example `outside_window` or `stage_not_in_pipeline`).
429rate_limitedThe per-key budget, or the per-IP budget for failed authentication, is exhausted. Honour `Retry-After` before retrying.
500internalSomething failed on our side. Safe to retry with the same Idempotency-Key; quote `request_id` if it persists.