For AI agents: markdown of this page — /docs-content-en/calendar/accessibility.md documentation index — /llms.txt

Attendee availability

GET /v1/calendar/accessibility

Returns employees' busy intervals for a period: events from their calendars and absence chart entries. Call the method before you schedule a meeting to pick a time without overlaps.

The generic filter parameter is not applied by this endpoint. By default, the API preserves the previous HTTP 200 response and data, adds Warning: 299 - "filter is not supported on this endpoint and was ignored", and records unsupported-filter use in the server log.

Parameters

Parameter Type Required Description
ParameteruserIds (query) Typestring Requiredyes DescriptionComma-separated employee IDs. List: GET /v1/users
Parameterfrom (query) Typestring Requiredyes DescriptionPeriod start: a date such as 2026-10-01, or a date and time in ISO 8601
Parameterto (query) Typestring Requiredyes DescriptionPeriod end in the same format

Examples

curl — personal key

Terminal
curl -G https://vibecode.bitrix24.com/v1/calendar/accessibility \
  --data-urlencode "userIds=1295" \
  --data-urlencode "from=2026-10-01" \
  --data-urlencode "to=2026-10-31" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl -G https://vibecode.bitrix24.com/v1/calendar/accessibility \
  --data-urlencode "userIds=1295" \
  --data-urlencode "from=2026-10-01" \
  --data-urlencode "to=2026-10-31" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const params = new URLSearchParams({ userIds: '1295', from: '2026-10-01', to: '2026-10-31' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/calendar/accessibility?${params}`, {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()

for (const [userId, intervals] of Object.entries(data)) {
  console.log(userId, intervals.map((i) => `${i.from} — ${i.to}`))
}

JavaScript — OAuth application

javascript
const params = new URLSearchParams({ userIds: '1295', from: '2026-10-01', to: '2026-10-31' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/calendar/accessibility?${params}`, {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { data } = await res.json()

Response fields

Field Type Description
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata Typeobject DescriptionAvailability by employee: the key is an employee ID from userIds, the value is an array of busy intervals. An empty array means the period has no busy intervals visible to the key owner
Fielddata.<userId>[].id Typenumber DescriptionID of the calendar event or absence chart entry
Fielddata.<userId>[].name Typestring DescriptionEvent name. For another employee's private event, and for an event whose name the key owner cannot see, the busy status in square brackets is returned instead of the name. Absence chart entries do not have this field
Fielddata.<userId>[].from Typestring DescriptionInterval start: a date and time in ISO 8601 with an offset. For an all-day event, a date without time
Fielddata.<userId>[].to Typestring DescriptionInterval end in the same format. For an all-day event, the last day of the event, inclusive
Fielddata.<userId>[].timezoneFrom Typestring DescriptionTime zone of the start, for example UTC. All-day events do not have this field
Fielddata.<userId>[].timezoneTo Typestring DescriptionTime zone of the end. All-day events do not have this field
Fielddata.<userId>[].skipTime Typeboolean Descriptiontrue means an all-day event
Fielddata.<userId>[].accessibility Typestring DescriptionBusy status in the interval, for example busy. For an absence chart entry, absent
Fielddata.<userId>[].importance Typestring DescriptionEvent importance, for example normal
Fielddata.<userId>[].eventType Typestring | null DescriptionEvent type. null for an event without a special type
Fielddata.<userId>[].fromHr Typeboolean Descriptiontrue for an absence chart entry. The time of such an entry is returned in UTC. Calendar events do not have this field

Response example

JSON
{
  "success": true,
  "data": {
    "1295": [
      {
        "from": "2026-10-15T10:00:00+00:00",
        "to": "2026-10-15T11:00:00+00:00",
        "id": 8339,
        "name": "Team meeting",
        "accessibility": "busy",
        "importance": "normal",
        "eventType": null,
        "timezoneFrom": "UTC",
        "timezoneTo": "UTC",
        "skipTime": false
      },
      {
        "from": "2026-10-19",
        "to": "2026-10-20",
        "id": 8341,
        "name": "Business trip",
        "accessibility": "absent",
        "importance": "normal",
        "eventType": null,
        "skipTime": true
      }
    ]
  }
}

Error response example

400 — the date in from is not in ISO 8601 format:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "from must be an ISO date"
  }
}

Errors

HTTP Code Description
HTTP200 CodeWarning: 299 DescriptionThe filter is ignored by default; previous data is preserved and the warning is sent in the Warning header.
HTTP400 (strict mode only) CodeUNSUPPORTED_FILTER DescriptionThe server mode is disabled by default; until it is enabled, the endpoint preserves HTTP 200 and the previous data.
HTTP400 CodeMISSING_REQUIRED_FIELDS DescriptionuserIds, from or to is missing, or userIds contains a value that is not a positive integer
HTTP400 CodeINVALID_PARAMS Descriptionfrom or to is not in ISO 8601 format
HTTP401 CodeTOKEN_MISSING DescriptionThe API key has no configured tokens
HTTP403 CodeSCOPE_DENIED DescriptionThe API key does not have the calendar scope
HTTP403 CodeBITRIX_ACCESS_DENIED DescriptionBitrix24 denied access
HTTP422 CodeBITRIX_ERROR DescriptionBitrix24 rejected the request
HTTP429 CodeRATE_LIMITED DescriptionRequest limit exceeded
HTTP502 CodeBITRIX_UNAVAILABLE DescriptionBitrix24 is unavailable or returned a response of an unexpected shape
HTTP503 CodeBITRIX_TIMEOUT DescriptionBitrix24 did not respond in time

Full list of common API errors — Errors.

See also