For AI agents: markdown of this page — /docs-content-en/feed/posts/list.md documentation index — /llms.txt
List posts
GET /v1/posts
Returns Bitrix24 Feed posts accessible to the current API key, in a normalized form: keys in camelCase, flags as booleans, numeric fields as numbers.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Parameterlimit (query) |
Typenumber | Requiredno | Default50 | DescriptionNumber of posts in the response. Allowed range: 1 to 200. The Bitrix24 Feed page is fixed at 50 records — for a limit above 50 the platform stitches up to four pages into one response. A value greater than 200 returns 400 INVALID_LIMIT |
Parameteroffset (query) |
Typenumber | Requiredno | Default0 | DescriptionOffset for pagination. A non-negative integer |
Pagination. One request returns up to 200 posts. To fetch the next batch, pass the meta.nextOffset value from the previous response into offset. The meta.nextOffset field is present only when there is a next page. If it is absent, there are no more posts.
The generic filter parameter is not applied by this endpoint. By default, the API preserves the previous HTTP 200 response and data, adds Warning: 299 - "filter is not supported on this endpoint and was ignored", and records unsupported-filter use in the server log.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/posts?limit=3" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/posts?limit=3" \
-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/posts?limit=3', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data, meta } = await res.json()
console.log(`Posts: ${data.length} of ${meta.total}`)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/posts?limit=3', {
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 | DescriptionAlways true on success |
Fielddata |
Typearray | DescriptionArray of posts |
Fielddata[].id |
Typenumber | DescriptionPost ID. Used in the PATCH /v1/posts/:id path and in the post URL |
Fielddata[].blogId |
Typenumber | DescriptionID of the blog the post belongs to |
Fielddata[].publishStatus |
Typestring | DescriptionPublish status (P — published) |
Fielddata[].title |
Typestring | DescriptionPost title |
Fielddata[].detailText |
Typestring | DescriptionPost text |
Fielddata[].authorId |
Typenumber | DescriptionAuthor ID. List: GET /v1/users |
Fielddata[].enableComments |
Typeboolean | DescriptionWhether comments on the post are allowed |
Fielddata[].numComments |
Typestring | DescriptionNumber of comments as a string (e.g. "2") |
Fielddata[].code |
Typestring | null | DescriptionSymbolic code of the post |
Fielddata[].micro |
Typeboolean | DescriptionMicro-post (without a title) |
Fielddata[].datePublish |
Typestring | DescriptionPublish date (ISO 8601 with timezone) |
Fielddata[].categoryId |
Typenumber[] | DescriptionPost category/tag IDs. Always an array: [] — no categories, [11] — one, [5, 7, 9] — several |
Fielddata[].hasSocnetAll |
Typeboolean | DescriptionPost is addressed to all employees |
Fielddata[].hasTags |
Typeboolean | null | DescriptionThe post has tags |
Fielddata[].hasImages |
Typeboolean | null | DescriptionThe post has images |
Fielddata[].hasProps |
Typeboolean | null | DescriptionThe post has properties |
Fieldmeta.total |
Typenumber | DescriptionTotal number of posts accessible to the key |
Fieldmeta.pageSize |
Typenumber | DescriptionBitrix24 page size — always 50 |
Fieldmeta.returned |
Typenumber | DescriptionActual number of posts in the response |
Fieldmeta.requestedLimit |
Typenumber | DescriptionValue of the passed limit. Present only if the parameter was passed |
Fieldmeta.nextOffset |
Typenumber | DescriptionOffset of the next page. Present only if there is a next page — pass it into offset of the next request |
Response example
The response contains only the fields listed above — Bitrix24 internal and custom fields (UF_*, FILES, etc.) are not returned.
{
"success": true,
"data": [
{
"id": 293,
"blogId": 1,
"publishStatus": "P",
"title": "Announcement",
"detailText": "Announcement text for employees",
"authorId": 1,
"enableComments": true,
"numComments": "0",
"code": null,
"micro": true,
"datePublish": "2026-05-29T11:47:37+00:00",
"categoryId": [],
"hasSocnetAll": false,
"hasTags": false,
"hasImages": false,
"hasProps": false
},
{
"id": 215,
"blogId": 1,
"publishStatus": "P",
"title": "Survey",
"detailText": "Survey text",
"authorId": 1,
"enableComments": true,
"numComments": "3",
"code": null,
"micro": true,
"datePublish": "2025-08-13T10:46:10+00:00",
"categoryId": [5, 7, 9],
"hasSocnetAll": true,
"hasTags": true,
"hasImages": false,
"hasProps": true
}
],
"meta": {
"total": 89,
"pageSize": 50,
"returned": 3,
"requestedLimit": 3,
"nextOffset": 50
}
}
Error response example
400 — limit outside the range of 1 to 200:
{
"success": false,
"error": {
"code": "INVALID_LIMIT",
"message": "`limit` must be between 1 and 200. The feed is fetched in fixed pages of 50 from Bitrix24; up to 200 records are stitched per request — paginate further via the returned `meta.nextOffset`."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP200 | CodeWarning: 299 |
DescriptionThe filter is ignored by default; previous data is preserved and the warning is sent in the Warning header. |
| HTTP400 (strict mode only) | CodeUNSUPPORTED_FILTER |
DescriptionThe server mode is disabled by default; until it is enabled, the endpoint preserves HTTP 200 and the previous data. |
| HTTP400 | CodeINVALID_LIMIT |
Descriptionlimit is not a positive integer or is greater than 200 |
| HTTP400 | CodeINVALID_OFFSET |
Descriptionoffset is negative or not an integer |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no access tokens configured |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key lacks the log scope |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionBitrix24 returned an error while fetching posts |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
DescriptionBitrix24 is unavailable |
The full list of common API errors — Errors.
Known specifics
numCommentscomes as a string. The number of comments is represented as a string ("2"), not a number — cast it to a number on the client side if you need to do calculations.categoryIdis always an array of numbers. The field holds the list of the post's category/tag IDs:[]when there are none,[11]for one,[5, 7, 9]for several. The type is uniform regardless of how many categories a post has (never a bare number or string).hasPropscan benull, not onlytrueorfalse. For a post created via the API that has no properties,hasPropscomes backnull. A client that checks for properties with a strict comparison againsttrueorfalsemust also account for thenullvalue. ThehasTagsandhasImagesfields returntrueorfalseon the posts checked.