For AI agents: markdown of this page — /docs-content-en/workday/records-comments.md documentation index — /llms.txt

List workday comments

Method rollout — update timeman 26.600.0. Not available on every account. The Vibecode team also controls release of these new reads; they are off by default. Before enablement or on an account without the new method, the API returns 422 METHOD_NOT_YET_AVAILABLE. Detect the rollout by the error code, not by the status: other Bitrix24 refusals arrive with the same 422 status and the BITRIX_ERROR code. Existing report and workday reads keep working.

GET /v1/workday/records/:recordId/comments

Reads published workday comments from the Feed and the Daily report page. Get the object ID from the workday history.

Scope: timeman

Parameters

Parameter Type Required Description
ParameterrecordId (path) Typeinteger Requiredyes DescriptionPositive integer ID up to 9007199254740991 from the workday history
Parameterlimit (query) Typeinteger Requiredno DescriptionPage size: 1–50, default 50
Parameteroffset (query) Typeinteger Requiredno DescriptionOffset: 0–999999999, default 0; cannot be combined with page
Parameterpage (query) Typeinteger Requiredno DescriptionPage number from 1; cannot be combined with offset. The derived offset must not exceed 999999999

Examples

curl — personal key

Terminal
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://vibecode.bitrix24.com/v1/workday/records/79/comments?limit=50&offset=0"

curl — OAuth application

Terminal
curl -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  "https://vibecode.bitrix24.com/v1/workday/records/79/comments?limit=50&offset=0"

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/records/79/comments?limit=50&offset=0', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})
const body = await res.json()
if (!res.ok) throw new Error(`${body.error?.code ?? res.status}: ${body.error?.message ?? res.statusText}`)
console.log(body.data, body.meta)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/workday/records/79/comments?limit=50&offset=0', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const body = await res.json()
if (!res.ok) throw new Error(`${body.error?.code ?? res.status}: ${body.error?.message ?? res.statusText}`)
console.log(body.data, body.meta)

Response fields

Field Type Description
Fieldsuccess Typeboolean Descriptiontrue on success
Fielddata Typearray DescriptionComments on the requested page; an empty array is valid
Fielddata[].id Typeinteger | null DescriptionComment ID; positive when not null
Fielddata[].recordId Typeinteger DescriptionID from the workday history, equal to the ID in the request path
Fielddata[].authorId Typeinteger | null DescriptionBitrix24 user ID; 0 is allowed
Fielddata[].text Typestring | null DescriptionOriginal BBCode, including [USER=…] and [DISK FILE ID=…]
Fielddata[].textPlain Typestring | null DescriptionText without BBCode or HTML
Fielddata[].createdAt Typestring | null DescriptionDATE_ATOM date with the server time zone retained
Fieldmeta.limit Typeinteger DescriptionApplied page size
Fieldmeta.offset Typeinteger DescriptionApplied offset
Fieldmeta.hasMore Typeboolean DescriptionThe page is full, so more comments may exist
Fieldmeta.nextOffset Typeinteger | null DescriptionNext offset when the page is full; otherwise null

Response example

JSON
{
  "success": true,
  "data": [{
    "id": 1,
    "recordId": 79,
    "authorId": 7,
    "text": "[USER=7]Alex[/USER] [DISK FILE ID=4]",
    "textPlain": "Alex",
    "createdAt": "2026-11-11T10:00:00+00:00"
  }],
  "meta": { "limit": 50, "offset": 0, "hasMore": false, "nextOffset": null }
}

Error response example

502 — the account returned malformed comment data:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_UNAVAILABLE",
    "message": "Bitrix24 returned an unexpected comment response."
  }
}

Errors

HTTP Code Reason
HTTP400 CodeINVALID_PARAMS ReasonInvalid ID, pagination, unknown or repeated parameters
HTTP409 CodeTIMEMAN_MODULE_NOT_ENABLED ReasonTime Management tool is disabled
HTTP422 CodeMETHOD_NOT_YET_AVAILABLE ReasonNew reads are not enabled in Vibecode or the method is unavailable on the account
HTTP422 CodeBITRIX_ERROR ReasonOther Bitrix24 refusals; details are in message
HTTP502 CodeBITRIX_UNAVAILABLE ReasonThe account is unavailable or returned a malformed response; no partial results
HTTP401 CodeMISSING_API_KEY ReasonX-Api-Key is missing
HTTP401 CodeINVALID_API_KEY ReasonThe API key is not recognized
HTTP401 CodeKEY_EXPIRED ReasonThe API key has expired
HTTP401 CodeTOKEN_MISSING ReasonNo Bitrix24 credentials
HTTP402 CodeACCOUNT_FROZEN ReasonThe account balance is frozen
HTTP403 CodeSCOPE_DENIED ReasonThe key lacks the timeman scope
HTTP403 CodeBITRIX_ACCESS_DENIED ReasonNo permission to access the object
HTTP429 CodeRATE_LIMITED ReasonThe route request rate limit is exceeded
HTTP429 CodeRATE_LIMITED ReasonThe Bitrix24 account request limit is exceeded
HTTP500 CodeINTERNAL_ERROR ReasonUnexpected internal error

For common API errors, see Errors.

Known specifics

Comments are sorted by ascending ID. Pass meta.nextOffset as offset while meta.hasMore is true. A full page means that more comments may exist: one final empty request may be needed after the last full page. No total count is invented.

Arbitrary filter and select, unknown parameters and repeated parameters are refused. Service messages are excluded.

READONLY keys are supported. Personal keys read with the webhook owner's permissions; application keys use the Bitrix24 credential user's permissions. You can read your own objects and those of employees whose working time you may view. An inaccessible or nonexistent object returns 403 for the whole request.

The configured rate limit is 30 requests per minute per key and user pair. The effective limit is reported in x-ratelimit-limit.

See also