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
reportText string yes Report text. With reportId, it replaces the report text, and an empty string clears it
reportId integer no Report 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
success boolean true when the report is submitted
data object The 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
400 INVALID_PARAMS reportText is missing, reportId is not a positive integer, or the body contains an unknown field
404 ENTITY_NOT_FOUND No report with this reportId exists
403 BITRIX_ACCESS_DENIED The report belongs to another employee, and the credential owner lacks Bitrix24 permissions to change that employee's reports
409 TIMEMAN_MODULE_NOT_ENABLED Time Management is not available on this portal
422 BITRIX_ERROR Bitrix24 refused the operation
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 submit 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

  • 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