[{"data":1,"prerenderedAt":13},["ShallowReactive",2],{"docs-lists\u002Ffields":3,"docs-tabs-lists\u002Ffields":6},{"content":4,"lastmod":5},"# List fields\n\nManage a list's field set: get field descriptions, create new fields, update and delete them. A separate operation returns the allowed field types.\n\nBitrix24 API: `lists.field.*`\nScope: `lists`\n\n## Operations\n\n- [All list fields](.\u002Ffields\u002Flist.md) — `GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffields`\n- [Get field](.\u002Ffields\u002Fget.md) — `GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n- [Create a field](.\u002Ffields\u002Fcreate.md) — `POST \u002Fv1\u002Flists\u002F:iblockId\u002Ffields`\n- [Update a field](.\u002Ffields\u002Fupdate.md) — `PATCH \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n- [Delete a field](.\u002Ffields\u002Fdelete.md) — `DELETE \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n- [Field types](.\u002Ffields\u002Ffield-types.md) — `GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffield-types`\n\n## See also\n\n- [Universal Lists](\u002Fdocs\u002Flists)\n- [Lists](\u002Fdocs\u002Flists\u002Flists)\n- [Elements](\u002Fdocs\u002Flists\u002Felements)\n","2026-10-09",{"fields\u002Flist.md":7,"fields\u002Fget.md":8,"fields\u002Fcreate.md":9,"fields\u002Fupdate.md":10,"fields\u002Fdelete.md":11,"fields\u002Ffield-types.md":12},"## List fields\n\n`GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffields`\n\nReturns descriptions of system and user fields of a list to prepare forms and requests for its elements.\n\n## Parameters\n\n| Parameter | Type | Required | Default | Description |\n|----------|-----|:-----:|:---------:|---------|\n| `iblockId` (path) | string | yes | — | List identifier or symbolic code. Values come from the `ID` or `CODE` fields of [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist) |\n| `iblockTypeId` (query) | string | no | `lists` | Infoblock type. Values:\u003Cbr>`lists` — regular lists\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company structure type containing the built-in absence calendar infoblock `absence` |\n| `socnetGroupId` (query) | number | no | — | Workgroup identifier for lists of type `lists_socnet`. A positive integer from the `id` field of [List workgroups](\u002Fdocs\u002Fentities\u002Fworkgroups\u002Flist) |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F149\u002Ffields \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F149\u002Ffields \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F149\u002Ffields', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nconst { data } = await res.json()\nconsole.log('Field IDs:', Object.keys(data))\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F149\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Response fields\n\nThe response contains a field dictionary without pagination. In the path `data.\u003CFIELD_ID>`, `\u003CFIELD_ID>` is replaced by a field identifier, for example `NAME` or `PROPERTY_1197`. The response has no `meta` field.\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | object | Dictionary: the key is the field identifier `FIELD_ID`, the value is its description object |\n| `data.\u003CFIELD_ID>.FIELD_ID` | string | Field identifier for [Get field](\u002Fdocs\u002Flists\u002Ffields\u002Fget). For user fields — `PROPERTY_\u003Cnumber>`, for system fields — a symbolic code, for example `NAME` |\n| `data.\u003CFIELD_ID>.NAME` | string | Display name of the field |\n| `data.\u003CFIELD_ID>.TYPE` | string | Field type code. Code reference — [Field types](.\u002Ffield-types.md) |\n| `data.\u003CFIELD_ID>.IS_REQUIRED` | string | Whether the field is required: `Y` or `N` |\n| `data.\u003CFIELD_ID>.MULTIPLE` | string | Allows multiple values: `Y` or `N` |\n| `data.\u003CFIELD_ID>.SORT` | number | Sort order in the form |\n| `data.\u003CFIELD_ID>.DEFAULT_VALUE` | string, object or null | Default value. The format depends on `TYPE`: for example, `N` uses a string containing a number, while `S:HTML` uses an object with the keys `TYPE` and `TEXT` |\n| `data.\u003CFIELD_ID>.CODE` | string or null | Symbolic code of the user field. `null` if not set. Absent for system fields |\n| `data.\u003CFIELD_ID>.ID` | string | Numeric identifier of the user field as a string — the numeric part of `FIELD_ID`. Absent for system fields |\n| `data.\u003CFIELD_ID>.PROPERTY_TYPE` | string or boolean | Base type of the user field: `S`, `N`, `L`, `F`, `G` or `E`. For system fields — `false` |\n| `data.\u003CFIELD_ID>.PROPERTY_USER_TYPE` | object or boolean | Description of the extended property type. Contains its base type `PROPERTY_TYPE`, code `USER_TYPE`, name `DESCRIPTION`, and handlers, which vary by type. `false` if there is no extended type |\n| `data.\u003CFIELD_ID>.LINK_IBLOCK_ID` | string or null | Linked list identifier from the `ID` field of [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist). `null` if there is no link. Absent for system fields |\n| `data.\u003CFIELD_ID>.ROW_COUNT` | string | Input field height in rows. Absent for system fields |\n| `data.\u003CFIELD_ID>.COL_COUNT` | string | Input field width in characters. Absent for system fields |\n| `data.\u003CFIELD_ID>.USER_TYPE_SETTINGS` | object or null | Extended property type settings. The fields depend on `TYPE`, for example `height` for `S:HTML`. `null` if there are no settings. Absent for system fields |\n| `data.\u003CFIELD_ID>.SETTINGS` | object or boolean | Field display settings in forms. `false` if no settings are configured. A system field can also return an object |\n| `data.\u003CFIELD_ID>.SETTINGS.SHOW_ADD_FORM` | string | Show the field when adding an element: `Y` or `N` |\n| `data.\u003CFIELD_ID>.SETTINGS.SHOW_EDIT_FORM` | string | Show the field when editing an element: `Y` or `N` |\n| `data.\u003CFIELD_ID>.SETTINGS.ADD_READ_ONLY_FIELD` | string | The field is read-only when adding an element: `Y` or `N` |\n| `data.\u003CFIELD_ID>.SETTINGS.EDIT_READ_ONLY_FIELD` | string | The field is read-only when editing an element: `Y` or `N` |\n| `data.\u003CFIELD_ID>.SETTINGS.SHOW_FIELD_PREVIEW` | string | Show the field when previewing an element: `Y` or `N` |\n| `data.\u003CFIELD_ID>.IBLOCK_ID` | number | Identifier of the list the field belongs to. Source — [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist) |\n| `data.\u003CFIELD_ID>.DISPLAY_VALUES_FORM` | object or array | Choices for types `L`, `G`, `E` and `E:...`: the key is the identifier of an option, section or element, the value is its name. Returns an empty array `[]` if there are no choices |\n\nTo iterate over field descriptions, use `Object.values(data)`. To get their identifiers, use `Object.keys(data)`.\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"NAME\": {\n      \"FIELD_ID\": \"NAME\",\n      \"SORT\": 10,\n      \"NAME\": \"Name\",\n      \"IS_REQUIRED\": \"Y\",\n      \"MULTIPLE\": \"N\",\n      \"DEFAULT_VALUE\": \"\",\n      \"TYPE\": \"NAME\",\n      \"PROPERTY_TYPE\": false,\n      \"PROPERTY_USER_TYPE\": false,\n      \"SETTINGS\": false,\n      \"IBLOCK_ID\": 149\n    },\n    \"PROPERTY_1197\": {\n      \"FIELD_ID\": \"PROPERTY_1197\",\n      \"SORT\": 20,\n      \"NAME\": \"Priority\",\n      \"IS_REQUIRED\": \"N\",\n      \"MULTIPLE\": \"N\",\n      \"DEFAULT_VALUE\": \"0\",\n      \"TYPE\": \"N\",\n      \"PROPERTY_TYPE\": \"N\",\n      \"PROPERTY_USER_TYPE\": false,\n      \"CODE\": \"PRIORITY\",\n      \"ID\": \"1197\",\n      \"LINK_IBLOCK_ID\": null,\n      \"ROW_COUNT\": \"1\",\n      \"COL_COUNT\": \"30\",\n      \"USER_TYPE_SETTINGS\": null,\n      \"SETTINGS\": {\n        \"SHOW_ADD_FORM\": \"Y\",\n        \"SHOW_EDIT_FORM\": \"Y\",\n        \"ADD_READ_ONLY_FIELD\": \"N\",\n        \"EDIT_READ_ONLY_FIELD\": \"N\",\n        \"SHOW_FIELD_PREVIEW\": \"N\"\n      },\n      \"IBLOCK_ID\": 149\n    }\n  }\n}\n```\n\n## Error response example\n\n404 — no list with the specified identifier exists:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"LIST_NOT_FOUND\",\n    \"message\": \"List not found\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of the allowed types |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to view the list |\n| 404 | `LIST_NOT_FOUND` | No list with the specified `iblockId` exists |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The lists module is not enabled on the portal |\n| 403 | `SCOPE_DENIED` | The key is missing the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## See also\n\n- [Get field](\u002Fdocs\u002Flists\u002Ffields\u002Fget)\n- [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types)\n- [Create a field](\u002Fdocs\u002Flists\u002Ffields\u002Fcreate)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n","\n## Get field\n\n`GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n\nReturns the description of a single list field by its identifier. Useful when you need the parameters of a specific field rather than the whole set.\n\n## Parameters\n\n| Parameter | Type | Required | Default | Description |\n|----------|-----|:-----:|:---------:|---------|\n| `iblockId` (path) | string | yes | — | List identifier or symbolic code. Values come from the `ID` or `CODE` fields of [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist) |\n| `fieldId` (path) | string | yes | — | Field identifier from `FIELD_ID` in [List fields](.\u002Flist.md). For user fields — `PROPERTY_\u003Cnumber>`, for system fields — a symbolic code, for example `NAME` |\n| `iblockTypeId` (query) | string | no | `lists` | Infoblock type. Values:\u003Cbr>`lists` — regular lists\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company structure type containing the built-in absence calendar infoblock `absence` |\n| `socnetGroupId` (query) | number | no | — | Workgroup identifier for lists of type `lists_socnet`. A positive integer from the `id` field of [List workgroups](\u002Fdocs\u002Fentities\u002Fworkgroups\u002Flist) |\n\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F153\u002Ffields\u002FPROPERTY_1207 \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F153\u002Ffields\u002FPROPERTY_1207 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F153\u002Ffields\u002FPROPERTY_1207', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nconst { data } = await res.json()\nconst field = Object.values(data)[0]\nconsole.log('Field:', field.NAME)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F153\u002Ffields\u002FPROPERTY_1207', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Response fields\n\nThe `data` field contains the description of a single field, keyed by its type. In the path `data.\u003CTYPE>`, `\u003CTYPE>` is replaced by the type code, for example `N` or `S:HTML`. The [List fields](.\u002Flist.md) method uses `FIELD_ID` as the key. The response has no `meta` field.\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | object | Object with a single key — the field type code. The value is the field description object |\n| `data.\u003CTYPE>.FIELD_ID` | string | Field identifier from [List fields](.\u002Flist.md). For user fields — `PROPERTY_\u003Cnumber>`, for system fields — a symbolic code, for example `NAME` |\n| `data.\u003CTYPE>.NAME` | string | Display name of the field |\n| `data.\u003CTYPE>.TYPE` | string | Field type code. Code reference — [Field types](.\u002Ffield-types.md) |\n| `data.\u003CTYPE>.IS_REQUIRED` | string | Whether the field is required: `Y` or `N` |\n| `data.\u003CTYPE>.MULTIPLE` | string | Allows multiple values: `Y` or `N` |\n| `data.\u003CTYPE>.SORT` | number | Sort order in the form |\n| `data.\u003CTYPE>.DEFAULT_VALUE` | string, object or null | Default value. The format depends on `TYPE`: for example, `N` uses a string containing a number, while `S:HTML` uses an object with the keys `TYPE` and `TEXT` |\n| `data.\u003CTYPE>.CODE` | string or null | Symbolic code of the user field. `null` if not set. Absent for system fields |\n| `data.\u003CTYPE>.ID` | string | Numeric identifier of the user field as a string — the numeric part of `FIELD_ID`. Absent for system fields |\n| `data.\u003CTYPE>.PROPERTY_TYPE` | string or boolean | Base type of the user field: `S`, `N`, `L`, `F`, `G` or `E`. For system fields — `false` |\n| `data.\u003CTYPE>.PROPERTY_USER_TYPE` | object or boolean | Description of the extended property type. Contains its base type `PROPERTY_TYPE`, code `USER_TYPE`, name `DESCRIPTION`, and handlers, which vary by type. `false` if there is no extended type |\n| `data.\u003CTYPE>.LINK_IBLOCK_ID` | string or null | Linked list identifier from the `ID` field of [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist). `null` if there is no link. Absent for system fields |\n| `data.\u003CTYPE>.ROW_COUNT` | string | Input field height in rows. Absent for system fields |\n| `data.\u003CTYPE>.COL_COUNT` | string | Input field width in characters. Absent for system fields |\n| `data.\u003CTYPE>.USER_TYPE_SETTINGS` | object or null | Extended property type settings. The fields depend on `TYPE`, for example `height` for `S:HTML`. `null` if there are no settings. Absent for system fields |\n| `data.\u003CTYPE>.SETTINGS` | object or boolean | Field display settings in forms. `false` if no settings are configured. A system field can also return an object |\n| `data.\u003CTYPE>.SETTINGS.SHOW_ADD_FORM` | string | Show the field when adding an element: `Y` or `N` |\n| `data.\u003CTYPE>.SETTINGS.SHOW_EDIT_FORM` | string | Show the field when editing an element: `Y` or `N` |\n| `data.\u003CTYPE>.SETTINGS.ADD_READ_ONLY_FIELD` | string | The field is read-only when adding an element: `Y` or `N` |\n| `data.\u003CTYPE>.SETTINGS.EDIT_READ_ONLY_FIELD` | string | The field is read-only when editing an element: `Y` or `N` |\n| `data.\u003CTYPE>.SETTINGS.SHOW_FIELD_PREVIEW` | string | Show the field when previewing an element: `Y` or `N` |\n| `data.\u003CTYPE>.DISPLAY_VALUES_FORM` | object or array | Choices for types `L`, `G`, `E` and `E:...`: the key is the identifier of an option, section or element; the value is its name. Returns an empty array `[]` if there are no choices |\n\nTo get the field description, use `Object.values(data)[0]`.\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"N\": {\n      \"FIELD_ID\": \"PROPERTY_1207\",\n      \"SORT\": 20,\n      \"NAME\": \"Priority\",\n      \"IS_REQUIRED\": \"N\",\n      \"MULTIPLE\": \"N\",\n      \"DEFAULT_VALUE\": \"0\",\n      \"TYPE\": \"N\",\n      \"PROPERTY_TYPE\": \"N\",\n      \"PROPERTY_USER_TYPE\": false,\n      \"CODE\": \"PRIORITY\",\n      \"ID\": \"1207\",\n      \"LINK_IBLOCK_ID\": null,\n      \"ROW_COUNT\": \"1\",\n      \"COL_COUNT\": \"30\",\n      \"USER_TYPE_SETTINGS\": null,\n      \"SETTINGS\": {\n        \"SHOW_ADD_FORM\": \"Y\",\n        \"SHOW_EDIT_FORM\": \"Y\",\n        \"ADD_READ_ONLY_FIELD\": \"N\",\n        \"EDIT_READ_ONLY_FIELD\": \"N\",\n        \"SHOW_FIELD_PREVIEW\": \"N\"\n      }\n    }\n  }\n}\n```\n\n## Error response example\n\n404 — field not found:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FIELD_NOT_FOUND\",\n    \"message\": \"Field not found\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of the allowed types |\n| 404 | `FIELD_NOT_FOUND` | No field with the specified `fieldId` exists in the list |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to view the list |\n| 404 | `LIST_NOT_FOUND` | No list with the specified `iblockId` exists |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The lists module is not enabled on the portal |\n| 403 | `SCOPE_DENIED` | The key is missing the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## See also\n\n- [List fields](\u002Fdocs\u002Flists\u002Ffields\u002Flist)\n- [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types)\n- [Update a field](\u002Fdocs\u002Flists\u002Ffields\u002Fupdate)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n","\n## Create a field\n\n`POST \u002Fv1\u002Flists\u002F:iblockId\u002Ffields`\n\nCreates a new field in a list. The field definition is passed in the `fields` object in Bitrix24 format — property names in uppercase.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|---------|\n| `iblockId` (path) | string | yes | List identifier — numeric `IBLOCK_ID` or symbolic `IBLOCK_CODE`. List of lists: `GET \u002Fv1\u002Flists` |\n\n## Request fields (body)\n\n| Field | Type | Required | Description |\n|------|-----|:-----:|---------|\n| `iblockTypeId` | string | no | Info block type. Values:\u003Cbr>`lists` — regular lists, default\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company-structure type (absence-calendar iblock `absence`) |\n| `fields` | object | yes | Properties of the new field in Bitrix24 format (uppercase) |\n| `fields.NAME` | string | yes | Field name |\n| `fields.TYPE` | string | yes | Field type. Allowed values — [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types) |\n| `fields.CODE` | string | yes | Field symbolic code. Without it, the request fails with a `422 BITRIX_ERROR` response |\n| `fields.IS_REQUIRED` | string | no | Whether the field is required: `Y` or `N` |\n| `fields.MULTIPLE` | string | no | Multiple value: `Y` or `N` |\n| `fields.SORT` | number | no | Position of the new field in the card among the other list fields. After creation, the sort values of all fields are recalculated in increments of 10, so the stored value may differ from the one you pass |\n| `fields.DEFAULT_VALUE` | string | no | Default value |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"fields\": {\n      \"NAME\": \"Status\",\n      \"TYPE\": \"S\",\n      \"CODE\": \"STATUS\"\n    }\n  }'\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"fields\": {\n      \"NAME\": \"Status\",\n      \"TYPE\": \"S\",\n      \"CODE\": \"STATUS\"\n    }\n  }'\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    fields: {\n      NAME: 'Status',\n      TYPE: 'S',\n      CODE: 'STATUS',\n    },\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Field ID:', data.id)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    fields: {\n      NAME: 'Status',\n      TYPE: 'S',\n      CODE: 'STATUS',\n    },\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data.id` | string | Identifier of the created field in the format `PROPERTY_\u003Cnumber>` |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": \"PROPERTY_1177\"\n  }\n}\n```\n\n## Error response example\n\n422 — `CODE` not passed:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Please fill the code fields\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of `lists`, `bitrix_processes`, `lists_socnet`, `structure` |\n| 400 | `MISSING_REQUIRED_FIELDS` | The `fields` object is missing or lacks `NAME` \u002F `TYPE` |\n| 422 | `BITRIX_ERROR` | Bitrix24 rejected the creation. For example, `CODE` is not filled — message \"Please fill the code fields\" |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to edit the list |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode |\n| 403 | `SCOPE_DENIED` | The key lacks the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The \"Lists\" module is not enabled on the portal |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n**The field code is required on creation.** A field is created only when `CODE` is passed in `fields`. Without it, the request fails with a `422 BITRIX_ERROR` response and the message \"Please fill the code fields\", even though `NAME` and `TYPE` are filled.\n\n**Creating a field changes the `SORT` of the other fields.** The value you pass only sets the position of the new field. After creation, all list fields, including the system `NAME` field, get the values 10, 20, 30 and so on in sort order. For example, if the fields have the values 10, 20, 30 and 40, a new field with `SORT: 25` is stored with the value 30, and the fields with the values 30 and 40 get 40 and 50. [List fields](\u002Fdocs\u002Flists\u002Ffields\u002Flist) returns the current values.\n\n## See also\n\n- [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types)\n- [Update a field](\u002Fdocs\u002Flists\u002Ffields\u002Fupdate)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n","\n## Update a field\n\n`PATCH \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n\nChanges the properties of an existing list field. Pass new values in the `fields` object using the Bitrix24 format.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|---------|\n| `iblockId` (path) | string | yes | List ID or symbolic code. Use `ID` or `CODE` from the [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist) response |\n| `fieldId` (path) | string | yes | The `FIELD_ID` value from the [List fields](\u002Fdocs\u002Flists\u002Ffields\u002Flist) response. Custom fields use `PROPERTY_\u003Cnumber>`. System fields use a symbolic code, such as `NAME` |\n\n## Request fields (body)\n\nThe main settings are the name (`fields.NAME`), whether the field is required (`fields.IS_REQUIRED`), and its position (`fields.SORT`). Pass the current `fields.TYPE` with every update.\n\n| Field | Type | Required | Description |\n|------|-----|:-----:|---------|\n| `iblockTypeId` | string | no | Info block type. Values:\u003Cbr>`lists` — regular lists, the default\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company structure type (contains the built-in absence calendar info block `absence`) |\n| `socnetGroupId` | number | no | Workgroup ID for lists of type `lists_socnet`. A positive integer from the `id` field returned by [List workgroups](\u002Fdocs\u002Fentities\u002Fworkgroups\u002Flist) |\n| `fields` | object | yes | Field properties in Bitrix24 format. Property names are uppercase. Pass `NAME`, the current `TYPE`, and the properties to change |\n| `fields.TYPE` | string | yes | Current type from the `TYPE` field returned by [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget). Required with every update, but cannot be changed. For code descriptions, see [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types) |\n| `fields.NAME` | string | yes | Field name. Pass the current name to leave it unchanged |\n| `fields.IS_REQUIRED` | string | no | Whether the field is required: `Y` or `N` |\n| `fields.MULTIPLE` | string | no | Whether the field allows multiple values: `Y` or `N` |\n| `fields.SORT` | number | no | Field position in the form. To preserve the order, pass the current `SORT` value from [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget). Without `SORT`, the field may move to the beginning. Sort values are recalculated in increments of 10 after the update |\n| `fields.DEFAULT_VALUE` | string or object | no | Default value. The format depends on `TYPE`: a string for `S`, or an object with `TYPE` and `TEXT` keys for `S:HTML` |\n| `fields.CODE` | string | no | Symbolic code of a custom field. Use `FIELD_ID` in the request path, not this code |\n| `fields.ROW_COUNT` | number | no | Input height in rows |\n| `fields.COL_COUNT` | number | no | Input width in characters |\n| `fields.LINK_IBLOCK_ID` | number | no | Linked list ID for reference types `G`, `E`, and `E:...`. Use the `ID` field returned by [List lists](\u002Fdocs\u002Flists\u002Flists\u002Flist) |\n| `fields.USER_TYPE_SETTINGS` | object | no | Settings for an extended property type. The available settings depend on `TYPE`. For current settings, see `USER_TYPE_SETTINGS` in [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget) |\n| `fields.LIST` | object | no | Options for a field of type `L`. Each key is an option ID from `DISPLAY_VALUES_FORM` in [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget). Each value is an object with the properties listed below |\n| `fields.LIST.\u003CID>.VALUE` | string | yes | Option text |\n| `fields.LIST.\u003CID>.SORT` | number | no | Option sort order |\n| `fields.LIST.\u003CID>.DEF` | string | no | Whether the option is selected by default: `Y` or `N` |\n| `fields.LIST_TEXT_VALUES` | string | no | New options for a field of type `L`, one per line. Use `\\n` as the separator. Can be passed together with `LIST` |\n| `fields.LIST_DEF` | string[] | no | IDs of default options for a field of type `L`. Use the keys of `DISPLAY_VALUES_FORM` from [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget). Include these options in `LIST` as well |\n| `fields.SETTINGS` | object | no | Field display settings. To preserve other settings in this object, pass them together with the changed settings |\n| `fields.SETTINGS.SHOW_ADD_FORM` | string | no | Show the field when adding an item: `Y` or `N` |\n| `fields.SETTINGS.SHOW_EDIT_FORM` | string | no | Show the field when editing an item: `Y` or `N` |\n| `fields.SETTINGS.ADD_READ_ONLY_FIELD` | string | no | Make the field read-only when adding an item: `Y` or `N`. Set a default value when using `Y` |\n| `fields.SETTINGS.EDIT_READ_ONLY_FIELD` | string | no | Make the field read-only when editing an item: `Y` or `N` |\n| `fields.SETTINGS.SHOW_FIELD_PREVIEW` | string | no | Show the field in the item preview: `Y` or `N` |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177 \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"fields\": {\n      \"NAME\": \"Current status\",\n      \"TYPE\": \"S\",\n      \"SORT\": 10\n    }\n  }'\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"fields\": {\n      \"NAME\": \"Current status\",\n      \"TYPE\": \"S\",\n      \"SORT\": 10\n    }\n  }'\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    fields: {\n      NAME: 'Current status',\n      TYPE: 'S',\n      SORT: 10,\n    },\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    fields: {\n      NAME: 'Current status',\n      TYPE: 'S',\n      SORT: 10,\n    },\n  }),\n})\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | object | Field update result |\n| `data.updated` | boolean | `true` on a successful update |\n\n## Response example\n\nHTTP 200 OK:\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"updated\": true\n  }\n}\n```\n\n## Error response example\n\n422 — `TYPE` is missing:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Required parameter \\\"TYPE\\\" is missing\",\n    \"b24Code\": \"ERROR_REQUIRED_PARAMETERS_MISSING\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of `lists`, `bitrix_processes`, `lists_socnet`, `structure` |\n| 400 | `MISSING_REQUIRED_FIELDS` | The `fields` object is missing |\n| 422 | `BITRIX_ERROR` | `NAME` or `TYPE` is missing. The `b24Code` field is `ERROR_REQUIRED_PARAMETERS_MISSING` |\n| 422 | `BITRIX_ERROR` | An attempt to change the field type. The `b24Code` field is `ERROR_UPDATE_FIELD` |\n| 422 | `BITRIX_ERROR` | No field with the specified `fieldId` was found. The `b24Code` field is `ERROR_UPDATE_FIELD` |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to edit the list |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode |\n| 403 | `SCOPE_DENIED` | The key lacks the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The Lists module is not enabled on the portal |\n\nFor the full list of common API errors, see [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\nThe `fields.ID` value is ignored. The field to update is determined by the `fieldId` parameter in the request path.\n\n## See also\n\n- [Get a field](\u002Fdocs\u002Flists\u002Ffields\u002Fget)\n- [Create a field](\u002Fdocs\u002Flists\u002Ffields\u002Fcreate)\n- [Field types](\u002Fdocs\u002Flists\u002Ffields\u002Ffield-types)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n","\n## Delete a field\n\n`DELETE \u002Fv1\u002Flists\u002F:iblockId\u002Ffields\u002F:fieldId`\n\nDeletes a field from a list together with this field's values across all elements. A deleted field cannot be restored through the API — create a new one if needed.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|---------|\n| `iblockId` (path) | string | yes | List identifier — numeric `IBLOCK_ID` or symbolic `IBLOCK_CODE`. List of lists: `GET \u002Fv1\u002Flists` |\n| `fieldId` (path) | string | yes | Field identifier in the form `PROPERTY_\u003Cnumber>` or symbolic code. List of fields: `GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffields` |\n| `iblockTypeId` (query) | string | no | Info block type. Values:\u003Cbr>`lists` — regular lists, default\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company-structure type (absence-calendar iblock `absence`) |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X DELETE https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177 \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X DELETE https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177', {\n  method: 'DELETE',\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nif (res.status === 204) {\n  console.log('Field deleted')\n}\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F23\u002Ffields\u002FPROPERTY_1177', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nif (res.status === 204) {\n  console.log('Field deleted')\n}\n```\n\n## Response\n\nOn successful deletion an HTTP status `204 No Content` with an empty body is returned. The success indicator is the response code, not the body.\n\n## Response example\n\n```\nHTTP\u002F1.1 204 No Content\n```\n\n## Error response example\n\n403 — no rights to the list:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ACCESS_DENIED\",\n    \"message\": \"No permission to view and edit the list.\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of `lists`, `bitrix_processes`, `lists_socnet`, `structure` |\n| 422 | `BITRIX_ERROR` | Bitrix24 rejected the deletion, text in `message` |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to edit the list |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode |\n| 403 | `SCOPE_DENIED` | The key lacks the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The \"Lists\" module is not enabled on the portal |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## See also\n\n- [Create a field](\u002Fdocs\u002Flists\u002Ffields\u002Fcreate)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n","\n## Field types\n\n`GET \u002Fv1\u002Flists\u002F:iblockId\u002Ffield-types`\n\nHelps you choose a field type before [creating a field](.\u002Fcreate.md) in a list.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|---------|\n| `iblockId` (path) | string | yes | List identifier. Numeric `IBLOCK_ID` or symbolic `IBLOCK_CODE`. Get the identifier from [List lists](..\u002Flists\u002Flist.md) |\n| `iblockTypeId` (query) | string | no | Infoblock type. Values:\u003Cbr>`lists` — regular lists, default\u003Cbr>`lists_socnet` — workgroup lists\u003Cbr>`bitrix_processes` — service workflows\u003Cbr>`structure` — company structure type (contains the built-in absence calendar infoblock `absence`) |\n| `socnetGroupId` (query) | number | no | Workgroup identifier for lists of type `lists_socnet`. A positive integer from the `id` field returned by [List workgroups](\u002Fdocs\u002Fentities\u002Fworkgroups\u002Flist) |\n| `fieldId` (query) | string | no | Identifier of an existing field. Use the `FIELD_ID` value returned by [List fields](.\u002Flist.md). If specified, the type of this field is included in the returned object. For example, `fieldId=NAME` adds the `NAME` code |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F121\u002Ffield-types \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F121\u002Ffield-types \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F121\u002Ffield-types', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nconst { data } = await res.json()\nconsole.log('Name of type S:', data['S'])\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Flists\u002F121\u002Ffield-types', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | object | Field type dictionary. Each key is a field type code, and its value is the type name as a string |\n\nComposite codes are written with a colon — `S:Date`, `E:EList`, `S:Money`. Pass the code, not the type name, in `fields.TYPE`.\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"SORT\": \"Sort\",\n    \"ACTIVE_FROM\": \"Activity start\",\n    \"ACTIVE_TO\": \"Activity end\",\n    \"PREVIEW_PICTURE\": \"Preview picture\",\n    \"PREVIEW_TEXT\": \"Preview text\",\n    \"DETAIL_PICTURE\": \"Detail picture\",\n    \"DETAIL_TEXT\": \"Detail text\",\n    \"CREATED_BY\": \"Created by\",\n    \"TIMESTAMP_X\": \"Date modified\",\n    \"S\": \"String\",\n    \"N\": \"Number\",\n    \"L\": \"List\",\n    \"F\": \"File\",\n    \"G\": \"Section binding\",\n    \"E\": \"Element binding\",\n    \"S:Date\": \"Date\",\n    \"S:DateTime\": \"Date\u002FTime\",\n    \"S:HTML\": \"HTML\u002Ftext\",\n    \"E:EList\": \"Element binding as a list\",\n    \"N:Sequence\": \"Counter\",\n    \"S:ECrm\": \"CRM element binding\",\n    \"S:Money\": \"Money\",\n    \"S:DiskFile\": \"File (Disk)\",\n    \"S:map_yandex\": \"Map binding\",\n    \"S:employee\": \"Employee binding\"\n  }\n}\n```\n\n## Error response example\n\n404 — no list with the specified identifier exists:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"LIST_NOT_FOUND\",\n    \"message\": \"List not found\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of the allowed types |\n| 403 | `BITRIX_ACCESS_DENIED` | No permission to view or edit the list |\n| 404 | `LIST_NOT_FOUND` | No list with the specified `iblockId` exists |\n| 409 | `LISTS_MODULE_NOT_ENABLED` | The lists module is not enabled on the portal |\n| 403 | `SCOPE_DENIED` | The key is missing the `lists` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n**System fields can also be added to a list.** The returned object includes both custom field types such as `S`, `N`, and `S:Date`, and system field codes such as `SORT`, `ACTIVE_FROM`, `CREATED_BY`, and `TIMESTAMP_X`. For example, passing `fields.TYPE=SORT` to [Create a field](.\u002Fcreate.md) adds the system sorting field.\n\nAfter `SORT` is added, its code disappears from the available field types. To include it again alongside the other types, pass `fieldId=SORT`.\n\n## See also\n\n- [Create a field](\u002Fdocs\u002Flists\u002Ffields\u002Fcreate)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields\u002Flist)\n- [Get field](\u002Fdocs\u002Flists\u002Ffields\u002Fget)\n- [List fields](\u002Fdocs\u002Flists\u002Ffields)\n",1794739580670]