สำหรับเอเจนต์ 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
userId (query) integer yes — ID of the employee whose reports you need. List: GET /v1/users
recordId (query) integer no — Work 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
withAi (query) boolean no false true 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
limit (query) integer no 50 How many reports to return, from 1 to 50
offset (query) integer no 0 How many reports to skip. Cannot be combined with page
page (query) integer no 1 Page number, with limit reports per page. Cannot be combined with offset
order (query) string no {"id":"desc"} Sort 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
select (query) string no — Comma-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

Terminal
curl "https://vibecode.bitrix24.com/v1/workday/daily-reports?userId=101" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
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

javascript
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

javascript
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
success boolean true when the request succeeds
data array Array of daily reports. Field details — Report fields
data[].id integer Daily report ID
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. id, report, reportPlain, and timestamp still come from the employee's report
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
meta.limit integer Page size
meta.offset integer How many reports were skipped
meta.hasMore boolean true when the page holds limit reports and more may follow

Response example

JSON
{
  "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:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Expected a positive integer"
  }
}

Errors

HTTP Code Description
400 WORKDAY_REPORT_LIMIT_EXCEEDED limit is greater than 50
400 INVALID_PARAMS userId 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
403 BITRIX_ACCESS_DENIED The credential owner lacks the right to read the time records of employee userId. Also returned when userId is the credential owner's own ID
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.

See also