Для AI-агентов: markdown этой страницы — /docs-content/entities/doc-templates/create.md индекс документации — /llms.txt

Создать шаблон

POST /v1/doc-templates

Создаёт пригодный для генерации документов шаблон из файла .docx. Передайте ровно один источник: содержимое файла строкой base64 в file или ID объекта Диска в fileId. Платформа скачивает файл с Диска и импортирует его содержимое тем же способом, что и file.

Для обоих вариантов ключу нужен скоуп documentgenerator. Вариант с fileId дополнительно требует disk, потому что платформа читает объект Диска.

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

Поле Тип Обяз. Описание
name string да Название шаблона
numeratorId number да Идентификатор нумератора
region string да Регион, например ru
file string одно из двух Содержимое файла .docx в виде строки base64. Достаточно скоупа documentgenerator
fileId number | string одно из двух Положительный ID объекта Диска. Дополнительно нужен скоуп disk; десятичная строка принимается для совместимости
code string нет Символьный код шаблона
active string нет Активность шаблона: "Y" или "N"
withStamps string нет Использовать печати и подписи: "Y" или "N"
sort number нет Индекс сортировки
users array нет Идентификаторы сотрудников, которым доступен шаблон

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/doc-templates" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Шаблон договора",
    "numeratorId": 1,
    "region": "ru",
    "file": "<base64-содержимое .docx>"
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/doc-templates" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Шаблон договора",
    "numeratorId": 1,
    "region": "ru",
    "file": "<base64-содержимое .docx>"
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/doc-templates', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Шаблон договора',
    numeratorId: 1,
    region: 'ru',
    file: '<base64-содержимое .docx>',
  }),
})

const { success, data } = await res.json()
console.log('ID шаблона:', data.id)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/doc-templates', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Шаблон договора',
    numeratorId: 1,
    region: 'ru',
    file: '<base64-содержимое .docx>',
  }),
})

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

Чтобы использовать файл с Диска, сначала загрузите .docx через POST /v1/files/upload, затем передайте полученный id в поле fileId вместо file в одном из примеров выше. Для такого запроса ключ должен содержать скоупы documentgenerator и disk.

Поля ответа

Возвращается полный объект созданного шаблона. Статус ответа — 201.

Поле Тип Описание
id number Идентификатор созданного шаблона
name string Название шаблона
region string Регион
code string Символьный код шаблона
active string Активность: "Y" или "N"
moduleId string Идентификатор модуля-источника шаблона
numeratorId number Идентификатор нумератора
withStamps string Использование печатей и подписей: "Y" или "N"
providers object Сопоставление поставщиков данных шаблона
users object Сопоставление идентификаторов пользователей, которым доступен шаблон
isDeleted boolean Помечен ли шаблон удалённым
sort number Индекс сортировки
createTime string Дата создания (ISO 8601)
updateTime string Дата последнего изменения (ISO 8601)
download string Адрес скачивания собранного документа из шаблона
downloadMachine string Адрес скачивания с токеном для программного доступа

Если в ответе есть fileId, это ID файла во внутреннем реестре Генератора документов, а не переданный ID объекта Диска. Не используйте его в эндпоинтах /v1/files.

Лимиты

  • Максимальный размер JSON-тела — 3 МиБ.
  • Максимальный размер .docx — 2 МиБ после декодирования file или скачивания fileId.
  • При превышении любого из лимитов возвращается 413 PAYLOAD_TOO_LARGE до создания шаблона.

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

JSON
{
  "success": true,
  "data": {
    "id": 209,
    "name": "Шаблон договора",
    "region": "ru",
    "code": null,
    "download": "/bitrix/services/main/ajax.php?action=documentgenerator.api.template.download&SITE_ID=s1&id=209",
    "active": "Y",
    "moduleId": "rest",
    "numeratorId": 1,
    "withStamps": "N",
    "providers": {
      "bitrix\\documentgenerator\\dataprovider\\rest": "bitrix\\documentgenerator\\dataprovider\\rest"
    },
    "users": {
      "U1": "U1"
    },
    "isDeleted": false,
    "sort": 500,
    "createTime": "2026-05-12T09:03:38.000Z",
    "updateTime": "2026-05-12T09:03:38.000Z",
    "downloadMachine": "https://<portal>/rest/1/<token>/documentgenerator.api.template.download/?token=<token>"
  }
}

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

400 — не передан файл:

JSON
{
  "success": false,
  "error": {
    "code": "MISSING_FILE_OR_FILE_ID",
    "message": "POST /v1/doc-templates requires exactly one source: \"file\" with base64-encoded .docx content, or \"fileId\" with a Disk object ID (requires disk scope)."
  }
}

Ошибки

HTTP Код Описание
400 MISSING_FILE_OR_FILE_ID Не передан ни file, ни fileId
400 CONFLICTING_FILE_FIELDS Переданы и file, и fileId
400 MISSING_REQUIRED_FIELD Отсутствует name, numeratorId или region
400 INVALID_PARAMS name/region не строка, numeratorId не положительное целое либо fileId не является положительным безопасным целым ID
400 READONLY_FIELD В теле передано поле только для чтения — например модуль-владелец moduleId, который проставляет платформа
415 UNSUPPORTED_MEDIA_TYPE Запрос отправлен с multipart/form-data
413 PAYLOAD_TOO_LARGE JSON-тело больше 3 МиБ либо файл после декодирования/скачивания больше 2 МиБ
403 SCOPE_DENIED Ключу не хватает documentgenerator либо для варианта с fileId дополнительного скоупа disk
404 DOWNLOAD_URL_NOT_FOUND Для объекта Диска не получен адрес скачивания
502 DOWNLOAD_FAILED Скачать файл с Диска не удалось; ответ не раскрывает адрес скачивания и текст сетевой ошибки
401 TOKEN_MISSING У ключа нет настроенных токенов

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

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