BillOS v1
Console llms.txt OpenAPI
PUT/businesses/{bid}/calendar

Turn the calendar on or off and save its settings

PUT /businesses/{bid}/calendar

Requires the businesses scope.

The owner's alone (a shared or connected credential gets 404). The first time it is turned on stamps setupAt. Turning it off hides the calendar and deletes nothing.

Path parameters

NameTypeDescription
bidstringrequiredBusiness id, from POST /businesses.

Body

FieldTypeDescription
enabledbooleanTurn the calendar on or off. Turning it off hides it; nothing is deleted.
locationsarray of string
defaultMinutesinteger5..720
hoursobjectAs on Calendar; null resets to the default week (Sunday-Thursday 09:00-18:00, Friday until 13:00).
billingstringOne of: per_visit, package, quote_first.
teamIntentobject
teamIntent.soloboolean
teamIntent.peopleinteger1..100 when not solo
feedDetailstringOne of: full, minimal.

Response

200: { "ok": true, … }

FieldTypeDescription
okbooleanrequired
calendarCalendarrequiredThe calendar's switch and the answers its owner gave when turning it on. A business that never turned it on reads as these defaults with enabled: false.

Errors: 400, 401, 403, 404, 429. Every failure answers { "error", "reason", "hint", "param", "doc_url", "retryable", "request_id" }: branch on reason, and read hint for what to change (https://docs.billos.co.il/errors.md).

PUT /businesses/{bid}/calendar
curl -X PUT "$BASE/businesses/$BID/calendar" \
  -H "X-Api-Key: $KEY"
const res = await fetch(`${BASE}/businesses/${BID}/calendar`, {
  method: 'PUT',
  headers: {
    'X-Api-Key': KEY,
  },
})
const data = await res.json()
if (!data.ok) throw new Error(data.reason)
import requests
res = requests.put(
    f"{BASE}/businesses/{BID}/calendar",
    headers={"X-Api-Key": KEY},
)
data = res.json()
Set BASE to https://api.billos.co.il/v1 and KEY to your bk_live_… key, or a bk_test_… key to run it against the sandbox.
Manage your businesses, keys and webhooks in the BillOS Console.