## Скачать шаблон документа CRM

`GET /v1/crm-document-templates/:id/download`

Скачивает исходный файл .docx шаблона документа CRM через Вайбкод: авторизацию в Битрикс24 платформа добавляет к запросу сама.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `id` (path) | number | да | Идентификатор шаблона. Список: [`GET /v1/crm-document-templates`](/docs/entities/crm-document-templates/list) |

Тело запроса не передаётся.

## Примеры

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

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

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

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

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

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

if (!res.ok) {
  const body = await res.json()
  throw new Error(body.error?.code ?? String(res.status))
}

const blob = await res.blob()
```

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

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

if (!res.ok) {
  const body = await res.json()
  throw new Error(body.error?.code ?? String(res.status))
}

const blob = await res.blob()
```

## Заголовки ответа

При успехе возвращается HTTP-статус `200 OK`, тело ответа — байты файла .docx.

| Заголовок | Пример значения | Описание |
|-----------|-----------------|----------|
| `Content-Type` | `application/vnd.openxmlformats-officedocument.wordprocessingml.document` | Тип содержимого, который вернул Битрикс24 для файла шаблона |
| `Content-Disposition` | `attachment; filename="template-87.docx"` | Имя файла для сохранения. Строится из `id` шаблона в виде `template-<id>.docx`, название шаблона в него не входит |

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

```http
HTTP/1.1 200 OK
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Disposition: attachment; filename="template-87.docx"
Transfer-Encoding: chunked

<двоичное содержимое .docx, 10872 байта, начинается с PK>
```

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

404 — шаблон не найден:

```json
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "CRM template not found."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | `id` не положительное целое число. Сообщение: `Template ID must be a positive integer.` |
| 404 | `ENTITY_NOT_FOUND` | Шаблона с таким `id` нет или он принадлежит не модулю CRM. Сообщение: `CRM template not found.` |
| 404 | `ENTITY_NOT_FOUND` | Шаблон найден, но адреса для скачивания у него нет. Сообщение: `CRM template download not found.` |
| 502 | `DOWNLOAD_FAILED` | Битрикс24 не отдал файл: ответил кодом ошибки, например `Bitrix24 returned 403`, или указал адрес вне портала либо без HTTPS |
| 422 | `BITRIX_ERROR` | Битрикс24 отклонил чтение шаблона. Текст причины — в `error.message` |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `crm` |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |
| 429 | `RATE_LIMITED` | Битрикс24 ограничил частоту запросов к порталу. Повторите после срока из заголовка `Retry-After` |

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

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

**Ключ только для чтения подходит.** Скачивание не считается записью, поэтому ключ без права записи получает файл так же, как ключ с полным доступом.

**Поле `downloadMachine` ведёт сюда.** В ответах [`GET /v1/crm-document-templates/:id`](/docs/entities/crm-document-templates/get) и [`GET /v1/crm-document-templates`](/docs/entities/crm-document-templates/list) это поле содержит адрес этого эндпоинта.

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

- [Получить шаблон документа CRM](/docs/entities/crm-document-templates/get)
- [Список шаблонов документов CRM](/docs/entities/crm-document-templates/list)
- [Обновить шаблон документа CRM](/docs/entities/crm-document-templates/update)
- [Шаблоны документов CRM](/docs/entities/crm-document-templates)
