# Catalog sections

Product catalog sections: list, get, create, update, and delete. Sections form a tree inside a catalog — a section may have a parent section. Each section is bound to a catalog via the `iblockId` field.

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

## Operations

- [Create a section](./catalog-sections/create.md) — `POST /v1/catalog-sections`
- [List sections](./catalog-sections/list.md) — `GET /v1/catalog-sections`
- [Get a section](./catalog-sections/get.md) — `GET /v1/catalog-sections/:id`
- [Update a section](./catalog-sections/update.md) — `PATCH /v1/catalog-sections/:id`
- [Delete a section](./catalog-sections/delete.md) — `DELETE /v1/catalog-sections/:id`
- [Search sections](./catalog-sections/search.md) — `POST /v1/catalog-sections/search`
- [Section fields](./catalog-sections/fields.md) — `GET /v1/catalog-sections/fields`

## Key fields

| Field | Description |
|------|---------|
| `iblockId` | ID of the catalog the section belongs to. Required for list, search, and create. List: [`GET /v1/catalogs`](/docs/entities/catalogs) |
| `name` | Section name |
| `iblockSectionId` | ID of the parent section. `null` — top-level section |
| `code` | Symbolic code of the section |
| `sort` | Sort index |
| `active` | Whether the section is active |
| `description` | Section description |
| `descriptionType` | Description format: `text` or `html` |

Full field list — [`GET /v1/catalog-sections/fields`](./catalog-sections/fields.md).

## What you need to know before working

1. **List and search require `filter[iblockId]`.** Without it, [`GET /v1/catalog-sections`](./catalog-sections/list.md) and [`POST /v1/catalog-sections/search`](./catalog-sections/search.md) respond with `400` and the code `MISSING_REQUIRED_FILTER`. The request is rejected before Bitrix24 is called, and the message contains the name of the missing field and a call example. The `iblockId` value comes from [`GET /v1/catalogs`](/docs/entities/catalogs).
2. **Two fields are required to create a section:** `iblockId` and `name`. If either one is missing, the request returns `422`. The `iblockSectionId` field is optional — it sets the parent section; without it the section is created at the top level.
3. **Sections form a tree.** The `iblockSectionId` field points to the parent section within the same catalog. For top-level sections it is `null`.

## Typical scenario

1. Find the catalog and its `iblockId`: [`GET /v1/catalogs`](/docs/entities/catalogs).
2. View the catalog's sections: [`GET /v1/catalog-sections?filter[iblockId]=25`](./catalog-sections/list.md).
3. Create a new section or update an existing one: [`POST /v1/catalog-sections`](./catalog-sections/create.md) / [`PATCH /v1/catalog-sections/:id`](./catalog-sections/update.md).

## Limits

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

## See also

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