Para agentes de IA: markdown desta página — /docs-content-en/entities/catalog-document-elements.md índice da documentação — /llms.txt
Os artigos da documentação estão disponíveis atualmente em inglês.
Inventory document items
Product lines of inventory documents: which product moves, in what quantity, at what purchase price, and between which warehouses. One document can have several items. Items can be changed until the document is conducted.
Bitrix24 API: catalog.document.element.*
Scope: catalog
Create an inventory document item
POST /v1/catalog-document-elements
Adds an item to an inventory document.
Pass fields flat at the JSON root, without a fields wrapper.
Request fields (body)
| Field | Type | Required | Description |
|---|---|---|---|
FielddocId |
Typenumber | Requiredyes | DescriptionDocument ID. List: GET /v1/catalog-documents. Cannot be changed after creation |
FieldelementId |
Typenumber | Requiredyes | DescriptionProduct ID. List: GET /v1/catalog-products. Cannot be changed after creation |
Fieldamount |
Typenumber | Requiredno | DescriptionProduct quantity |
FieldpurchasingPrice |
Typenumber | Requiredno | DescriptionPurchase price per unit |
FieldstoreFrom |
Typenumber | Requiredno | DescriptionSource warehouse. List: GET /v1/warehouses. Which warehouse a document needs depends on its type — see inventory document items |
FieldstoreTo |
Typenumber | Requiredno | DescriptionDestination warehouse. List: GET /v1/warehouses |
Examples
curl — personal key
curl -X POST "https://vibecode.bitrix24.com/v1/catalog-document-elements" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"docId": 299,
"elementId": 6595,
"amount": 3,
"purchasingPrice": 11000,
"storeTo": 11
}'
curl — OAuth application
curl -X POST "https://vibecode.bitrix24.com/v1/catalog-document-elements" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"docId": 299,
"elementId": 6595,
"amount": 3,
"purchasingPrice": 11000,
"storeTo": 11
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-document-elements', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
docId: 299,
elementId: 6595,
amount: 3,
purchasingPrice: 11000,
storeTo: 11,
}),
})
const { success, data } = await res.json()
console.log('Position ID:', data.id)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-document-elements', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
docId: 299,
elementId: 6595,
amount: 3,
purchasingPrice: 11000,
storeTo: 11,
}),
})
const { success, data } = await res.json()
Response fields
HTTP status 201 Created.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue on successful creation |
Fielddata.id |
Typenumber | DescriptionID of the created item |
Fielddata.docId |
Typenumber | DescriptionDocument ID. Document — GET /v1/catalog-documents/:id |
Fielddata.elementId |
Typenumber | DescriptionProduct ID. Product — GET /v1/catalog-products/:id |
Fielddata.amount |
Typenumber | null | DescriptionProduct quantity. null if not passed |
Fielddata.purchasingPrice |
Typenumber | null | DescriptionPurchase price per unit. null if not passed |
Fielddata.storeFrom |
Typenumber | null | DescriptionSource warehouse. null if not passed. Warehouses — GET /v1/warehouses |
Fielddata.storeTo |
Typenumber | null | DescriptionDestination warehouse. null if not passed. Warehouses — GET /v1/warehouses |
Fieldmeta.warnings |
Typearray | DescriptionPresent only if the body contains a field that is not among the item fields. Each element has code: "UNRECOGNIZED_WRITE_FIELD", field with the field name, and message. On a route that wraps the field map itself, an object under fields is rejected with 400 NESTED_FIELDS_ENVELOPE when the schema does not declare fields; pass fields flat at the JSON root. |
Response example
{
"success": true,
"data": {
"amount": 3,
"docId": 299,
"elementId": 6595,
"id": 33,
"purchasingPrice": 11000,
"storeFrom": null,
"storeTo": 11
}
}
Error response example
404 — no document with the given docId:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Document not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionNo document with the given docId. Message — Document not found |
| HTTP400 | CodeMISSING_REQUIRED_FIELDS |
DescriptionA required field was not passed. The message names it: Body field "elementId" is required to create catalogDocumentElement. |
| HTTP400 | CodeREADONLY_FIELD |
DescriptionThe body contains id, a read-only field |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionA field value has the wrong type: a non-numeric string in a numeric field, for example "amount": "abc", or an object or array instead of a number or string. The field name is in error.message |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionThe document is conducted. Message Conducted document, b24Code — ERROR_DOCUMENT_STATUS. First cancel conducting |
| HTTP403 | CodeWRITE_BLOCKED_READONLY_KEY |
DescriptionThe key works in read-only mode |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the catalog scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header was not passed |
| HTTP401 | CodeINVALID_API_KEY |
DescriptionThe passed API key was not found |
Full list of common API errors — Errors.