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

Submit a work report

POST /v1/workday/work-reports/submit

Submits an existing work report, or creates a new one and submits it immediately.

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

Request fields (body)

Field Type Required Description
FieldreportText Typestring Requiredyes DescriptionReport text. With reportId, it replaces the report text, and an empty string clears it
FieldreportId Typeinteger Requiredno DescriptionReport ID. List: GET /v1/workday/work-reports. Without reportId, a new report is created and submitted for the credential owner

Examples

curl — personal key

Terminal
curl -X POST https://vibecode.bitrix24.com/v1/workday/work-reports/submit \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reportId": 143, "reportText": "Weekly report" }'

curl — OAuth application

Terminal
curl -X POST https://vibecode.bitrix24.com/v1/workday/work-reports/submit \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "reportId": 143, "reportText": "Weekly report" }'

JavaScript — personal key

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

JavaScript — OAuth application

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

Response fields

Field Type Description
Fieldsuccess Typeboolean Descriptiontrue when the report is submitted
Fielddata Typeobject DescriptionThe submitted 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": 143,
    "userId": 101,
    "active": true,
    "reportType": "day",
    "reportDate": "2026-10-06T18:22:40.000Z",
    "dateFrom": "2026-10-05T21:00:00.000Z",
    "dateTo": "2026-10-05T21:00:00.000Z",
    "report": "Weekly report",
    "type": "REPORT",
    "mark": "N",
    "approve": "Y"
  }
}

Error response example

400 — reportText is missing:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "reportText is required and must be a string"
  }
}

Errors

HTTP Code Description
HTTP400 CodeINVALID_PARAMS DescriptionreportText is missing, reportId is not a positive integer, or the body contains an unknown field
HTTP404 CodeENTITY_NOT_FOUND DescriptionNo report with this reportId exists
HTTP403 CodeBITRIX_ACCESS_DENIED DescriptionThe report belongs to another employee, and the credential owner lacks Bitrix24 permissions to change that employee's reports
HTTP409 CodeTIMEMAN_MODULE_NOT_ENABLED DescriptionTime Management is not available on this portal
HTTP422 CodeBITRIX_ERROR DescriptionBitrix24 refused the operation
HTTP502 CodeBITRIX_UNAVAILABLE DescriptionBitrix24 is unavailable or returned a response of an unexpected shape
HTTP401 CodeMISSING_API_KEY DescriptionThe X-Api-Key header was not passed
HTTP401 CodeTOKEN_MISSING DescriptionAn app key was sent without a session token in Authorization: Bearer
HTTP401 CodeINVALID_SESSION DescriptionThe session token is invalid or has expired
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY DescriptionThe key is READONLY and cannot submit reports
HTTP403 CodeSCOPE_DENIED DescriptionThe key lacks the timeman scope
HTTP429 CodeRATE_LIMITED DescriptionThe general request limit was exceeded

The full list of common API errors — Errors.

Known specifics

  • A new report's period is chosen as when creating a report. Without reportId, the period is chosen the same way as when a report is created without dateFrom and dateTo: Create a work report.
  • Confirmation depends on the employee's managers. If the employee has managers, the submitted report waits for their mark: approve is "N". If the employee has no managers, the report is confirmed immediately: approve is "Y".
  • A submitted report can be submitted again. The text is replaced, the report stays submitted, and mark and approve do not change.

See also