#Поиск шаблонов

POST /v1/doc-templates/search

Возвращает шаблоны документов портала по фильтру, переданному в теле запроса. Поиск рассчитан на большие выборки с разбиением по датам; для выборок до 5000 записей используйте GET /v1/doc-templates с параметрами в строке запроса.

#Поля запроса (body)

Поле Тип По умолч. Описание
filter object Фильтрация по полям шаблона. Список полей — GET /v1/doc-templates/fields.
Синтаксис фильтрации. Пример: {"filter": {"active": "Y"}}
select string[] Выборка полей: ["id", "name", "region"]
sort object Сортировка по полю: {"sort": {"id": "desc"}}
limit number 50 Количество записей (до 5000)
offset number 0 Смещение для пагинации
autoWindow boolean true Разбиение выборки по датам при фильтре с полями createTime / updateTime. Передайте false, чтобы отключить разбиение

#Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/doc-templates/search" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "region": "ru", "active": "Y" },
    "limit": 10,
    "select": ["id", "name", "region", "active"]
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/doc-templates/search" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "region": "ru", "active": "Y" },
    "limit": 10,
    "select": ["id", "name", "region", "active"]
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/doc-templates/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { region: 'ru', active: 'Y' },
    limit: 10,
    select: ['id', 'name', 'region', 'active'],
  }),
})

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

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/doc-templates/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { region: 'ru', active: 'Y' },
    limit: 10,
    select: ['id', 'name', 'region', 'active'],
  }),
})

const { success, data, meta } = await res.json()

#Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data array Массив шаблонов
data[].id number Идентификатор шаблона
data[].name string Название
data[].active string Доступность: Y / N
data[].code string | null Системный код шаблона
data[].region string Регион
data[].sort number Порядок в списке
data[].createTime string Дата создания (ISO 8601)
data[].updateTime string Дата изменения (ISO 8601)
data[].createdBy string Идентификатор создавшего сотрудника
data[].updatedBy string | null Идентификатор изменившего сотрудника
data[].moduleId string Модуль-источник шаблона
data[].fileId number Идентификатор файла на Диске
data[].bodyType string Формат тела документа
data[].numeratorId number Идентификатор нумератора
data[].withStamps string Печати и подписи: Y / N
data[].productsTableVariant string Вариант таблицы товаров в документе
data[].isDeleted boolean Помечен ли шаблон удалённым
data[].isDefault string Шаблон по умолчанию: Y / N
data[].users array Идентификаторы сотрудников, которым доступен шаблон
data[].download string Адрес скачивания документа
data[].downloadMachine string Адрес скачивания для программного доступа
meta.total number Количество записей, соответствующих фильтру
meta.hasMore boolean Есть ли ещё записи за пределами limit
meta.durationMs number Время выполнения запроса на стороне сервера, миллисекунды
meta.autoWindowed boolean Присутствует, когда выборка разбита по датам
meta.windowCount number Количество подзапросов при разбиении по датам

Полная схема полей шаблона — Поля шаблона.

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

JSON
{
  "success": true,
  "data": [
    {
      "id": 209,
      "active": "Y",
      "name": "Шаблон договора",
      "code": null,
      "region": "ru",
      "sort": 500,
      "createTime": "2026-05-12T09:03:38.000Z",
      "updateTime": "2026-05-12T09:03:38.000Z",
      "createdBy": "1",
      "updatedBy": null,
      "moduleId": "rest",
      "fileId": 9175,
      "bodyType": "Bitrix\\DocumentGenerator\\Body\\Docx",
      "numeratorId": 1,
      "withStamps": "N",
      "productsTableVariant": "",
      "isDeleted": false,
      "isDefault": "N",
      "users": ["U1"],
      "download": "/bitrix/services/main/ajax.php?action=documentgenerator.api.template.download&SITE_ID=s1&id=209",
      "downloadMachine": "https://<portal>/rest/1/<token>/documentgenerator.api.template.download/?token=<token>"
    },
    {
      "id": 211,
      "active": "Y",
      "name": "Шаблон счёта",
      "code": null,
      "region": "ru",
      "sort": 500,
      "createTime": "2026-05-12T09:04:38.000Z",
      "updateTime": "2026-05-12T09:04:38.000Z",
      "createdBy": "1",
      "updatedBy": null,
      "moduleId": "rest",
      "fileId": 5901,
      "bodyType": "Bitrix\\DocumentGenerator\\Body\\Docx",
      "numeratorId": 1,
      "withStamps": "N",
      "productsTableVariant": "",
      "isDeleted": false,
      "isDefault": "N",
      "users": ["U1"],
      "download": "/bitrix/services/main/ajax.php?action=documentgenerator.api.template.download&SITE_ID=s1&id=211",
      "downloadMachine": "https://<portal>/rest/1/<token>/documentgenerator.api.template.download/?token=<token>"
    }
  ],
  "meta": {
    "total": 2,
    "hasMore": false,
    "durationMs": 799
  }
}

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

400 — фильтр по несуществующему полю. Сообщение перечисляет доступные для фильтрации поля:

JSON
{
  "success": false,
  "error": {
    "code": "UNKNOWN_FILTER_FIELD",
    "message": "Unknown filter field 'bogusField' for entity 'doc-templates'. Available: id, name, numeratorId, region, code, moduleId, active, bodyType, withStamps, sort, users, fileId, file, isDeleted, createTime, updateTime, provider, download, downloadMachine, providers"
  }
}

#Ошибки

HTTP Код Описание
400 UNKNOWN_FILTER_FIELD Фильтр по несуществующему полю; сообщение перечисляет доступные поля
400 UNKNOWN_SORT_FIELD Сортировка по несуществующему полю в sort; сообщение перечисляет доступные поля
403 SCOPE_DENIED Ключу не хватает скоупа documentgenerator
401 TOKEN_MISSING У ключа нет настроенных токенов

Полный список общих ошибок API — Ошибки.

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

Разбиение по датам. При фильтре с полями createTime или updateTime выборка делится на подзапросы по интервалам дат, и в meta появляются autoWindowed и windowCount. Передайте autoWindow: false, чтобы выполнить один запрос без разбиения.

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