# Companies

CRM company management: create, retrieve, update, delete, filter.

Bitrix24 API: `crm.item.*`
Scope: `crm`

## Operations

- [Create company](./companies/create.md) — `POST /v1/companies`
- [List companies](./companies/list.md) — `GET /v1/companies`
- [Get company](./companies/get.md) — `GET /v1/companies/:id`
- [Update company](./companies/update.md) — `PATCH /v1/companies/:id`
- [Delete company](./companies/delete.md) — `DELETE /v1/companies/:id`
- [Search companies](./companies/search.md) — `POST /v1/companies/search`
- [Company fields](./companies/fields.md) — `GET /v1/companies/fields`
- [Aggregate companies](./companies/aggregate.md) — `POST /v1/companies/aggregate`
- [List company contacts](./companies/contacts-list.md) — `GET /v1/companies/:id/contacts`
- [Replace company contacts](./companies/contacts-set.md) — `PUT /v1/companies/:id/contacts`
- [Link a contact to a company](./companies/contacts-create.md) — `POST /v1/companies/:id/contacts`
- [Unlink a contact from a company](./companies/contacts-delete-delete.md) — `DELETE /v1/companies/:id/contacts/:relatedId`
- [Unlink all contacts from a company](./companies/contacts-delete.md) — `DELETE /v1/companies/:id/contacts`
- [Import records](../import.md) — `POST /v1/companies/import`

## Key fields

| Field | Description |
|------|----------|
| `id` | Company identifier. Source: [List companies](./companies/list.md) |
| `title` | Company name |
| `typeId` | Company type. Source: [List of dictionaries](./statuses/list.md) with `entityId=COMPANY_TYPE` |
| `industry` | Industry. Source: [List of dictionaries](./statuses/list.md) with `entityId=INDUSTRY` |
| `revenue` | Annual company revenue |
| `currencyId` | Revenue currency. Source: [List currencies](./currencies/list.md) |
| `assignedById` | Assignee. Source: [List employees](./users/list.md) |
| `opened` | Whether the company is available to all users |

Full list of fields — [Company fields](./companies/fields.md).

## What to know before you start

1. On create and update, pass the fields at the root of the JSON, without a `fields` wrapper. The field set is described on the [Create company](./companies/create.md) and [Update company](./companies/update.md) pages.
2. Company type and industry are separate dictionaries: `COMPANY_TYPE` and `INDUSTRY`. Pass the `statusId` of the record you pick from [List of dictionaries](./statuses/list.md) into `typeId` and `industry`.
3. A company can have several contacts. Read them with [List company contacts](./companies/contacts-list.md), add them with [Link a contact to a company](./companies/contacts-create.md), or set the full list with [Replace company contacts](./companies/contacts-set.md).

## Typical scenario

1. Find the company with [List companies](./companies/list.md) or [Search companies](./companies/search.md).
2. If the company does not exist, [create a company](./companies/create.md) with a name in `title` and the customer's details.
3. Find the contact with [List contacts](./contacts/list.md) and [link it to the company](./companies/contacts-create.md).
4. Check the result with [Get company](./companies/get.md) and [List company contacts](./companies/contacts-list.md).

## Limits

| Limit | Value |
|-------|----------|
| Maximum records per request | 5000 (`limit ≤ 5000`) |
| Automatic pagination | enabled when `limit > 50` |
| `offset` on large result sets | `limit ≤ 500` recommended when `offset ≥ 2500` |
| Batch requests | up to 50 operations in [Batch calls](/docs/batch) |
| Request rate | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Contacts](./contacts.md)
- [CRM dictionaries](./statuses.md)
- [Import records](../import.md)
- [Entity reference](/docs/entity-api)
- [Filtering syntax](/docs/filtering)
