For AI agents: markdown of this page — /docs-content-en/entities/catalog-documents/fields.md documentation index — /llms.txt
Inventory document fields
GET /v1/catalog-documents/fields
Returns the schema of all inventory document fields. Helps build the request body for creating and updating a document.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
Parameterrefresh (query) |
Typestring | Defaultfalse |
DescriptionPass true to get the schema bypassing the cache. Example: ?refresh=true |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/catalog-documents/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/catalog-documents/fields" \
-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/catalog-documents/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
const required = Object.entries(data.fields)
.filter(([, field]) => field.required)
.map(([name]) => name)
console.log('Required on create:', required)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-documents/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
const required = Object.entries(data.fields)
.filter(([, field]) => field.required)
.map(([name]) => name)
console.log('Required on create:', required)
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata.fields |
Typeobject | DescriptionMap of document fields: the key is the field name, the value is its description |
Fielddata.fields.<field>.type |
Typestring | DescriptionValue type: number, string, datetime |
Fielddata.fields.<field>.readonly |
Typeboolean | Descriptiontrue — the field is filled by the system and is not accepted on create or update |
Fielddata.fields.<field>.createOnly |
Typeboolean | DescriptionPresent with the value true on fields that are set only on create. On update such a field is rejected with 400 READONLY_FIELD |
Fielddata.fields.<field>.required |
Typeboolean | DescriptionPresent with the value true on fields required on create |
Fielddata.fields.<field>.label |
Typestring | DescriptionField caption |
Fielddata.fields.<field>.description |
Typestring | DescriptionField description |
Fielddata.batch |
Typestring[] | DescriptionOperations available in bulk mode via Batch: create, update, delete |
Fieldmeta.warnings |
Typearray | DescriptionPresent only if the full field schema could not be retrieved from Bitrix24. Contains an object with the code fields_partial and a message string: the response holds only the fields from the Vibecode schema, and some captions may be missing. Retry the request |
For most fields, label and description contain the field name itself, and the docType description lists the document types.
Document fields:
| Field | Type | RO | Description |
|---|---|---|---|
Fieldid |
Typenumber | ROyes | DescriptionDocument ID |
FielddocType |
Typestring | RO | DescriptionDocument type: A — receipt, S — stock adjustment, M — transfer, R — return, D — write-off. Required on create, set only on create |
Fieldcurrency |
Typestring | RO | DescriptionDocument currency. Required on create, set only on create. List: GET /v1/currencies |
FieldresponsibleId |
Typenumber | RO | DescriptionResponsible employee. Required on create. List: GET /v1/users |
Fieldstatus |
Typestring | ROyes | DescriptionConducting status: Y — conducted, N — not conducted. Changed by conducting and canceling conducting |
FielddateStatus |
Typedatetime | ROyes | DescriptionDate the conducting status changed. For a new document it matches the creation date |
FieldcreatedBy |
Typenumber | RO | DescriptionEmployee who created the document. Set only on create. List: GET /v1/users |
FielddateCreate |
Typedatetime | ROyes | DescriptionCreation date |
Fieldtitle |
Typestring | RO | DescriptionDocument title |
FielddocNumber |
Typestring | RO | DescriptionDocument number. null if not set |
Fieldcommentary |
Typestring | RO | DescriptionComment. null if not set |
FielddateDocument |
Typedatetime | RO | DescriptionDocument date. null if not set |
FieldsiteId |
Typestring | RO | DescriptionBitrix24 account site ID. If not passed on create, s1 is used |
Fieldtotal |
Typenumber | RO | DescriptionDocument total. Not calculated from the items: if the total is not set, it stays null even after conducting |
FieldmodifiedBy |
Typenumber | RO | DescriptionEmployee who last modified the document. List: GET /v1/users |
FieldstatusBy |
Typenumber | RO | DescriptionEmployee who changed the conducting status. null until the status changes. List: GET /v1/users |
FielddateModify |
Typedatetime | RO | DescriptionLast modification date |
Dates are returned in ISO 8601 format in UTC, for example 2026-10-12T13:20:16.000Z.
Response example
{
"success": true,
"data": {
"fields": {
"id": {
"type": "number",
"readonly": true,
"label": "id",
"description": "id"
},
"docType": {
"type": "string",
"readonly": false,
"createOnly": true,
"required": true,
"label": "docType",
"description": "Document type: A receipt, S stock adjustment, M transfer, R return, D write-off. Bitrix24 excludes U and W from the REST type list."
},
"currency": {
"type": "string",
"readonly": false,
"createOnly": true,
"required": true,
"label": "currency",
"description": "currency"
},
"responsibleId": {
"type": "number",
"readonly": false,
"required": true,
"label": "responsibleId",
"description": "responsibleId"
},
"status": {
"type": "string",
"readonly": true,
"label": "status",
"description": "status"
},
"dateStatus": {
"type": "datetime",
"readonly": true,
"label": "dateStatus",
"description": "dateStatus"
},
"createdBy": {
"type": "number",
"readonly": false,
"createOnly": true,
"label": "createdBy",
"description": "createdBy"
},
"dateCreate": {
"type": "datetime",
"readonly": true,
"label": "dateCreate",
"description": "dateCreate"
},
"title": {
"type": "string",
"readonly": false,
"label": "title",
"description": "title"
},
"docNumber": {
"type": "string",
"readonly": false,
"label": "docNumber",
"description": "docNumber"
},
"commentary": {
"type": "string",
"readonly": false,
"label": "commentary",
"description": "commentary"
},
"dateDocument": {
"type": "datetime",
"readonly": false,
"label": "dateDocument",
"description": "dateDocument"
},
"siteId": {
"type": "string",
"readonly": false,
"label": "siteId",
"description": "siteId"
},
"total": {
"type": "number",
"readonly": false,
"label": "total",
"description": "total"
},
"modifiedBy": {
"type": "number",
"readonly": false,
"label": "modifiedBy",
"description": "modifiedBy"
},
"statusBy": {
"type": "number",
"readonly": false,
"label": "statusBy",
"description": "statusBy"
},
"dateModify": {
"type": "datetime",
"readonly": false,
"label": "dateModify",
"description": "dateModify"
}
},
"batch": [
"create",
"update",
"delete"
]
}
}
Error response example
401 — API key not passed:
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key required. Pass via X-Api-Key header."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header is not passed |
| HTTP401 | CodeINVALID_API_KEY |
DescriptionThe passed API key was not found |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the catalog scope |
| HTTP429 | CodeRATE_LIMITED |
DescriptionRate limit exceeded: 300 requests per minute per portal, all API keys of the portal share one limit. The effective value is in the x-ratelimit-limit header. Retry after the delay in the Retry-After header |
Full list of common API errors — Errors.