[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Ffiles\u002Fdownload":3,"docs-tabs-entities\u002Ffiles\u002Fdownload":6},{"content":4,"lastmod":5},"## Скачать файл\n\n`GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`\n\nСкачивает содержимое файла через прокси Вайбкода с автоматической авторизацией. В отличие от поля `downloadUrl` в ответе `GET \u002Fv1\u002Ffiles\u002F:id`, этот эндпоинт добавляет авторизацию при каждом вызове — токен не нужно извлекать и подставлять вручную. Ответ — бинарный поток с заголовком `Content-Disposition`, браузеры предлагают сохранить файл автоматически.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `id` | path | number | да | ID файла. Получить: `GET \u002Fv1\u002Ffiles` или `GET \u002Fv1\u002Ffiles\u002F:id` |\n\nТело запроса пустое.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\n# Сохранить в файл с исходным именем из заголовка Content-Disposition\ncurl -OJ -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload\n\n# Указать имя файла явно\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload \\\n  -o myfile.pdf\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -OJ \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst fileId = 205\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F${fileId}\u002Fdownload`,\n  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }\n)\n\nif (!res.ok) {\n  const body = await res.json()\n  throw new Error(body.error?.code ?? String(res.status))\n}\n\n\u002F\u002F Сохранить blob в браузере\nconst blob = await res.blob()\nconst url = URL.createObjectURL(blob)\nconst a = document.createElement('a')\na.href = url\na.download = res.headers.get('Content-Disposition')?.match(\u002Ffilename=\"(.+?)\"\u002F)?.[1] ?? 'file'\na.click()\nURL.revokeObjectURL(url)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst fileId = 205\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F${fileId}\u002Fdownload`,\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n\nif (!res.ok) {\n  const body = await res.json()\n  throw new Error(body.error?.code ?? String(res.status))\n}\n\nconst blob = await res.blob()\n```\n\n## Заголовки ответа\n\nПри успехе возвращается бинарное содержимое файла (HTTP 200). Секции `## Поля ответа` нет — тело ответа не является JSON.\n\n| Заголовок | Пример значения | Описание |\n|-----------|-----------------|----------|\n| `Content-Type` | `application\u002Fpdf` | Тип содержимого. Зависит от типа файла: `text\u002Fplain`, `image\u002Fpng`, `application\u002Fvnd.openxmlformats-officedocument.spreadsheetml.sheet` и т. д. |\n| `Content-Disposition` | `attachment; filename=\"report.pdf\"` | Имя файла для сохранения. Браузеры используют его автоматически при скачивании |\n| `Content-Length` | `31232` | Размер файла в байтах. Передаётся, если известен из метаданных |\n\n## Пример ответа при ошибке\n\n404 — файл не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Could not find entity with id '99999999'.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный ключ |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `disk` |\n| 404 | `ENTITY_NOT_FOUND` | Файла с таким `id` не существует или он недоступен ключу |\n| 404 | `DOWNLOAD_URL_NOT_FOUND` | У файла нет адреса для скачивания |\n| 502 | `DOWNLOAD_FAILED` | Битрикс24 вернул ошибку при проксировании (например, `403`) |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Авторизация добавляется автоматически.** Для ключей OAuth-приложений Вайбкод добавляет токен авторизации к запросу при каждом вызове. Для ключей типа вебхук токен уже встроен в адрес — Вайбкод использует адрес как есть.\n- **Поле `downloadUrl` из `GET \u002Fv1\u002Ffiles\u002F:id` — временное.** Этот эндпоинт (`\u002Fdownload`) — стабильный способ скачивания: он каждый раз получает актуальный адрес и добавляет авторизацию. Обращение напрямую по сохранённому `downloadUrl` может завершиться ошибкой, когда токен устареет.\n\n## Смотрите также\n\n- [Получить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fget) — `GET \u002Fv1\u002Ffiles\u002F:id`\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist) — `GET \u002Fv1\u002Ffiles`\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n","2026-07-01",{}]