## Список шаблонов документов CRM

`GET /v1/crm-document-templates`

Возвращает шаблоны документов CRM портала с фильтрацией, выборкой полей и постраничной выдачей.

## Параметры

| Параметр | Тип | По умолч. | Описание |
|----------|-----|-----------|---------|
| `filter` (query) | object | — | Фильтрация по полям шаблона, например `active`, `id`, `entityTypeId`.<br>[Синтаксис фильтрации](/docs/filtering). Пример: `?filter[entityTypeId]=2_category_1`. Шаблоны сделок находятся только по воронке, значение `2` их не находит |
| `select` (query) | string | все поля | Выборка полей через запятую: `?select=id,name`. Поля `id`, `download` и `downloadMachine` приходят при любом `select`. Неизвестное имя поля ошибку не вызывает: при `select=foo` в элементах остаются только эти три поля |
| `order` (query) | object | — | Принимается, например `?order[sort]=ASC`, но порядок выдачи не меняет. Сортировка по полю, которое не принимается, например `order[ID]`, возвращает `422 BITRIX_ERROR` |
| `start` (query) | number | `0` | Позиция следующей порции — значение `meta.next` из предыдущего ответа |

**Пагинация.** Следующую порцию запрашивайте с `start`, равным `meta.next` предыдущего ответа. `meta.next: null` означает, что шаблонов больше нет. Произвольное значение `start` выдачу не сдвигает: на портале с 11 шаблонами `start=2` вернул те же 11 шаблонов, что и `start=0`, а `start=50` — пустой `data.templates` при `meta.total: 11`.

**Порядок выдачи.** Ключи `data.templates` всегда идут по возрастанию `id`: запросы с `order[sort]=ASC` и `order[name]=DESC` вернули шаблоны в одном и том же порядке. Нужный порядок задавайте на своей стороне, например сортировкой `Object.values(data.templates)` по `sort`.

## Примеры

### curl — личный ключ

```bash
curl "https://vibecode.bitrix24.tech/v1/crm-document-templates" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl "https://vibecode.bitrix24.tech/v1/crm-document-templates" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-document-templates', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
const templates = Object.values(data.templates)
console.log(`Найдено ${meta.total} шаблонов`, templates.map(t => t.name))
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-document-templates', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data, meta } = await res.json()
const templates = Object.values(data.templates)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.templates` | object | Шаблоны. Ключ — идентификатор шаблона строкой, значение — запись шаблона |
| `data.templates.{id}.id` | string | Идентификатор шаблона |
| `data.templates.{id}.name` | string | Название |
| `data.templates.{id}.active` | string | Доступность: `Y` / `N` |
| `data.templates.{id}.code` | string \| null | Символьный код шаблона, `null` — код не задан |
| `data.templates.{id}.region` | string | Регион шаблона, например `ru` |
| `data.templates.{id}.sort` | string | Порядок в списке |
| `data.templates.{id}.createTime` | string | Дата создания в ISO 8601 |
| `data.templates.{id}.updateTime` | string | Дата изменения в ISO 8601 |
| `data.templates.{id}.createdBy` | string | ID создавшего сотрудника. Список: [`GET /v1/users`](/docs/entities/users) |
| `data.templates.{id}.updatedBy` | string | ID изменившего сотрудника. Список: [`GET /v1/users`](/docs/entities/users) |
| `data.templates.{id}.moduleId` | string | Модуль-владелец, в этом разделе всегда `crm` |
| `data.templates.{id}.numeratorId` | string | ID нумератора, который присваивает номера документам |
| `data.templates.{id}.withStamps` | string | Печати и подписи: `Y` / `N` |
| `data.templates.{id}.productsTableVariant` | string | Вариант таблицы товаров в документе |
| `data.templates.{id}.isDeleted` | string | Помечен ли шаблон удалённым: `Y` / `N` |
| `data.templates.{id}.isDefault` | string | Шаблон по умолчанию: `Y` / `N` |
| `data.templates.{id}.download` | string | Адрес скачивания файла шаблона в веб-интерфейсе Битрикс24. Для скачивания через API используйте `downloadMachine` |
| `data.templates.{id}.downloadMachine` | string | Ссылка на скачивание файла шаблона через API Вайбкод — [`GET /v1/crm-document-templates/:id/download`](/docs/entities/crm-document-templates/download) |
| `meta.total` | number | Количество шаблонов под фильтром |
| `meta.start` | number | Значение `start` из запроса |
| `meta.next` | number \| null | Значение `start` для следующей порции. `null` — шаблонов больше нет |

