## Скачать DOCX документа

`GET /v1/documents/:id/download`

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

| Документ | Маршрут | Скоуп |
|----------|---------|-------|
| Документ приложения | `GET /v1/documents/:id/download` | `documentgenerator` |
| Документ записи CRM | `GET /v1/crm-documents/:id/download` | `crm` |

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `id` (path) | number | да | Идентификатор документа, положительное целое число. Документы приложения: [`GET /v1/documents`](/docs/entities/documents/list), документы записи CRM: [`GET /v1/crm-documents`](/docs/entities/documents/crm-list) |

Тело запроса не передаётся. Примеры ниже — для документа приложения. Для документа записи CRM замените в адресе `documents` на `crm-documents`.

## Примеры

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

```bash
curl --fail-with-body "https://vibecode.bitrix24.tech/v1/documents/2001/download" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -o document-2001.docx
```

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

```bash
curl --fail-with-body "https://vibecode.bitrix24.tech/v1/documents/2001/download" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -o document-2001.docx
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/documents/2001/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/documents/2001/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="document-2001.docx"` | Имя файла для сохранения в виде `document-<id>.docx`. Название документа в него не входит |

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

```http
HTTP/1.1 200 OK
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Disposition: attachment; filename="document-2001.docx"
Content-Length: 914

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

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

404 — документ не найден:

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

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | `id` не положительное целое число. Сообщение: `Document ID must be a positive integer.` |
| 404 | `ENTITY_NOT_FOUND` | Документа с таким `id` нет. Сообщение: `Document not found.` |
| 409 | `DOCUMENT_NOT_READY` | Только для документа записи CRM: у документа ещё нет файла DOCX. Повторите запрос через несколько секунд |
| 502 | `DOWNLOAD_FAILED` | Битрикс24 не отдал файл: ответил кодом ошибки, прислал JSON вместо файла, указал адрес вне портала или ответ не удалось дочитать. Для документа приложения — также если файл больше 10 МиБ |
| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос. Текст причины — в `error.message` |
| 403 | `BITRIX_ACCESS_DENIED` | Битрикс24 отказал в доступе к документу. Для документа записи CRM — также если записи, к которой он прикреплён, нет |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа маршрута: `documentgenerator` для документа приложения, `crm` для документа записи CRM |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `TOKEN_MISSING` | Ключу не сопоставлены токены — ключ OAuth-приложения вызван без пользовательской сессии |

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

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

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

**DOCX готов раньше PDF и изображения.** В первые секунды после создания документа маршруты PDF и изображения отвечают `409 DOCUMENT_NOT_READY`, а этот маршрут уже отдаёт файл.

**Поле `downloadUrlMachine` указывает на этот маршрут.** В ответах [`GET /v1/documents/:id`](/docs/entities/documents/get) и [`GET /v1/crm-documents/:id`](/docs/entities/documents/crm-get) поле содержит адрес маршрута для того же документа. Секретов доступа к Битрикс24 в ответах API нет.

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

- [Скачать PDF документа](/docs/entities/documents/pdf)
- [Скачать изображение документа](/docs/entities/documents/image)
- [Получить документ](/docs/entities/documents/get)
- [Получить CRM-документ](/docs/entities/documents/crm-get)
- [Документы](/docs/entities/documents)
