# Catalog price types

Price types of your Bitrix24 account: list, retrieve and filter. A price type is what [catalog prices](/docs/entities/catalog-prices) pass in the `catalogGroupId` field. Price types are read-only: they are configured in the Bitrix24 interface.

Bitrix24 API: `catalog.priceType.*`
Scope: `catalog`

## Operations

- [List price types](./catalog-price-types/list.md) — `GET /v1/catalog-price-types`
- [Get a price type](./catalog-price-types/get.md) — `GET /v1/catalog-price-types/:id`
- [Search price types](./catalog-price-types/search.md) — `POST /v1/catalog-price-types/search`
- [Price type fields](./catalog-price-types/fields.md) — `GET /v1/catalog-price-types/fields`

## Key fields

| Field | Description |
|------|---------|
| `id` | Price type identifier. This is the value passed in `catalogGroupId` when working with [catalog prices](/docs/entities/catalog-prices) |
| `name` | Price type name as configured in your Bitrix24 account |
| `base` | `Y` for the base price type of the account, `N` for the rest. Exactly one type carries `Y` |
| `sort` | Sort order in the Bitrix24 interface |
| `xmlId` | External code used by import and export integrations. Can be `null` |

The full field list — [`GET /v1/catalog-price-types/fields`](./catalog-price-types/fields.md).

## What to know before you start

1. **Price type identifiers depend on the account.** On one account the base type has `id` 1, on another 3 or 7: numbers are assigned as types are created and are not reused after deletion. Do not hardcode the number into an integration.
2. **Find the base price type by `base`, not by number.** Take the record from the [list](./catalog-price-types/list.md) whose `base` equals `Y` — there is exactly one — and use its `id`. Other types are easier to find by `name`.
3. **Price types are read-only.** The API returns the list and a single record; create, update and delete are not supported. Every field in the response is marked read-only.
4. **An unknown `catalogGroupId` returns 422.** If the type number you pass to [`POST /v1/catalog-prices`](/docs/entities/catalog-prices) does not exist on your account, Bitrix24 responds with `422` and a message about an invalid price group. In that response the platform adds a hint pointing to this endpoint.
5. **Bitrix24 account administrator rights are required.** The `catalog` scope is not enough: Bitrix24 returns price types only to a user with the right to read them — an account administrator has it. Otherwise the API returns `422 BITRIX_ERROR` with a Bitrix24 message about insufficient rights.

## Typical scenario

1. Get the price types: [`GET /v1/catalog-price-types`](./catalog-price-types/list.md).
2. Take the `id` of the record with `base: "Y"` — that is the base price type of the account.
3. Create a price with that number: [`POST /v1/catalog-prices`](/docs/entities/catalog-prices) with `catalogGroupId` from step 2.

## Limits

| Limit | Value |
|-------|----------|
| Maximum records per request | 5000 (`limit ≤ 5000`) |
| Auto-pagination | enabled when `limit > 50` |
| Batch requests | price types are read-only — write operations in [`POST /v1/batch`](/docs/batch) are not supported |
| Rate limit | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Catalog prices](/docs/entities/catalog-prices)
- [Catalog products](/docs/entities/catalog-products)
- [Catalogs](/docs/entities/catalogs)
- [Filtering syntax](/docs/filtering)
- [API reference](/docs/api-reference)
