Para agentes de IA: markdown desta página — /docs-content-en/lists.md índice da documentação — /llms.txt
Os artigos da documentação estão disponíveis atualmente em inglês.
Universal Lists
Programmatic access to the Bitrix24 Lists module: the lists themselves, their fields, sections, and elements.
Scope: lists | Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key
The module must be enabled separately on your Bitrix24 account. Universal Lists is a separate Bitrix24 module. If it is not activated on the account, calls return
409 LISTS_MODULE_NOT_ENABLED. This is not an integration error — ask the Bitrix24 account administrator to enable the Lists module and retry the request.
Data model
A list is an infoblock. Each call addresses data through three levels of keys.
Infoblock type — the iblockTypeId parameter. Possible values:
lists— regular lists. The default value.lists_socnet— workgroup lists. They requiresocnetGroupId.bitrix_processes— internal workflows.structure— company-structure type. The stock absence-calendar infoblock (absence) lives here.
The type is passed in the query for GET and DELETE, and in the body for POST and PATCH.
List — the :iblockId path segment. A digits-only segment is the numeric IBLOCK_ID; a string is the symbolic code IBLOCK_CODE. Both forms are equivalent.
Field, section, or element — the corresponding nested path segment.
Responses are returned in Bitrix24 format. Keys are uppercase with underscores: ID, NAME, IBLOCK_TYPE_ID. Numeric identifiers are returned as strings, for example "ID": "121". Custom element properties are addressed by keys of the form PROPERTY_<id>. These keys are not converted to camelCase — some of them are dynamic.
Documentation sections
- Lists — creating, reading, updating, and deleting the lists themselves, plus the infoblock type.
- List fields — the set of list fields and a reference of allowed field types.
- Sections — grouping elements into sections with nesting support.
- Elements — list rows and file links from element properties.
Quick start
# All lists of type lists
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://vibecode.bitrix24.com/v1/lists?iblockTypeId=lists"
# Elements of list 23
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://vibecode.bitrix24.com/v1/lists/23/elements"
Full example
A five-step scenario: create a list, add a field, add an element with a value for that field, read the result, delete the list.
KEY="YOUR_API_KEY"
BASE="https://vibecode.bitrix24.com/v1"
# 1. Create the list → { "success": true, "data": { "id": 135 } }
curl -s -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"iblockCode":"demo_orders","fields":{"NAME":"Demo: orders","SORT":100}}' \
"$BASE/lists"
# 2. Add a field → { "success": true, "data": { "id": "PROPERTY_1179" } }
curl -s -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"fields":{"NAME":"Status","TYPE":"S","CODE":"STATUS"}}' \
"$BASE/lists/135/fields"
# 3. Add an element with a property value → { "success": true, "data": { "id": 7043 } }
curl -s -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"elementCode":"row-1","fields":{"NAME":"Order #1","PROPERTY_1179":"new"}}' \
"$BASE/lists/135/elements"
# 4. Read elements → data[0] = { "ID": "7043", "NAME": "Order #1", "PROPERTY_1179": { "3811": "new" } }
curl -s -H "X-Api-Key: $KEY" \
"$BASE/lists/135/elements?select=ID,NAME,PROPERTY_1179"
# 5. Delete the list → HTTP 204 No Content (fields, sections, and elements are deleted along with it)
curl -s -X DELETE -H "X-Api-Key: $KEY" "$BASE/lists/135"
A field must be created with a CODE. A property value is passed as a string when creating ("PROPERTY_1179": "new"), and returned in the form { value_id: value } when reading.
Endpoint reference
| Method | Path | Bitrix24 method | Description |
|---|---|---|---|
| GET | /v1/lists |
lists.get | Lists of the given type |
| POST | /v1/lists |
lists.add | Create a list |
| GET | /v1/lists/:iblockId |
lists.get | A single list |
| PATCH | /v1/lists/:iblockId |
lists.update | Update a list |
| DELETE | /v1/lists/:iblockId |
lists.delete | Delete a list |
| GET | /v1/lists/:iblockId/type |
lists.get.iblock.type.id | Infoblock type by ID or code |
| GET | /v1/lists/:iblockId/fields |
lists.field.get | All list fields |
| GET | /v1/lists/:iblockId/fields/:fieldId |
lists.field.get | A single field |
| POST | /v1/lists/:iblockId/fields |
lists.field.add | Create a field |
| PATCH | /v1/lists/:iblockId/fields/:fieldId |
lists.field.update | Update a field |
| DELETE | /v1/lists/:iblockId/fields/:fieldId |
lists.field.delete | Delete a field |
| GET | /v1/lists/:iblockId/field-types |
lists.field.type.get | Field type reference |
| GET | /v1/lists/:iblockId/sections |
lists.section.get | List sections |
| GET | /v1/lists/:iblockId/sections/:sectionId |
lists.section.get | A single section |
| POST | /v1/lists/:iblockId/sections |
lists.section.add | Create a section |
| PATCH | /v1/lists/:iblockId/sections/:sectionId |
lists.section.update | Update a section |
| DELETE | /v1/lists/:iblockId/sections/:sectionId |
lists.section.delete | Delete a section |
| GET | /v1/lists/:iblockId/elements |
lists.element.get | List elements |
| GET | /v1/lists/:iblockId/elements/:elementId |
lists.element.get | A single element |
| POST | /v1/lists/:iblockId/elements |
lists.element.add | Create an element |
| PATCH | /v1/lists/:iblockId/elements/:elementId |
lists.element.update | Update an element |
| DELETE | /v1/lists/:iblockId/elements/:elementId |
lists.element.delete | Delete an element |
| GET | /v1/lists/:iblockId/elements/:elementId/files/:fieldId |
lists.element.get.file.url | File links from a property |
Error codes
| HTTP | Code | When |
|---|---|---|
| 409 | LISTS_MODULE_NOT_ENABLED |
The Lists module is not enabled on the portal |
| 400 | INVALID_IBLOCK_TYPE |
iblockTypeId is not one of lists, lists_socnet, bitrix_processes, structure |
| 400 | MISSING_REQUIRED_FIELDS |
A required iblockCode, sectionCode, elementCode, or fields was not provided |
| 400 | INVALID_PARAMS |
A non-numeric :sectionId or :elementId, or a fieldId with the PROPERTY_ prefix in the files route |
| 400 | INVALID_FILTER |
The filter parameter is not valid JSON. An ambiguous envelope is rejected as well: the bracket form and JSON in one request (in either order), or a bracket condition deeper than two levels — half of the conditions are irrecoverably lost during parsing, so the request is refused rather than half-applied. |
| 400 | INVALID_SORT_FIELD |
The sort parameter references an unsupported field or direction |
| 422 | BITRIX_ERROR |
Bitrix24 rejected the request. For example, a field is created without CODE or updated without TYPE |
| 403 | BITRIX_ACCESS_DENIED |
No permissions for the list. An absent list answers differently per address: 404 where Bitrix24 reports it with a machine code (the element and field collections, the field-type set, a single element, a single field, element files), 422 on sections, and — on reading the list itself — 403 for a numeric id or 404 for a symbolic one |
| 404 | LIST_NOT_FOUND / SECTION_NOT_FOUND / ELEMENT_NOT_FOUND / FIELD_NOT_FOUND |
Object not found |
| 403 | WRITE_BLOCKED_READONLY_KEY |
The key is in read-only mode |
| 403 | SCOPE_DENIED |
The key lacks the lists scope |
| 401 | TOKEN_MISSING |
X-Api-Key was not provided, or the key has no tokens |
| 400 | UNSUPPORTED_FILTER |
A filter parameter was passed, and this endpoint has none. The error text names what to use instead |
The full list of common API errors — Errors.
Limits
| Limit | Value |
|---|---|
| List and element pagination | The offset for GET /v1/lists and GET /v1/lists/:iblockId/elements is set by the start parameter or by its alias offset. When both are passed, start applies. The response is returned in pages. Get the next page by increasing the offset. There is no automatic traversal of all pages |
| Rate limit | Shared across the Vibecode API — see Limits and optimization |