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

POST /v1/doc-templates

Создаёт шаблон документа из файла .docx. Файл передаётся одним из двух способов:

  • file — содержимое .docx в виде строки base64;
  • fileId — идентификатор файла, заранее загруженного на Диск.

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

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

* Поля file и fileId взаимоисключающие: передаётся одно из двух.

Чтобы получить fileId, загрузите файл .docx через POST /v1/files/upload — значение id из ответа используйте как fileId.

#Примеры

#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",
    "fileId": 9175
  }'

#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",
    "fileId": 9175
  }'

#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',
    fileId: 9175,
  }),
})

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',
    fileId: 9175,
  }),
})

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

Альтернатива — передать содержимое файла .docx напрямую в поле file (base64):

JSON
{
  "name": "Шаблон договора",
  "numeratorId": 1,
  "region": "ru",
  "file": "<base64-содержимое .docx>"
}

#Поля ответа

Возвращается полный объект созданного шаблона. Статус ответа — 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 Адрес скачивания с токеном для программного доступа

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

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 either \"file\" (base64-encoded .docx content) or \"fileId\" (Disk file ID). Neither was provided."
  }
}

#Ошибки

HTTP Код Описание
400 MISSING_FILE_OR_FILE_ID Не передан ни file, ни fileId
400 CONFLICTING_FILE_FIELDS Переданы и file, и fileId
400 MISSING_REQUIRED_FIELD Отсутствует name, numeratorId или region
415 UNSUPPORTED_MEDIA_TYPE Запрос отправлен с multipart/form-data
413 FST_ERR_CTP_BODY_TOO_LARGE Тело запроса в формате multipart/form-data содержит данные
403 SCOPE_DENIED Ключу не хватает скоупа documentgenerator
401 TOKEN_MISSING У ключа нет настроенных токенов

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

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