List free slots

List free slots

GET/api/v1/bookings/slots

scope bookings:read

The start times one member is free for one booking type. Working hours, time off, existing bookings, the type’s buffer and the account’s minimum notice are already applied — anything returned can be booked. from defaults to now and to to the end of the account’s booking window. A window is cut to that horizon and to 45 days per request; page forward with from for more. A window that is entirely in the past, or past the horizon, returns no slots.

Query parameters

NameTypeDescription
type_idrequired
string (uuid)A booking type id
user_idrequired
string (uuid)A bookable member’s user_id
fromoptional
string (date-time)Start of the window. Defaults to now
tooptional
string (date-time)End of the window. Defaults to the end of the booking window
Request
curl "https://your-crm.example.com/api/v1/bookings/slots?type_id=b00c1e00-1234-4abc-9def-000000000002&user_id=2f3e4d5c-6b7a-4c8d-9e0f-1a2b3c4d5e6f&from=2026-09-05T00%3A00%3A00.000Z&to=2026-09-06T00%3A00%3A00.000Z" \
  -H "Authorization: Bearer $RAABTA_API_KEY"
Response · 200 OK
{
  "data": {
    "slots": [
      "2026-09-05T10:00:00.000Z",
      "2026-09-05T10:30:00.000Z"
    ],
    "time_zone": "Asia/Dubai"
  }
}

Response

Wrapped in { data: … }
NameTypeDescription
slotsrequired
string (date-time)[]Free start times in UTC, soonest first. Pass one as starts_at when booking
time_zonerequired
stringThe business’s IANA time zone — show the slots to a person in this zone

Errors

StatusCodeWhen
400bad_requestThe request could not be parsed: malformed JSON, an invalid cursor, or a query parameter of the wrong shape.
400validation_errorThe body or query failed validation. `details` lists each failing field with a `path` and a `message`.
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.