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
Requires the timeman scope. Bitrix24 checks the credential owner’s permissions. READONLY keys can read reports and cannot write them.
Absent and null fields keep their current values. At least one non-null writable field is required. Clear text with an empty string and tasks/events with an empty array.
files is not accepted: the file identifier contract has not been verified.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | Work report list |
| reportText, reportExtended, plansText, type | string / null | no | Only supplied values are changed |
| dateFrom, dateTo | string / null | no | ISO-8601 with time zone |
| tasks[].id | integer | yes | Tasks |
| tasks[].time, tasks[].title | number / string | no | TIME and TITLE of the task snapshot |
| events[].id | integer | yes | Calendar events |
| events[].ownerId, events[].title | integer / string | no | Event owner and snapshot title |
Examples
curl -X PATCH "https://vibecode.bitrix24.com/v1/workday/work-reports/79" -H "X-Api-Key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"reportText": "Updated report"}'
curl -X PATCH "https://vibecode.bitrix24.com/v1/workday/work-reports/79" -H "X-Api-Key: YOUR_APP_KEY" -H "X-Vibe-Authorization: Bearer USER_ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"reportText": "Updated report"}'
const response = await fetch("https://vibecode.bitrix24.com/v1/workday/work-reports/79", {
"method": "PATCH",
"headers": {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
"body": "{\"reportText\": \"Updated report\"}"
});
const result = await response.json();
const response = await fetch("https://vibecode.bitrix24.com/v1/workday/work-reports/79", {
"method": "PATCH",
"headers": {
"X-Api-Key": "YOUR_APP_KEY",
"X-Vibe-Authorization": "Bearer USER_ACCESS_TOKEN",
"Content-Type": "application/json"
},
"body": "{\"reportText\": \"Updated report\"}"
});
const result = await response.json();
Response fields
| Field | Description |
|---|---|
| success | true |
| data | Report fields |
Response example:
{
"success": true,
"data": {
"id": 79,
"userId": 101,
"report": "Weekly report"
}
}
Errors
| HTTP | Code | Condition |
|---|---|---|
| 400 | INVALID_PARAMS | Invalid input |
| 403 | SCOPE_DENIED | Missing timeman scope |
| 403 | BITRIX_ACCESS_DENIED | Bitrix24 denies access or daily record is not owned by caller |
| 404 | ENTITY_NOT_FOUND | Report or record not found |
| 409 | TIMEMAN_MODULE_NOT_ENABLED | Time Management unavailable |
| 422 | BITRIX_ERROR | Bitrix24 business refusal or false decision result |
| 429 | RATE_LIMITED | Read or global rate limit |
| 502 | BITRIX_UNAVAILABLE | Unexpected response or Bitrix24 unavailable |
| 403 | WRITE_BLOCKED_READONLY_KEY | READONLY |
400 — missing or invalid input:
{"success":false,"error":{"code":"INVALID_PARAMS","message":"Expected a positive integer"}}