Для AI-агентов: markdown этой страницы — /docs-content/workday/open.md индекс документации — /llms.txt

Открыть рабочий день

POST /v1/workday/open

Открывает новый рабочий день текущего пользователя. Для дня в статусе OPENED возвращается текущее состояние без изменений; для дня в статусе PAUSED день переводится обратно в OPENED с продолжением учёта. Если Битрикс24 оставляет день в статусе EXPIRED, новый день не открыт: Вайбкод возвращает ошибку 409 WORKDAY_EXPIRED с инструкцией по закрытию истёкшего дня.

Поля запроса (body)

Все параметры опциональны. Тело может быть пустым: {}.

Поле Тип Обяз. Описание
userId number нет Идентификатор сотрудника. По умолчанию — пользователь, которому принадлежат токены ключа. Чужие userId доступны только администраторам портала и непосредственным руководителям сотрудника — иначе Битрикс24 возвращает ошибку доступа
time string нет Дата и время начала в формате ISO 8601 (например 2026-05-05T09:00:00+03:00). Дата должна совпадать с текущей. Применяется только когда день в статусе CLOSED. При указании этого поля становится обязательным report
report string нет Причина изменения. Обязательно при заданном time и для сотрудников с фиксированным графиком работы
lat number нет Географическая широта точки начала рабочего дня
lon number нет Географическая долгота точки начала рабочего дня

Примеры

curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/workday/open \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/workday/open \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/open', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const payload = await res.json()
if (!payload.success) {
  console.error('День не открыт:', payload.error)
} else {
  const { data } = payload
  console.log('Статус:', data.status)
  console.log('Открыт в:', data.timeStart)
}

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/open', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const payload = await res.json()
if (!payload.success) {
  console.error('День не открыт:', payload.error)
} else {
  const { data } = payload
  console.log('Статус:', data.status)
}

Поля ответа

Поле Тип Описание
success boolean true, когда открытое состояние успешно подтверждено
data.status string Для успешного ответа — OPENED. Неизменившийся EXPIRED возвращается как ошибка 409
data.timeStart string Дата и время начала дня (ISO 8601, часовой пояс сотрудника)
data.timeFinish string | null Дата и время завершения дня. null для незакрытого дня
data.duration string Длительность дня в формате HH:MM:SS. Для только что открытого — 00:00:00
data.timeLeaks string Суммарная длительность пауз за день в формате HH:MM:SS
data.active boolean Признак активной записи рабочего дня
data.ipOpen string IP-адрес начала дня. Пустая строка при открытии без IP-фиксации
data.ipClose string IP-адрес завершения дня. Пустая строка для незакрытого дня
data.latOpen number Географическая широта точки начала. 0 — координаты не переданы
data.lonOpen number Географическая долгота точки начала. 0 — координаты не переданы
data.latClose number Географическая широта точки завершения
data.lonClose number Географическая долгота точки завершения
data.tzOffset number Смещение часового пояса сотрудника в секундах (зависит от настроек сотрудника на портале; пример 10800 соответствует UTC+3)

Пример ответа

JSON
{
  "success": true,
  "data": {
    "status": "OPENED",
    "timeStart": "2026-05-05T09:00:00+03:00",
    "timeFinish": null,
    "duration": "00:00:00",
    "timeLeaks": "00:00:00",
    "active": true,
    "ipOpen": "",
    "ipClose": "",
    "latOpen": 0,
    "lonOpen": 0,
    "latClose": 0,
    "lonClose": 0,
    "tzOffset": 10800
  }
}

Пример ответа при ошибке

403 — у ключа нет скоупа timeman:

JSON
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'timeman' scope"
  }
}

409 — истёкший рабочий день не закрыт, поэтому новый день не открыт:

JSON
{
  "success": false,
  "error": {
    "code": "WORKDAY_EXPIRED",
    "message": "The workday remains expired and a new workday was not opened.",
    "hint": "Read workday status for the same user, then close the expired workday with a time on its timeStart date and a report before retrying open."
  }
}

Ошибки

HTTP Код Описание
400 INVALID_PARAMS Поле userId не является положительным целым числом, либо Битрикс24 отклонил валидацию поля запроса
401 MISSING_API_KEY Не передан заголовок X-Api-Key
401 INVALID_API_KEY Неверный API-ключ
401 KEY_EXPIRED Срок действия API-ключа истёк
401 TOKEN_MISSING Ключу не настроены OAuth-токены для портала
402 ACCOUNT_FROZEN Баланс портала заморожен
403 SCOPE_DENIED У ключа нет скоупа timeman
409 WORKDAY_EXPIRED Истёкший день остался в EXPIRED, новый день не открыт. Получите timeStart через текущий статус, закройте истёкший день с time на ту же дату и обязательным report, затем повторите открытие
422 BITRIX_ERROR Битрикс24 отклонил запрос — текст в message. Возможные причины: дата time не совпадает с текущей, отсутствует report при заданном time, день уже в нужном состоянии
429 RATE_LIMITED Превышен лимит запросов к Битрикс24
502 BITRIX_UNAVAILABLE Портал Битрикс24 недоступен

Полный список общих ошибок API — Ошибки.

Смотрите также