Set business hours

Set business hours

PUT/api/v1/business-hours

scope account:write

Changes the time zone, the weekly hours, or both. Send only what you want to change. business_hours REPLACES the whole week — a day you leave out becomes closed — and null clears the hours altogether. A range that closes earlier than it opens runs past midnight. This takes effect immediately across the account: assistants set to answer outside business hours, the website chat’s availability, and the send window for personal-WhatsApp broadcasts all read it. It does not change booking availability, which each bookable member keeps separately in Bookings → Settings.

Body

application/json
NameTypeDescription
timezoneoptional
stringAn IANA time zone, e.g. Asia/Dubai
business_hoursoptional
object | nullThe whole week, replacing what is stored; null clears it
business_hours.monoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.tueoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.wedoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.thuoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.frioptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.satoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
business_hours.sunoptional
string[][]Open ranges as [open, close]. An empty list is closed all day
Request
curl -X PUT "https://your-crm.example.com/api/v1/business-hours" \
  -H "Authorization: Bearer $RAABTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "business_hours": {
      "mon": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "tue": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "wed": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "thu": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "fri": [
        [
          "09:00",
          "12:00"
        ],
        [
          "14:00",
          "18:00"
        ]
      ]
    }
  }'
Response · 200 OK
{
  "data": {
    "timezone": "Asia/Dubai",
    "business_hours": {
      "mon": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "tue": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "wed": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "thu": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "fri": [
        [
          "09:00",
          "12:00"
        ],
        [
          "14:00",
          "18:00"
        ]
      ]
    },
    "is_open_now": true
  }
}

Response

Wrapped in { data: … }
NameTypeDescription
timezonerequired
stringThe account’s IANA time zone; every time below is in it
business_hoursrequired
map<string, string[][]> | nullWeekday key (mon to sun) to a list of [open, close] times as HH:MM. A missing day is closed. null means the hours have never been set
is_open_nowrequired
boolean | nullWhether the business is open at this moment; null when no hours are set

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.
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.