
## Создать тип смарт-процесса

`POST /v1/smart-processes`

Создаёт новый тип смарт-процесса с автоматически назначенным `entityTypeId`. После создания тип доступен в `/v1/items/:entityTypeId` для CRUD операций по элементам.

## Поля запроса (body)

| Поле | Тип | Обяз. | По умолч. | Описание |
|------|-----|:-----:|:---------:|---------|
| `title` | string | **да** | — | Название смарт-процесса |
| `isCategoriesEnabled` | boolean | | `false` | Использовать в смарт-процессе свои воронки и туннели продаж |
| `isStagesEnabled` | boolean | | `false` | Использовать в смарт-процессе свои стадии и канбан |
| `isBeginCloseDatesEnabled` | boolean | | `false` | Поля «Дата начала» и «Дата завершения» |
| `isClientEnabled` | boolean | | `false` | Поле «Клиент» с привязкой к контактам и компаниям |
| `isLinkWithProductsEnabled` | boolean | | `false` | Привязка товаров каталога |
| `isMycompanyEnabled` | boolean | | `false` | Поле «Реквизиты вашей компании» |
| `isObserversEnabled` | boolean | | `false` | Поле «Наблюдатели» |
| `isSourceEnabled` | boolean | | `false` | Поля «Источник» и «Дополнительно об источнике» |
| `isAutomationEnabled` | boolean | | `false` | Роботы и триггеры |
| `isBizProcEnabled` | boolean | | `false` | Дизайнер бизнес-процессов |
| `isDocumentsEnabled` | boolean | | `false` | Печать документов |
| `isRecyclebinEnabled` | boolean | | `false` | Использование корзины |
| `isSetOpenPermissions` | boolean | | **`true`** | Делать новые воронки доступными для всех |
| `isUseInUserfieldEnabled` | boolean | | `false` | Использовать смарт-процесс в пользовательском поле |
| `isRecurringEnabled` | boolean | | `false` | Поле «Регулярность» |
| `isPaymentsEnabled` | boolean | | `false` | Онлайн-оплата |
| `isCountersEnabled` | boolean | | `false` | Счётчики (уведомления и бейджи) |
| `relations` | object | | `{}` | Связи с другими сущностями CRM — см. «Связи и пользовательские поля» ниже |
| `linkedUserFields` | object | | `{}` | Набор пользовательских полей, в которых будет отображаться смарт-процесс — см. «Связи и пользовательские поля» ниже |

Полный список полей: [GET /v1/smart-processes/fields](/docs/entities/smart-processes/fields).

## Примеры

### curl — личный ключ

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/smart-processes \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Договоры поставки",
    "isStagesEnabled": true,
    "isCategoriesEnabled": true,
    "isAutomationEnabled": true,
    "isBizProcEnabled": true,
    "isLinkWithProductsEnabled": true
  }'
```

### curl — OAuth-приложение

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/smart-processes \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Договоры поставки",
    "isStagesEnabled": true,
    "isCategoriesEnabled": true,
    "isAutomationEnabled": true,
    "isBizProcEnabled": true,
    "isLinkWithProductsEnabled": true
  }'
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/smart-processes', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Договоры поставки',
    isStagesEnabled: true,
    isCategoriesEnabled: true,
    isAutomationEnabled: true,
    isBizProcEnabled: true,
    isLinkWithProductsEnabled: true,
  }),
})

const { success, data } = await res.json()
console.log('Создан тип, entityTypeId:', data.entityTypeId)
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/smart-processes', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Договоры поставки',
    isStagesEnabled: true,
    isCategoriesEnabled: true,
    isAutomationEnabled: true,
    isBizProcEnabled: true,
    isLinkWithProductsEnabled: true,
  }),
})

const { success, data } = await res.json()
```

## Связи и пользовательские поля

Поля `relations` и `linkedUserFields` не описаны в `/fields`, но принимаются при создании и сохраняются Битрикс24.

### `relations` — связи с сущностями CRM

Объект с двумя массивами: `parent` (родительские типы) и `child` (дочерние типы).

```json
{
  "title": "Договоры поставки",
  "relations": {
    "parent": [
      { "entityTypeId": 2, "isChildrenListEnabled": "Y" }
    ],
    "child": [
      { "entityTypeId": 3, "isChildrenListEnabled": "Y" }
    ]
  }
}
```

| Поле записи | Тип | Описание |
|---|---|---|
| `entityTypeId` | number | ID связанного типа (2 = сделки, 3 = контакты, 4 = компании, 7 = коммерческие предложения, 31 = счета, 1030+ = смарт-процессы) |
| `isChildrenListEnabled` | boolean / string | Отображать ли список записей этого смарт-процесса в карточке связанного типа |

> **Формат `isChildrenListEnabled`.** Поле принимает булево `true`/`false`, строки `"Y"`/`"N"` или `"true"`/`"false"` — значение нормализуется автоматически (`true`/`"Y"`/`"yes"`/`1` → включено, `false`/`"N"`/`"no"`/`0` → выключено). В ответе флаг всегда возвращается как `"Y"`/`"N"`.

**Побочный эффект от `isClientEnabled: true`:** Битрикс24 автоматически добавит в `relations.parent` связи с контактами (`entityTypeId: 3`) и компаниями (`entityTypeId: 4`) с флагом `isPredefined: "Y"` — передавать их вручную не нужно.

### `linkedUserFields` — отображение в пользовательских полях

Объект, где ключ — идентификатор поля из другой сущности в формате `{ENTITY_CODE}|{FIELD_NAME}`, значение — включить (`true`) или выключить (`false`) отображение.

