For AI agents: markdown of this page — /docs-content-en/lists.md documentation index — /llms.txt
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 is 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.
The type is passed in the query for GET and DELETE, and in the body for POST and PATCH.
List — the :iblockId path segment. Digits only mean the numeric IBLOCK_ID, a string means the symbolic code IBLOCK_CODE. Both options 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 is created with a required 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 |
| 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 |
| 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, or a list with this :iblockId does not exist |
| 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 |
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 |