
## Update a smart process type

`PATCH /v1/smart-processes/:entityTypeId`

Updates the fields of an existing smart process type. Pass only the fields you need to change — the rest stay the same.

## Parameters

| Parameter | Type | Required | Description |
|----------|-----|:-----:|---------|
| `entityTypeId` (path) | number | **yes** | Entity type ID. List: `GET /v1/smart-processes` |

## Request fields (body)

All fields are optional. Fields that are not passed stay unchanged.

| Field | Type | Description |
|------|-----|---------|
| `title` | string | Smart process name |
| `code` | string | Symbolic code of the type (for programmatic identification) |
| `isCategoriesEnabled` | boolean | Use custom pipelines and sales tunnels |
| `isStagesEnabled` | boolean | Use custom stages and kanban |
| `isBeginCloseDatesEnabled` | boolean | "Start date" and "End date" fields |
| `isClientEnabled` | boolean | "Client" field linked to contacts and companies |
| `isLinkWithProductsEnabled` | boolean | Linking catalog products |
| `isMycompanyEnabled` | boolean | "Your company details" field |
| `isObserversEnabled` | boolean | "Observers" field |
| `isSourceEnabled` | boolean | "Source" and "More about the source" fields |
| `isAutomationEnabled` | boolean | Automation rules and triggers |
| `isBizProcEnabled` | boolean | Workflow designer |
| `isDocumentsEnabled` | boolean | Document printing |
| `isRecyclebinEnabled` | boolean | Recycle bin usage |
| `isSetOpenPermissions` | boolean | Make new pipelines available to everyone |
| `isUseInUserfieldEnabled` | boolean | Use the smart process in a user field |
| `isRecurringEnabled` | boolean | "Recurrence" field |
| `isPaymentsEnabled` | boolean | Online payment |
| `isCountersEnabled` | boolean | Counters (notifications and badges) |
| `relations` | object | Relations with other CRM entities. **Fully replaces** existing relations — see "Known specifics" |
| `linkedUserFields` | object | User fields in which the smart process is displayed. Format — see [Create type](/docs/entities/smart-processes/create#relations-and-user-fields) |

Full list of fields: [GET /v1/smart-processes/fields](/docs/entities/smart-processes/fields).

**`entityTypeId` cannot be changed** — it is set on creation and stays immutable.

## Frequently updated fields

- `title` — renaming the type
- `isStagesEnabled`, `isCategoriesEnabled`, `isAutomationEnabled`, `isBizProcEnabled` — enabling/disabling core capabilities
- `code` — assigning a programmatic identifier
- `relations` — configuring relations with other CRM types

## Examples

### curl — personal key

```bash
curl -X PATCH https://vibecode.bitrix24.com/v1/smart-processes/1050 \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Supply contracts (updated name)",
    "code": "supply_contracts",
    "isAutomationEnabled": false
  }'
```

### curl — OAuth application

```bash
curl -X PATCH https://vibecode.bitrix24.com/v1/smart-processes/1050 \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Supply contracts (updated name)",
    "code": "supply_contracts",
    "isAutomationEnabled": false
  }'
```

### JavaScript — personal key

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/smart-processes/1050', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Supply contracts (updated name)',
    code: 'supply_contracts',
    isAutomationEnabled: false,
  }),
})

const { success, data } = await res.json()
console.log('Updated at:', data.updatedTime)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/smart-processes/1050', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Supply contracts (updated name)',
    code: 'supply_contracts',
    isAutomationEnabled: false,
  }),
})

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

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `data` | object | The full type object after the update. List of fields — see [Type fields](/docs/entities/smart-processes/fields) |

## Response example

```json
{
  "success": true,
  "data": {
    "id": 31,
    "entityTypeId": 1050,
    "title": "Supply contracts (updated name)",
    "code": "supply_contracts",
    "createdBy": 1,
    "createdTime": "2026-04-21T13:46:45+00:00",
    "updatedBy": 1,
    "updatedTime": "2026-04-21T14:50:13+00:00",
    "customSectionId": null,
    "isCategoriesEnabled": true,
    "isStagesEnabled": true,
    "isBeginCloseDatesEnabled": false,
    "isClientEnabled": false,
    "isLinkWithProductsEnabled": true,
    "isMycompanyEnabled": false,
    "isObserversEnabled": false,
    "isSourceEnabled": false,
    "isAutomationEnabled": false,
    "isBizProcEnabled": true,
    "isDocumentsEnabled": false,
    "isRecyclebinEnabled": false,
    "isSetOpenPermissions": true,
    "isUseInUserfieldEnabled": false,
    "isRecurringEnabled": false,
    "isPaymentsEnabled": false,
    "isCountersEnabled": false,
    "isInitialized": true
  }
}
```

## Error response example

404 — type not found:

```json
{
  "success": false,
  "error": {
    "code": "SMART_PROCESS_NOT_FOUND",
    "message": "Smart process with entityTypeId=99999 not found"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 401 | `MISSING_API_KEY` | The `X-Api-Key` header was not passed |
| 401 | `INVALID_API_KEY` | The key was not found or was revoked |
| 403 | `SCOPE_DENIED` | The API key does not have the `crm` scope |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |
| 400 | `INVALID_ENTITY_TYPE_ID` | `entityTypeId` is not a positive integer. Message: `entityTypeId must be a positive integer` |
| 400 | `READONLY_FIELD` | A read-only field was passed in the body (`id`, `isInitialized`, `createdTime`, and others) |
| 404 | `SMART_PROCESS_NOT_FOUND` | A type with this `entityTypeId` was not found. Message: `Smart process with entityTypeId=X not found` |
| 422 | `BITRIX_ERROR` | A validation error from Bitrix24. The specific reason is in the `message` field |

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

## Known specifics

**`relations` fully replaces existing relations.** If you pass `relations: {parent: [{entityTypeId: 3}]}`, all previous `parent` relations **will be deleted** and replaced with a single new array. To add a relation without losing the current ones — first get the current state via `GET /v1/smart-processes/:entityTypeId`, add a new record to the array, and pass the entire updated list.

The same applies to `child` and `linkedUserFields` — this is a "full overwrite", not a "per-record patch".

**An empty body (`{}`) is allowed.** A PATCH with an empty object returns HTTP 200 and the current state of the type, changing nothing.

**Changing `entityTypeId` is not possible** — it is set on creation and serves as a stable identifier of the type.

## See also

- [Get type](/docs/entities/smart-processes/get)
- [List types](/docs/entities/smart-processes/list)
- [Create type](/docs/entities/smart-processes/create)
- [Delete type](/docs/entities/smart-processes/delete)
- [Type fields](/docs/entities/smart-processes/fields)
- [Smart process items](/docs/entities/items)
- [Limits and optimization](/docs/optimization)