## Пример ответа

Показаны 3 шаблона из 11.

```json
{
  "success": true,
  "data": {
    "templates": {
      "87": {
        "id": "87",
        "active": "Y",
        "name": "Адреса",
        "code": null,
        "region": "ru",
        "sort": "366",
        "createTime": "2022-11-23T14:42:12+03:00",
        "updateTime": "2023-01-17T11:36:04+03:00",
        "createdBy": "1",
        "updatedBy": "1",
        "moduleId": "crm",
        "numeratorId": "1",
        "withStamps": "Y",
        "productsTableVariant": "",
        "isDeleted": "N",
        "isDefault": "N",
        "download": "https://example.bitrix24.ru/bitrix/services/main/ajax.php?action=crm.documentgenerator.template.download&SITE_ID=s1&id=87",
        "downloadMachine": "https://vibecode.bitrix24.tech/v1/crm-document-templates/87/download"
      },
      "129": {
        "id": "129",
        "active": "Y",
        "name": "Ссылка на товар",
        "code": null,
        "region": "ru",
        "sort": "900",
        "createTime": "2023-05-16T18:43:02+03:00",
        "updateTime": "2023-05-16T18:49:36+03:00",
        "createdBy": "1",
        "updatedBy": "1",
        "moduleId": "crm",
        "numeratorId": "1",
        "withStamps": "Y",
        "productsTableVariant": "",
        "isDeleted": "N",
        "isDefault": "N",
        "download": "https://example.bitrix24.ru/bitrix/services/main/ajax.php?action=crm.documentgenerator.template.download&SITE_ID=s1&id=129",
        "downloadMachine": "https://vibecode.bitrix24.tech/v1/crm-document-templates/129/download"
      },
      "249": {
        "id": "249",
        "active": "Y",
        "name": "Демонстрационная реализация товара",
        "code": null,
        "region": "ru",
        "sort": "500",
        "createTime": "2026-08-19T14:55:23+03:00",
        "updateTime": "2026-08-19T14:55:23+03:00",
        "createdBy": "1",
        "updatedBy": null,
        "moduleId": "crm",
        "numeratorId": "1095",
        "withStamps": "N",
        "productsTableVariant": "",
        "isDeleted": "N",
        "isDefault": "N",
        "download": "https://example.bitrix24.ru/bitrix/services/main/ajax.php?action=crm.documentgenerator.template.download&SITE_ID=s1&id=249",
        "downloadMachine": "https://vibecode.bitrix24.tech/v1/crm-document-templates/249/download"
      }
    }
  },
  "meta": {
    "total": 11,
    "start": 0,
    "next": null
  }
}
```

## Пример ответа при ошибке

400 — `start` не является неотрицательным целым числом:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_START",
    "message": "start must be one non-negative safe integer."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_START` | `start` не является неотрицательным целым числом или передан в запросе больше одного раза |
| 400 | `INVALID_PARAMS` | `select` пустой, либо `filter` или `order` переданы не объектом |
| 400 | `UNKNOWN_FILTER_FIELD` | Фильтр по полю, которое не принимается, например `filter[foo]` |
| 422 | `BITRIX_ERROR` | Сортировка по полю, которое не принимается, например `order[ID]`. В `error.b24Code` приходит `INVALID_ARG_VALUE` |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `crm` |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |
| 429 | `RATE_LIMITED` | Битрикс24 ограничил частоту запросов к порталу. Повторите после срока из заголовка `Retry-After` |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Привязки и доступы — только в ответе по одному шаблону.** В элементах списка нет полей `entityTypeId` и `users`. Типы записей, к которым привязан шаблон, и коды доступа возвращает [Получить шаблон документа CRM](/docs/entities/crm-document-templates/get).

## Смотрите также

- [Получить шаблон документа CRM](/docs/entities/crm-document-templates/get)
- [Получить шаблоны для записи CRM](/docs/entities/crm-document-templates/available)
- [Создать шаблон документа CRM](/docs/entities/crm-document-templates/create)
- [Скачать шаблон](/docs/entities/crm-document-templates/download)
- [Шаблоны документов CRM](/docs/entities/crm-document-templates)
- [Синтаксис фильтрации](/docs/filtering)
