For AI agents: markdown of this page — /docs-content-en/note/collections.md documentation index — /llms.txt
Knowledge bases
A knowledge base is a container of documents in Bitrix24 Knowledge Base 2.0. In API paths it is called collection, while in the Bitrix24 interface it is a knowledge base. This section collects the operations for creating, reading, renaming, archiving, and deleting knowledge bases, as well as getting their document tree.
Scope: note | Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key
Reorder a knowledge base
POST /v1/note/collections/:id/move
Changes the order for the entire Bitrix24 account. If position is omitted or null, the collection is placed last. The stored weight is recomputed from neighbours, so it can differ from the request.
Requires the note scope and a key with write access. Archived collections are read-only. Permissions are enforced by Bitrix24.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
Parameterid (path) |
Typeinteger | Requiredyes | DescriptionGET /v1/note/collections/:id |
Parameterposition (body) |
Typeinteger / null | Requiredno | DescriptionSigned safe integer. Omitted or null: last position. |
Examples
curl — personal key
curl -X POST https://vibecode.bitrix24.com/v1/note/collections/33/move \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"position": -10}'
curl — OAuth application
curl -X POST https://vibecode.bitrix24.com/v1/note/collections/33/move \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"position": -10}'
JavaScript — personal key
const response = await fetch('https://vibecode.bitrix24.com/v1/note/collections/33/move', {
method: 'POST',
headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({"position": -10}),
})
const result = await response.json()
if (!response.ok) throw new Error(result.error.message)
console.log(result.data)
JavaScript — OAuth application
const response = await fetch('https://vibecode.bitrix24.com/v1/note/collections/33/move', {
method: 'POST',
headers: { 'X-Api-Key': 'YOUR_APP_KEY', 'Content-Type': 'application/json', 'Authorization': 'Bearer USER_SESSION_TOKEN' },
body: JSON.stringify({"position": -10}),
})
const result = await response.json()
if (!response.ok) throw new Error(result.error.message)
console.log(result.data)
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue |
Fielddata |
Typeobject | DescriptionGET /v1/note/collections/:id |
The response is read back after the move. If the read fails, the change may already have been saved: read the object before retrying.
Response example
{
"success": true,
"data": {
"id": 33,
"name": "Sales team policies",
"position": 50,
"policyLevel": "private",
"accessLevel": "full",
"isArchived": false,
"createdBy": 1373,
"createdAt": "2026-10-02T19:43:23Z",
"updatedBy": 1373,
"updatedAt": "2026-10-02T19:43:24Z",
"markdownDescription": null
}
}
Error response example
400 — invalid path id:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "id must be a positive integer"
}
}
Errors
| HTTP | Code | Condition |
|---|---|---|
| HTTP400 | CodeINVALID_PARAMS |
ConditionInvalid id, destination or body. |
| HTTP401 | CodeMISSING_API_KEY |
ConditionMissing key. |
| HTTP401 | CodeTOKEN_MISSING |
ConditionNo Bitrix24 credentials. |
| HTTP403 | CodeSCOPE_DENIED |
Conditionnote |
| HTTP403 | CodeWRITE_BLOCKED_READONLY_KEY |
ConditionREADONLY |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
ConditionBitrix24 access refusal; collection archived. |
| HTTP404 | CodeENTITY_NOT_FOUND |
ConditionObject not visible or missing. |
| HTTP422 | CodeBITRIX_ERROR |
ConditionCycle, access widening or another business refusal. |
| HTTP429 | CodeOPERATION_TIME_LIMIT |
ConditionBitrix24 operation limit. |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
ConditionBitrix24 unavailable. |
| HTTP503 | CodeBITRIX_TIMEOUT |
ConditionBitrix24 timeout. |