For AI agents: markdown of this page — /docs-content-en/workday/work-reports/update.md documentation index — /llms.txt

Update a work report

PATCH /v1/workday/work-reports/:id

Updates the specified fields of an employee's work report and leaves the rest unchanged.

Requires the timeman scope. Bitrix24 checks the credential owner’s permissions. READONLY keys can read reports and cannot write them.

Parameters

Parameter Type Required Default Description
id (path) integer yes — Report ID. List: GET /v1/workday/work-reports

Request fields (body)

Field Type Required Description
reportText string | null no Report text. Returned as report and reportPlain. An empty string clears the text
reportExtended string | null no Additional report text. Returned as reportExtended. An empty string clears the text
plansText string | null no Plans. Returned as plans. An empty string clears the plans
type string | null no Report type: REPORT, AI_REPORT, ROBOT_REPORT, AI_DAY_PLAN, or ROBOT_DAY_PLAN. Any other value is stored as REPORT
dateFrom string | null no Start of the report period in ISO 8601 format with a time zone. The time is dropped; only the date is stored
dateTo string | null no End of the report period in the same format. The time is dropped; only the date is stored
tasks array | null no Tasks in the report. A new array replaces the whole list, and an empty array clears it
tasks[].id integer yes Task ID. List: GET /v1/tasks
tasks[].time number no Time spent on the task, in seconds. The fractional part is dropped
tasks[].title string no Task title in the report
events array | null no Calendar events in the report. A new array replaces the whole list, and an empty array clears it
events[].id integer yes Event ID. List: GET /v1/calendar-events
events[].ownerId integer no ID of the event owner. List: GET /v1/users
events[].title string no Event title in the report

Fields omitted from the body or set to null keep their current values. At least one field with a value is required: an empty body or a body with only null values returns 400 INVALID_PARAMS.

Examples

curl — personal key

Terminal
curl -X PATCH https://vibecode.bitrix24.com/v1/workday/work-reports/169 \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reportText": "Updated report" }'

curl — OAuth application

Terminal
curl -X PATCH https://vibecode.bitrix24.com/v1/workday/work-reports/169 \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "reportText": "Updated report" }'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/work-reports/169', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    reportText: 'Updated report',
  }),
})
const { data } = await res.json()

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/work-reports/169', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    reportText: 'Updated report',
  }),
})
const { data } = await res.json()

Response fields

Field Type Description
success boolean true when the report is updated
data object The updated report. All fields — Report fields

Response example

The main report fields are shown. For the full list, see Report fields:

JSON
{
  "success": true,
  "data": {
    "id": 169,
    "userId": 101,
    "active": false,
    "reportType": "day",
    "reportDate": "2026-10-06T20:25:34.000Z",
    "dateFrom": "2026-10-06T21:00:00.000Z",
    "dateTo": "2026-10-06T21:00:00.000Z",
    "report": "Updated report",
    "type": "REPORT",
    "mark": "N",
    "approve": "N"
  }
}

Error response example

422 — the new period overlaps another of the employee's reports:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Period overlaps with another report",
    "b24Code": "PERIOD_OVERLAP"
  }
}

Errors

HTTP Code Description
400 INVALID_PARAMS id is not a positive integer, the body has no field with a value, a field has the wrong type, a date has no time zone, or the body contains an unknown field such as userId or files
404 ENTITY_NOT_FOUND No report with this id exists
403 BITRIX_ACCESS_DENIED The report belongs to another employee, and the credential owner lacks Bitrix24 permissions to change that employee's reports
422 BITRIX_ERROR The new period overlaps another of the employee's reports; b24Code in the response is PERIOD_OVERLAP
422 BITRIX_ERROR Bitrix24 refused the operation for another reason
409 TIMEMAN_MODULE_NOT_ENABLED Time Management is not available on this portal
502 BITRIX_UNAVAILABLE Bitrix24 is unavailable or returned a response of an unexpected shape
401 MISSING_API_KEY The X-Api-Key header was not passed
401 TOKEN_MISSING An app key was sent without a session token in Authorization: Bearer
401 INVALID_SESSION The session token is invalid or has expired
403 WRITE_BLOCKED_READONLY_KEY The key is READONLY and cannot change reports
403 SCOPE_DENIED The key lacks the timeman scope
429 RATE_LIMITED The general request limit was exceeded

The full list of common API errors — Errors.

Known specifics

  • Employees can change their own reports. Manager permissions are not required for that.
  • A submitted report can be changed too. It stays submitted, and mark and approve do not change.
  • An overlapping period is not shifted. When a report is created, the start of such a period moves to the day after the overlapping report; when a report is updated, the request is refused.
  • Task and event keys in the response are uppercase. In the tasks and events arrays of the response, id comes back as ID, title as TITLE, and the task time as TIME.

See also