لوكلاء AI: ملف markdown لهذه الصفحة — /docs-content-en/workday/daily-reports.md فهرس التوثيق — /llms.txt
مقالات التوثيق متاحة حاليًا باللغة الإنجليزية فقط.
Daily reports
An employee's report on their workday: read reports and save report text to your own workday record.
A report is tied to a workday record; take the record id from Workday history. Report contents — Report fields.
Scope: timeman | Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key
List daily reports
GET /v1/workday/daily-reports
Returns an employee's daily reports, paginated.
Requires the timeman scope and the credential owner's Bitrix24 right to read the time records of employee userId. READONLY keys can read reports.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
ParameteruserId (query) |
Typeinteger | Requiredyes | Default— | DescriptionID of the employee whose reports you need. List: GET /v1/users |
ParameterrecordId (query) |
Typeinteger | Requiredno | Default— | DescriptionWork time record ID — return only the report for this record. If the record does not exist, has no employee's report, or belongs to another employee, data is an empty array. List: GET /v1/workday/records |
ParameterwithAi (query) |
Typeboolean | Requiredno | Defaultfalse |
Descriptiontrue or 1 adds to each report the report written for the same record by AI or an automation rule: its type goes to type, its text to reportExtended. Saved reports are read; no new ones are generated. A record without an employee's report is not listed, even if AI or an automation rule has written a report for the record |
Parameterlimit (query) |
Typeinteger | Requiredno | Default50 |
DescriptionHow many reports to return, from 1 to 50 |
Parameteroffset (query) |
Typeinteger | Requiredno | Default0 |
DescriptionHow many reports to skip. Cannot be combined with page |
Parameterpage (query) |
Typeinteger | Requiredno | Default1 |
DescriptionPage number, with limit reports per page. Cannot be combined with offset |
Parameterorder (query) |
Typestring | Requiredno | Default{"id":"desc"} |
DescriptionSort order — a JSON object with asc or desc directions, for example {"id":"asc"}; in the URL it is URL-encoded: order=%7B%22id%22%3A%22asc%22%7D. Only id sets the order: other fields, including unknown ones, are accepted without an error and do not change the order |
Parameterselect (query) |
Typestring | Requiredno | Default— | DescriptionComma-separated report fields, for example report,timestamp. id is always returned, even if it is not listed. For the list, see Report fields |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/workday/daily-reports?userId=101" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/workday/daily-reports?userId=101" \
-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/daily-reports?userId=101', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data, meta } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/daily-reports?userId=101', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, meta } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue when the request succeeds |
Fielddata |
Typearray | DescriptionArray of daily reports. Field details — Report fields |
Fielddata[].id |
Typeinteger | DescriptionDaily report ID |
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. id, report, reportPlain, and timestamp still come from the employee's report |
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 |
Fieldmeta.limit |
Typeinteger | DescriptionPage size |
Fieldmeta.offset |
Typeinteger | DescriptionHow many reports were skipped |
Fieldmeta.hasMore |
Typeboolean | Descriptiontrue when the page holds limit reports and more may follow |
Response example
{
"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:19:18.000Z",
"reportExtended": null
},
{
"id": 377,
"recordId": 183,
"userId": 101,
"type": "REPORT",
"report": "Daily summary for autofill check",
"reportPlain": "Daily summary for autofill check",
"timestamp": "2026-10-07T06:56:12.000Z",
"reportExtended": null
}
],
"meta": {
"limit": 50,
"offset": 0,
"hasMore": false
}
}
Error response example
400 — userId was not passed:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Expected a positive integer"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeWORKDAY_REPORT_LIMIT_EXCEEDED |
Descriptionlimit is greater than 50 |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionuserId was not passed; userId, recordId, limit, or page is not a positive integer; offset is not a non-negative integer; offset and page were passed together; withAi is not true, false, 1, or 0; order is not a JSON object or a direction is neither asc nor desc; select contains an unknown field; an unknown parameter is passed, or a parameter is passed twice |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
DescriptionThe credential owner lacks the right to read the time records of employee userId. Also returned when userId is the credential owner's own ID |
| 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; the cap is divided across replicas |
The full list of common API errors — Errors.