For AI agents: markdown of this page — /docs-content-en/workday/daily-reports/get.md documentation index — /llms.txt
Read a daily report
GET /v1/workday/records/:recordId/report
Returns an employee's daily report by the ID of the work time record it belongs to.
Requires the timeman scope. Bitrix24 checks whether the credential owner can read the time records of the employee the record belongs to. READONLY keys can read reports.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
recordId (path) |
integer | yes | — | Work time record ID. List: GET /v1/workday/records |
withAi (query) |
boolean | no | false |
true or 1 adds the report written for the record by AI or an automation rule: its type goes to type, its text to reportExtended. The saved report is read; no new one is generated. Without an employee's report, the response is data: null, even if AI or an automation rule has written a report for the record |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/workday/records/185/report" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/workday/records/185/report" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/records/185/report', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/records/185/report', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | true when the request succeeds |
data |
object | null | The daily report, or null if the record has no employee's report. Field details — Report fields |
data.id |
integer | Daily report ID. List: GET /v1/workday/daily-reports |
data.recordId |
integer | Work time record ID. List: GET /v1/workday/records |
data.userId |
integer | ID of the employee the report belongs to. List: GET /v1/users |
data.type |
string | Report type: REPORT — the employee's report. With withAi=true — AI_REPORT or ROBOT_REPORT if AI or an automation rule has written a report for the record |
data.report |
string | The employee's report text with BB code markup |
data.reportPlain |
string | Report text without markup |
data.timestamp |
string | null | When the report was last saved |
data.reportExtended |
string | null | Text of the report written by AI or an automation rule. Present with withAi=true if such a report exists, otherwise null |
Response example
The record has an employee's report:
{
"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:11:53.000Z",
"reportExtended": null
}
}
The record has no employee's report:
{
"success": true,
"data": null
}
Error response example
404 — no work time record with this recordId exists:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Record not found."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMS |
recordId is not a positive integer; withAi is not true, false, 1, or 0; an unknown parameter is passed; or a parameter is passed twice |
| 404 | ENTITY_NOT_FOUND |
No work time record with this recordId exists |
| 403 | BITRIX_ACCESS_DENIED |
The credential owner lacks the right to read the time records of the employee the record belongs to. Without this right, reading one's own record is refused too |
| 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 | SCOPE_DENIED |
The key lacks the timeman scope |
| 429 | RATE_LIMITED |
The report read limit (30 requests per minute per key–user pair) or the general request limit was exceeded. The effective report read limit is in the x-ratelimit-limit header; the cap is divided across replicas |
The full list of common API errors — Errors.