#Закрыть рабочий день
POST /v1/workday/close
Завершает текущий рабочий день и фиксирует его длительность. Вызов поддерживает отчёт за день и точку завершения.
#Поля запроса (body)
Все параметры опциональны. Тело может быть пустым: {}.
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
userId |
number | нет | Идентификатор сотрудника. По умолчанию — пользователь, которому принадлежат токены ключа |
time |
string | нет | Дата и время завершения в формате ISO 8601 (например 2026-05-05T18:00:00+03:00). Дата должна совпадать с текущей. При указании этого поля становится обязательным report |
report |
string | нет | Итоговый отчёт за день. Обязательно при заданном time и для сотрудников с фиксированным графиком работы |
lat |
number | нет | Географическая широта точки завершения |
lon |
number | нет | Географическая долгота точки завершения |
#Примеры
#curl — личный ключ
curl -X POST https://vibecode.bitrix24.tech/v1/workday/close \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "report": "Закрыл 5 сделок, обработал 12 лидов" }'
#curl — OAuth-приложение
curl -X POST https://vibecode.bitrix24.tech/v1/workday/close \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "report": "Закрыл 5 сделок, обработал 12 лидов" }'
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/close', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
report: 'Закрыл 5 сделок, обработал 12 лидов',
}),
})
const { data } = await res.json()
console.log('Длительность дня:', data.duration)
console.log('Перерывы:', data.timeLeaks)
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/close', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
report: 'Закрыл 5 сделок, обработал 12 лидов',
}),
})
const { data } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успешном закрытии |
data.status |
string | Статус после закрытия — CLOSED |
data.timeStart |
string | Дата и время начала дня (ISO 8601) |
data.timeFinish |
string | Дата и время завершения дня (ISO 8601) |
data.duration |
string | Длительность дня в формате HH:MM:SS без учёта пауз |
data.timeLeaks |
string | Суммарная длительность пауз за день в формате HH:MM:SS |
data.active |
boolean | Признак активной записи рабочего дня |
data.ipOpen |
string | IP-адрес начала дня |
data.ipClose |
string | IP-адрес завершения дня |
data.latOpen |
number | Географическая широта точки начала. 0 — координаты не переданы |
data.lonOpen |
number | Географическая долгота точки начала |
data.latClose |
number | Географическая широта точки завершения |
data.lonClose |
number | Географическая долгота точки завершения |
data.tzOffset |
number | Смещение часового пояса сотрудника в секундах (зависит от настроек сотрудника на портале; пример 10800 соответствует UTC+3) |
#Пример ответа
{
"success": true,
"data": {
"status": "CLOSED",
"timeStart": "2026-05-05T09:00:00+03:00",
"timeFinish": "2026-05-05T18:00:00+03:00",
"duration": "08:00:00",
"timeLeaks": "00:30:00",
"active": true,
"ipOpen": "203.0.113.10",
"ipClose": "203.0.113.10",
"latOpen": 0,
"lonOpen": 0,
"latClose": 0,
"lonClose": 0,
"tzOffset": 10800
}
}
#Пример ответа при ошибке
422 — попытка закрыть уже закрытый день:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Невозможно выполнить действие"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
Битрикс24 вернул INVALID_PARAMS — нарушена валидация поля запроса |
| 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 |
| 422 | BITRIX_ERROR |
Битрикс24 отклонил запрос — текст в message. Возможные причины: день уже закрыт, дата time не совпадает с текущей, отсутствует report при заданном time |
| 429 | RATE_LIMITED |
Превышен лимит запросов к Битрикс24 |
| 502 | BITRIX_UNAVAILABLE |
Портал Битрикс24 недоступен |
Полный список общих ошибок API — Ошибки.
#Известные особенности
- Закрытие в паузе. Если день в статусе
PAUSED, вызов закрывает день, фиксируяtimeFinishна момент закрытия. Длительность пауз попадёт вtimeLeaks. - Сумма
durationиtimeLeaksравна разнице междуtimeFinishиtimeStart— то есть общее время с момента открытия дня раскладывается на отработанное и перерывы без потерь.
#Смотрите также
- Открыть рабочий день —
POST /v1/workday/open. - Поставить на паузу —
POST /v1/workday/pause. - Текущий статус —
GET /v1/workday/status. - Рабочий день — обзор раздела.