# Required CRM fields

Read, set and clear the required property of one CRM field. Changes affect CRM cards and record saving for **all users of the Bitrix24 account**.

Bitrix24 API: `crm.<entity>.field.required.{get,set,clear}`
Scope: `crm`

> **Rolling out with `crm 26.2000.0`.** Availability depends on the Bitrix24 account. A disabled feature or a method missing on the Bitrix24 account returns `422 METHOD_NOT_YET_AVAILABLE` with `error.release`. The release number alone does not guarantee availability.

## Operations

- [Read requirement](./crm-required-fields/get.md) — `GET /v1/deals/fields/required`
- [Set requirement](./crm-required-fields/set.md) — `PUT /v1/deals/fields/required`
- [Clear requirement](./crm-required-fields/clear.md) — `DELETE /v1/deals/fields/required`

## Resources

Use the same suffix `/fields/required` for these resources:

- `/v1/deals/fields/required`
- `/v1/leads/fields/required`
- `/v1/contacts/fields/required`
- `/v1/companies/fields/required`
- `/v1/quotes/fields/required`
- `/v1/invoices/fields/required`
- `/v1/items/:entityTypeId/fields/required`

## Key fields

| Field | Description |
|---|---|
| `fieldId` | Native CRM field identifier, for example `comments` or `opportunity`. Field list: the corresponding entity [field dictionary](/docs/entities/deals/fields). |
| `categoryId` | Funnel ID: [deal categories](/docs/entities/deal-categories/list) or [categories](/docs/entities/categories/list). |
| `requiredStageIds` | Stage identifiers: [statuses](/docs/entities/statuses/list). Omitting `requiredStageIds` makes a field required throughout the funnel or globally for entities without stages. A non-empty list selects stages. `[]` clears the setting. |
| `entityTypeId` | Smart process type in the `/v1/items/:entityTypeId/fields/required` path, from [GET /v1/smart-processes](/docs/entities/smart-processes/list). Built-in types use the named resources listed under Resources. |
| `mode` | Response field: `none` means no setting, `all` means everywhere, `stages` means selected stages. |
| `globallyRequired` | Response field: the field is globally required by platform rules. |

## Before you start

1. Reading works with a `READONLY` key. Changes require `READWRITE`. Bitrix24 checks field, funnel, stage and permission rules.
2. Standard field identifiers use native CRM names. The amount field is `opportunity`, although the Vibecode entity API calls it `amount`. V1 aliases are not converted.
3. For a custom field, use the original `UF_*` value from `fieldName` in [CRM user fields](/docs/userfields/crm) or [smart process user fields](/docs/userfields/smart-processes). Smart invoices use `/v1/userfields/invoices`. Do not use the `ufCrm...` alias from the entity dictionary. Field identifiers are not converted.
4. A system field may remain globally required after the setting is cleared.

## Typical scenario

1. Get the native field name: a standard one from the [field dictionary](/docs/entities/deals/fields), a custom `UF_*` one from [CRM user fields](/docs/userfields/crm).
2. Read the current setting: [`GET /v1/deals/fields/required`](./crm-required-fields/get.md).
3. Set the requirement: [`PUT /v1/deals/fields/required`](./crm-required-fields/set.md). To make the field required on some stages only, pass `requiredStageIds`.
4. Clear the setting when it is no longer needed: [`DELETE /v1/deals/fields/required`](./crm-required-fields/clear.md).

## Limits

| Limit | Value |
|-------|----------|
| Fields per call | One: `fieldId` |
| Parameter placement | Read and clear take query string parameters. Set takes a flat JSON body without a `fields` wrapper |
| Rate limit | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [CRM entity fields](/docs/userfields/crm)
- [Smart process fields](/docs/userfields/smart-processes)
- [Errors](/docs/errors)
