[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-storage\u002Fobjects\u002Fget":3,"docs-tabs-storage\u002Fobjects\u002Fget":6},{"content":4,"lastmod":5},"## Скачать объект\n\n`GET \u002Fv1\u002Fstorage\u002Fobjects\u002F:key`\n\nВозвращает содержимое объекта или временную ссылку для скачивания. Поведение определяется параметрами запроса: по умолчанию — перенаправление, `?inline=true` — содержимое в теле ответа.\n\n## Параметры\n\n**Путь**\n\n| Параметр | Тип | Описание |\n|----------|-----|---------|\n| `key` | string | Ключ объекта. Символы `\u002F` в ключе необходимо кодировать: `users%2F42%2Favatar.png` |\n\n**Запрос**\n\n| Параметр | Тип | По умолч. | Описание |\n|----------|-----|-----------|---------|\n| `inline` | boolean | `false` | `true` или `1` — вернуть содержимое непосредственно в теле ответа (HTTP 200) вместо перенаправления |\n| `inline_render` | boolean | `false` | Только совместно с `?inline=true`. `true` или `1` — убирает заголовок `Content-Disposition`, браузер отображает файл вместо скачивания |\n| `download` | string | — | Имя файла. При переходе по ссылке браузер предложит сохранить файл с указанным именем |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -L \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  --output annual.pdf\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -L \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  --output annual.pdf\n```\n\n### JavaScript — личный ключ\n\n```javascript\n\u002F\u002F Получить временную ссылку (без следования по перенаправлению)\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf',\n  {\n    redirect: 'manual',\n    headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n  }\n)\nconst url = res.headers.get('location') \u002F\u002F временная ссылка, действует 10 минут\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf',\n  {\n    redirect: 'manual',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\nconst url = res.headers.get('location')\n```\n\n## Ответ\n\nФормат ответа зависит от параметров запроса.\n\n**По умолчанию — перенаправление**\n\nВозвращает `302 Found` с временной ссылкой в заголовке `Location`. Ссылка действует 10 минут. Браузеры следуют перенаправлению автоматически; в серверном коде используйте `redirect: 'manual'` и читайте `response.headers.get('location')`.\n\n```\nHTTP\u002F1.1 302 Found\nLocation: \u003Cвременная ссылка>\nCache-Control: no-store\n```\n\n**`?inline=true` — содержимое в теле ответа**\n\nВозвращает `200 OK` с содержимым объекта непосредственно в теле ответа. По умолчанию браузер сохраняет файл (заголовок `Content-Disposition: attachment`). Чтобы браузер отобразил файл вместо скачивания, добавьте `&inline_render=true`.\n\n```\nHTTP\u002F1.1 200 OK\nContent-Type: application\u002Fpdf\nContent-Length: 204800\nETag: \"e3b0c44298fc1c149afbf4c8996fb92\"\nX-Content-Type-Options: nosniff\nContent-Disposition: attachment; filename=\"annual.pdf\"\n\n\u003Cсодержимое объекта>\n```\n\n**`?download=\u003Cимя>` — скачивание с заданным именем**\n\nВозвращает `302 Found`. При переходе по ссылке из заголовка `Location` хранилище отдаёт файл с заголовком `Content-Disposition: attachment; filename=\"\u003Cимя>\"`, поэтому браузер предложит сохранить его с указанным именем.\n\n```\nHTTP\u002F1.1 302 Found\nLocation: \u003Cвременная ссылка с указанным именем файла>\nCache-Control: no-store\n```\n\n## Пример ответа при ошибке\n\n404 — объект не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"STORAGE_OBJECT_NOT_FOUND\",\n    \"message\": \"Object reports\u002F2024\u002Fannual.pdf not found\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 401 | `MISSING_API_KEY` | API-ключ не передан |\n| 403 | `STORAGE_SCOPE_REQUIRED` | У API-ключа нет скоупа `vibe:storage` |\n| 404 | `STORAGE_OBJECT_NOT_FOUND` | Объект с указанным ключом не найден |\n| 410 | `STORAGE_OBJECT_DELETED` | Объект был удалён |\n| 502 | `STORAGE_OBJECT_STREAM_FAILED` | Ошибка при передаче содержимого объекта (только для режима `?inline=true`) |\n\nПолный список общих ошибок — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Объекты](\u002Fdocs\u002Fstorage\u002Fobjects)\n- [Список объектов](\u002Fdocs\u002Fstorage\u002Fobjects\u002Flist)\n- [Метаданные объекта](\u002Fdocs\u002Fstorage\u002Fobjects\u002Fhead)\n- [Загрузка](\u002Fdocs\u002Fstorage\u002Fupload)\n","2026-06-16",{}]