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 |
|---|---|---|---|---|
ParameterrecordId (path) |
Typeinteger | Requiredyes | Default— | DescriptionWork time record ID. List: GET /v1/workday/records |
ParameterwithAi (query) |
Typeboolean | Requiredno | Defaultfalse |
Descriptiontrue or 1 adds the report written for the record by AI or an automation rule: its type is returned in type and its text in 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 |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue when the request succeeds |
Fielddata |
Typeobject | null | DescriptionThe daily report, or null if the record has no employee's report. Field details — Report fields |
Fielddata.id |
Typeinteger | DescriptionDaily report ID. List: GET /v1/workday/daily-reports |
Fielddata.recordId |
Typeinteger | DescriptionWork time record ID. List: GET /v1/workday/records |
Fielddata.userId |
Typeinteger | DescriptionID of the employee the report belongs to. List: GET /v1/users |
Fielddata.type |
Typestring | DescriptionReport 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 |
Fielddata.report |
Typestring | DescriptionThe employee's report text with BB code markup |
Fielddata.reportPlain |
Typestring | DescriptionReport text without markup |
Fielddata.timestamp |
Typestring | null | DescriptionWhen the report was last saved |
Fielddata.reportExtended |
Typestring | null | DescriptionText 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 |
|---|---|---|
| HTTP400 | CodeINVALID_PARAMS |
DescriptionrecordId is not a positive integer; withAi is not true, false, 1, or 0; an unknown parameter is passed; or a parameter is passed twice |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionNo work time record with this recordId exists |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
DescriptionThe 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 |
| 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 | CodeSCOPE_DENIED |
DescriptionThe key lacks the timeman scope |
| HTTP429 | CodeRATE_LIMITED |
DescriptionThe 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 |
For the full list of common API errors, see Errors.