# Quotes

CRM quote management: create, retrieve, update, delete, line items.

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

## Operations

- [Create a quote](./quotes/create.md) — `POST /v1/quotes`
- [List quotes](./quotes/list.md) — `GET /v1/quotes`
- [Get a quote](./quotes/get.md) — `GET /v1/quotes/:id`
- [Update a quote](./quotes/update.md) — `PATCH /v1/quotes/:id`
- [Delete a quote](./quotes/delete.md) — `DELETE /v1/quotes/:id`
- [Search quotes](./quotes/search.md) — `POST /v1/quotes/search`
- [Quote fields](./quotes/fields.md) — `GET /v1/quotes/fields`
- [Aggregate quotes](./quotes/aggregate.md) — `POST /v1/quotes/aggregate`
- [Get products](./quotes/products-get.md) — `GET /v1/quotes/:id/products`
- [Set products](./quotes/products-set.md) — `PUT /v1/quotes/:id/products`
- [Add a product](./quotes/products-add.md) — `POST /v1/quotes/:id/products`
- [Delete a product](./quotes/products-delete.md) — `DELETE /v1/quotes/:id/products/:rowId`
- [Get a product](./quotes/products-get-single.md) — `GET /v1/quotes/:id/products/:rowId`
- [Update a product](./quotes/products-update.md) — `PATCH /v1/quotes/:id/products/:rowId`
- [Product fields](./quotes/products-fields.md) — `GET /v1/quotes/:id/products/fields`
- [Import records](../import.md) — `POST /v1/quotes/import`

## Key fields

| Field | Description |
|------|----------|
| `id` | Quote identifier. Source: [List quotes](./quotes/list.md) |
| `title` | Quote title |
| `stageId` | Quote stage. Source: [List of dictionaries](./statuses/list.md) with `entityId=QUOTE_STATUS` |
| `amount` | Quote amount |
| `currency` | Amount currency. Source: [List currencies](./currencies/list.md) |
| `dealId` | Linked deal. Source: [List deals](./deals/list.md) |
| `companyId` | Customer company. Source: [List companies](./companies/list.md) |
| `contactId` | Primary contact. Source: [List contacts](./contacts/list.md) |

Full list of fields — [Quote fields](./quotes/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 format is described on the [Create a quote](./quotes/create.md) and [Update a quote](./quotes/update.md) pages.
2. A quote can be linked to a deal, a company and a contact. The links are set by the `dealId`, `companyId` and `contactId` fields.
3. Take `stageId` values from the `statusId` of the records in the [List of dictionaries](./statuses/list.md) with `entityId=QUOTE_STATUS`.
4. Line items are managed in the context of a quote: [Get products](./quotes/products-get.md), [Set products](./quotes/products-set.md) and [Add a product](./quotes/products-add.md).

## Typical scenario

1. Get the stages through the [List of dictionaries](./statuses/list.md) with `entityId=QUOTE_STATUS`.
2. [Create a quote](./quotes/create.md), passing the title and the selected `stageId`.
3. Set the line items through [Set products](./quotes/products-set.md).
4. Read the quote through [Get a quote](./quotes/get.md), and its line items through [Get products](./quotes/products-get.md).
5. Change the stage or customer data through [Update a quote](./quotes/update.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

- [Deals](./deals.md)
- [Companies](./companies.md)
- [Contacts](./contacts.md)
- [CRM dictionaries](./statuses.md)
- [Import records](../import.md)
