Для AI-агентов: markdown этой страницы — /docs-content/workday/daily-reports/save.md индекс документации — /llms.txt
Сохранить дневной отчёт
PUT /v1/workday/records/:recordId/report
Создаёт дневной отчёт сотрудника в записи рабочего времени или заменяет текст отчёта, который в записи уже есть.
Требуется скоуп timeman. Сохранить отчёт можно только в свою запись — запись владельца учётных данных. Ключ READONLY может читать отчёты, но не сохранять их.
Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
recordId (path) |
integer | да | — | ID записи рабочего времени владельца учётных данных. Запись текущего или последнего рабочего дня — data.id в ответе GET /v1/workday/status. Список: GET /v1/workday/records |
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
reportText |
string | да | Текст отчёта, можно с разметкой BB-кода. Заменяет прежний текст целиком. Пустая строка очищает текст, отчёт остаётся |
Примеры
curl — личный ключ
curl -X PUT "https://vibecode.bitrix24.tech/v1/workday/records/185/report" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reportText": "[b]Done:[/b] daily summary"}'
curl — OAuth-приложение
curl -X PUT "https://vibecode.bitrix24.tech/v1/workday/records/185/report" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reportText": "[b]Done:[/b] daily summary"}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/records/185/report', {
method: 'PUT',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reportText: '[b]Done:[/b] daily summary',
}),
})
const { data } = await res.json()
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/workday/records/185/report', {
method: 'PUT',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reportText: '[b]Done:[/b] daily summary',
}),
})
const { data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успешном запросе |
data |
object | Сохранённый дневной отчёт. Подробнее о полях — Поля отчёта |
data.id |
integer | ID дневного отчёта. При повторном сохранении не меняется. Список: GET /v1/workday/daily-reports |
data.recordId |
integer | ID записи рабочего времени. Список: GET /v1/workday/records |
data.userId |
integer | ID сотрудника, чей это отчёт. Список: GET /v1/users |
data.type |
string | Всегда REPORT — отчёт сотрудника |
data.report |
string | Текст отчёта в разметке BB-кода |
data.reportPlain |
string | Текст отчёта без разметки |
data.timestamp |
string | null | Время сохранения отчёта |
data.reportExtended |
null | Отчёт AI или робота в этот ответ не добавляется. Получить его — GET /v1/workday/records/:recordId/report с withAi=true |
Пример ответа
{
"success": true,
"data": {
"id": 379,
"recordId": 185,
"userId": 101,
"type": "REPORT",
"report": "[b]Done:[/b] daily summary",
"reportPlain": "Done: daily summary",
"timestamp": "2026-10-07T08:19:18.000Z",
"reportExtended": null
}
}
Пример ответа при ошибке
403 — запись рабочего времени принадлежит другому сотруднику:
{
"success": false,
"error": {
"code": "BITRIX_ACCESS_DENIED",
"message": "A daily report can only be saved to the current Bitrix24 user’s own workday record"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
В recordId не положительное целое число, тело запроса не JSON-объект, reportText не передан или не строка, в теле есть неизвестное поле или передан параметр строки запроса, например ?withAi=true, — метод их не принимает |
| 404 | ENTITY_NOT_FOUND |
Записи рабочего времени с таким recordId нет |
| 403 | BITRIX_ACCESS_DENIED |
Запись принадлежит другому сотруднику, в том числе подчинённому. Сообщение: A daily report can only be saved to the current Bitrix24 user’s own workday record |
| 403 | BITRIX_ACCESS_DENIED |
У владельца учётных данных нет права читать учёт рабочего времени сотрудника, чья это запись. Без этого права отказ приходит и на свою запись. Сообщение: Access denied. |
| 409 | TIMEMAN_MODULE_NOT_ENABLED |
Учёт рабочего времени недоступен на портале |
| 422 | BITRIX_ERROR |
Битрикс24 отказал в операции |
| 502 | BITRIX_UNAVAILABLE |
Битрикс24 недоступен или вернул ответ неожиданной формы |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | TOKEN_MISSING |
Ключ приложения передан без токена сессии в Authorization: Bearer |
| 401 | INVALID_SESSION |
Токен сессии неверный или истёк |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ READONLY, сохранять отчёты нельзя |
| 403 | SCOPE_DENIED |
У ключа нет скоупа timeman |
| 429 | RATE_LIMITED |
Превышен общий лимит запросов |
Полный список общих ошибок API — Ошибки.