> **Формат значения.** Поле принимает булево `true`/`false`, строки `"Y"`/`"N"` или `"true"`/`"false"` — значение нормализуется автоматически (`true`/`"Y"`/`"yes"`/`1` → включено, `false`/`"N"`/`"no"`/`0` → выключено). В ответе флаг всегда возвращается как `"Y"`/`"N"`.

```json
{
  "title": "Договоры поставки",
  "linkedUserFields": {
    "TASKS_TASK|UF_CRM_TASK": "Y",
    "TASKS_TASK_TEMPLATE|UF_CRM_TASK": "Y",
    "CALENDAR_EVENT|UF_CRM_CAL_EVENT": "Y"
  }
}
```

Поддерживаются 3 фиксированных ключа:

| Ключ | Где отобразится смарт-процесс |
|------|------------------------------|
| `TASKS_TASK\|UF_CRM_TASK` | Поле «Элемент CRM» в задачах |
| `TASKS_TASK_TEMPLATE\|UF_CRM_TASK` | Поле «Элемент CRM» в шаблонах задач |
| `CALENDAR_EVENT\|UF_CRM_CAL_EVENT` | Поле «Элемент CRM» в событиях календаря |

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `id` | number | Внутренний ID записи типа |
| `entityTypeId` | number | **Назначенный `entityTypeId`** — используется в `/v1/items/:entityTypeId` |
| `title` | string | Название |
| `createdBy` | number | Создатель |
| `updatedBy` | number | Последний редактор |
| `createdTime` | datetime | Дата создания |
| `updatedTime` | datetime | Дата изменения |
| `customSectionId` | number \| null | ID цифрового рабочего места, если привязан |

Плюс все `isXxxEnabled` флаги в том состоянии, которое было передано (или `false` по умолчанию). Полный список — [Поля типа](/docs/entities/smart-processes/fields).

Список элементов созданного типа открывается в Битрикс24 по `entityTypeId`:

```
https://<portal>.bitrix24.ru/crm/type/<entityTypeId>/list/category/0/
```

`0` — основная воронка. `<portal>` — домен портала. Доступ ограничен правами сотрудника в Битрикс24.

## Пример ответа

```json
{
  "success": true,
  "data": {
    "id": 31,
    "entityTypeId": 1050,
    "title": "Договоры поставки",
    "createdBy": 1,
    "createdTime": "2026-04-21T13:46:45+03:00",
    "updatedTime": "2026-04-21T13:46:45+03:00",
    "updatedBy": 1,
    "customSectionId": null,
    "isCategoriesEnabled": true,
    "isStagesEnabled": true,
    "isBeginCloseDatesEnabled": false,
    "isClientEnabled": false,
    "isLinkWithProductsEnabled": true,
    "isMycompanyEnabled": false,
    "isObserversEnabled": false,
    "isSourceEnabled": false,
    "isAutomationEnabled": true,
    "isBizProcEnabled": true,
    "isDocumentsEnabled": false,
    "isRecyclebinEnabled": false,
    "isSetOpenPermissions": true,
    "isUseInUserfieldEnabled": false,
    "isRecurringEnabled": false,
    "isPaymentsEnabled": false,
    "isCountersEnabled": false,
    "isInitialized": false
  }
}
```

## Пример ответа при ошибке

422 — не передано обязательное поле:

```json
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Не заполнено обязательное поле \"Название\""
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 401 | `MISSING_API_KEY` | Заголовок `X-Api-Key` не передан |
| 401 | `INVALID_API_KEY` | Ключ не найден или отозван |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |
| 400 | `READONLY_FIELD` | В теле передано поле только для чтения (`id`, `isInitialized`, `createdTime` и другие) |
| 422 | `BITRIX_ERROR` | Любая ошибка от Битрикс24: не передано `title`, `entityTypeId` вне диапазона, превышен лимит смарт-процессов на портале и т. д. Конкретная причина — в поле `message` |

Типичные сообщения в `message` при `BITRIX_ERROR`:
- `Не заполнено обязательное поле "Название"` — пропущен `title`
- `EntityTypeId should be more or equal than 128 and less than 192` — передан `entityTypeId` вне диапазона
- `Превышено максимальное количество смарт-процессов` — достигнут лимит портала

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Авто-генерация `entityTypeId`.** Битрикс24 сам назначает свободный идентификатор. Если вы хотите передать собственный, значение должно быть **уникальным** и попадать в один из диапазонов: от `128` до `191` (`≥ 128` и `< 192`), либо чётное число `≥ 1030`. Значение возвращается в поле `entityTypeId` ответа — сохраните его и используйте во всех запросах к типу и его элементам.

**После создания `isInitialized: false`.** Битрикс24 ещё не сгенерировал стандартные стадии и воронки. Они создаются при первом обращении к типу в интерфейсе или программно — через `/v1/statuses` и `/v1/categories/:entityTypeId`.

**`relations` двунаправленные.** Если вы указали `parent: [{entityTypeId: 2, ...}]`, то в сделках (тип 2) в поле `relations.child` автоматически появится ссылка на ваш новый тип с флагом `isPredefined: "N"` (пользовательская связь).

**`isSetOpenPermissions` по умолчанию `true`** — это единственный флаг с положительным дефолтом. Если нужны приватные воронки, передавайте `false` явно.

## Смотрите также

- [Обновить тип](/docs/entities/smart-processes/update)
- [Удалить тип](/docs/entities/smart-processes/delete)
- [Список типов](/docs/entities/smart-processes/list)
- [Поля типа](/docs/entities/smart-processes/fields)
- [Элементы смарт-процессов](/docs/entities/items)
- [Стадии и воронки](/docs/entities/categories)
- [Лимиты и оптимизация](/docs/optimization)
