#Файлы

⚠️ Методы в процессе раскатки — выходят в обновлении note 26.100.0. Доступны не на всех порталах Битрикс24. Если на вашем портале метод ещё не доступен, API вернёт 422 METHOD_NOT_YET_AVAILABLE — это не ошибка интеграции, а признак того, что обновление пока не приехало на портал.

Загрузка вложений к документам Базы знаний. Все методы требуют скоуп note. OAuth-приложения добавляют заголовок Authorization: Bearer USER_SESSION_TOKEN к каждому вызову.

Вложение добавляется в два шага: POST /v1/note/documents/:documentId/files сохраняет файл и привязывает его к документу, а GET /v1/note/documents/:documentId/files/:id возвращает готовый фрагмент assetMarkdown для вставки в содержимое документа через PATCH /v1/note/documents/:id. Полный пример — Обзор Базы знаний.

#Загрузить файл

POST /v1/note/documents/:documentId/files

Сохраняет содержимое файла в Base64 и привязывает его к документу. Возвращает только идентификатор файла. Сам файл в содержимое документа не вставляется — для этого используйте assetMarkdown из ответа GET /v1/note/documents/:documentId/files/:id.

Параметр Где Тип Обяз. Описание
documentId path integer да Документ, к которому привязывается файл
fileName body string да Имя файла с расширением (определяет тип)
fileContent body string да Содержимое файла, закодированное в Base64

Размер запроса ограничен 40 МБ. Точный лимит размера файла задаёт Битрикс24 и проверяет на своей стороне.

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/note/documents/77/files \
  -H "X-Api-Key: YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"fileName": "diagram.png", "fileContent": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="}'
javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/note/documents/77/files', {
  method: 'POST',
  headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
  body: JSON.stringify({ fileName: 'diagram.png', fileContent: base64Content }),
})
const { success, data } = await res.json()
console.log(data.id) // fileId

#Поля ответа

data = { id } — идентификатор загруженного файла (он же fileId), передаётся в GET /v1/note/documents/:documentId/files/:id.

JSON
{ "success": true, "data": { "id": 5001 } }

#Ошибки

HTTP Код Когда
400 INVALID_PARAMS Не передан fileName или fileContent, либо documentId неверного типа
403 BITRIX_ACCESS_DENIED Нет права редактировать документ
403 WRITE_BLOCKED_READONLY_KEY Ключ в режиме «только чтение»
404 ENTITY_NOT_FOUND Документ не существует, архивный или в корзине
413 Размер запроса превышает 40 МБ
422 BITRIX_ERROR Размер файла превышает лимит, тип файла не разрешён, либо повреждён Base64 (текст в error.message)
422 METHOD_NOT_YET_AVAILABLE Обновление note 26.100.0 ещё не приехало на портал

#Получить метаданные файла

GET /v1/note/documents/:documentId/files/:id

Возвращает метаданные файла и готовый фрагмент assetMarkdown для вставки в содержимое документа. Чтение — доступно и ключу в режиме «только чтение».

Параметр Где Тип Обяз. Описание
documentId path integer да Документ, к которому привязан файл
id path integer да Идентификатор файла (из POST .../files)
Terminal
curl https://vibecode.bitrix24.tech/v1/note/documents/77/files/5001 \
  -H "X-Api-Key: YOUR_API_KEY"
javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/note/documents/77/files/5001', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data } = await res.json()
console.log(data.assetMarkdown) // "[[image fileId=5001]]"

#Поля ответа

Поле Тип Описание
id int Идентификатор файла
documentId int Документ, к которому привязан файл
name string Оригинальное имя файла
size int Размер файла в байтах
mimeType string MIME-тип, определённый при сохранении
assetType string Категория вложения: image, video или file
assetMarkdown string Готовый фрагмент [[<assetType> fileId=<id>]] для вставки в содержимое
JSON
{
  "success": true,
  "data": {
    "id": 5001,
    "documentId": 77,
    "name": "diagram.png",
    "size": 6321,
    "mimeType": "image/png",
    "assetType": "image",
    "assetMarkdown": "[[image fileId=5001]]"
  }
}

Чтобы вложение появилось в документе, добавьте assetMarkdown отдельной строкой в markdown и вызовите PATCH /v1/note/documents/:id. Фрагмент должен начинаться с начала строки, без других символов в той же строке. Тип пишется в нижнем регистре, fileId — целое положительное число.

#Ошибки

HTTP Код Когда
400 INVALID_PARAMS Не передан documentId или id, либо параметр неверного типа
403 SCOPE_DENIED Ключу не хватает скоупа note
404 ENTITY_NOT_FOUND Документ или файл не существуют, нет доступа, либо файл не привязан к документу
422 METHOD_NOT_YET_AVAILABLE Обновление note 26.100.0 ещё не приехало на портал

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