
## Field types

`GET /v1/lists/:iblockId/field-types`

Helps you choose a field type before [creating a field](./create.md) in a list.

## Parameters

| Parameter | Type | Required | Description |
|----------|-----|:-----:|---------|
| `iblockId` (path) | string | yes | List identifier. Numeric `IBLOCK_ID` or symbolic `IBLOCK_CODE`. Get the identifier from [List lists](../lists/list.md) |
| `iblockTypeId` (query) | string | no | Infoblock type. Values:<br>`lists` — regular lists, default<br>`lists_socnet` — workgroup lists<br>`bitrix_processes` — service workflows<br>`structure` — company structure type (contains the built-in absence calendar infoblock `absence`) |
| `socnetGroupId` (query) | number | no | Workgroup identifier for lists of type `lists_socnet`. A positive integer from the `id` field returned by [List workgroups](/docs/entities/workgroups/list) |
| `fieldId` (query) | string | no | Identifier of an existing field. Use the `FIELD_ID` value returned by [List fields](./list.md). If specified, the type of this field is included in the returned object. For example, `fieldId=NAME` adds the `NAME` code |

## Examples

### curl — personal key

```bash
curl https://vibecode.bitrix24.com/v1/lists/121/field-types \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl https://vibecode.bitrix24.com/v1/lists/121/field-types \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/lists/121/field-types', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
console.log('Name of type S:', data['S'])
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/lists/121/field-types', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { data } = await res.json()
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data` | object | Field type dictionary. Each key is a field type code, and its value is the type name as a string |

Composite codes are written with a colon — `S:Date`, `E:EList`, `S:Money`. Pass the code, not the type name, in `fields.TYPE`.

## Response example

```json
{
  "success": true,
  "data": {
    "SORT": "Sort",
    "ACTIVE_FROM": "Activity start",
    "ACTIVE_TO": "Activity end",
    "PREVIEW_PICTURE": "Preview picture",
    "PREVIEW_TEXT": "Preview text",
    "DETAIL_PICTURE": "Detail picture",
    "DETAIL_TEXT": "Detail text",
    "CREATED_BY": "Created by",
    "TIMESTAMP_X": "Date modified",
    "S": "String",
    "N": "Number",
    "L": "List",
    "F": "File",
    "G": "Section binding",
    "E": "Element binding",
    "S:Date": "Date",
    "S:DateTime": "Date/Time",
    "S:HTML": "HTML/text",
    "E:EList": "Element binding as a list",
    "N:Sequence": "Counter",
    "S:ECrm": "CRM element binding",
    "S:Money": "Money",
    "S:DiskFile": "File (Disk)",
    "S:map_yandex": "Map binding",
    "S:employee": "Employee binding"
  }
}
```

## Error response example

404 — no list with the specified identifier exists:

```json
{
  "success": false,
  "error": {
    "code": "LIST_NOT_FOUND",
    "message": "List not found"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `INVALID_IBLOCK_TYPE` | `iblockTypeId` is not one of the allowed types |
| 403 | `BITRIX_ACCESS_DENIED` | No permission to view or edit the list |
| 404 | `LIST_NOT_FOUND` | No list with the specified `iblockId` exists |
| 409 | `LISTS_MODULE_NOT_ENABLED` | The lists module is not enabled on the portal |
| 403 | `SCOPE_DENIED` | The key is missing the `lists` scope |
| 401 | `TOKEN_MISSING` | The key has no configured tokens |

Full list of common API errors — [Errors](/docs/errors).

## Known specifics

**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](./create.md) adds the system sorting field.

After `SORT` is added, its code disappears from the available field types. To include it again alongside the other types, pass `fieldId=SORT`.

## See also

- [Create a field](/docs/lists/fields/create)
- [List fields](/docs/lists/fields/list)
- [Get field](/docs/lists/fields/get)
- [List fields](/docs/lists/fields)
