Для AI-агентов: markdown этой страницы — /docs-content/storage/objects/get.md индекс документации — /llms.txt

Скачать объект

GET /v1/storage/objects/:key

Возвращает содержимое объекта или временную ссылку для скачивания. Поведение определяется параметрами запроса: по умолчанию — перенаправление, ?inline=true — содержимое в теле ответа.

Параметры

Путь

Параметр Тип Описание
key string Ключ объекта. Символы / в ключе необходимо кодировать: users%2F42%2Favatar.png

Запрос

Параметр Тип По умолч. Описание
inline boolean false true или 1 — вернуть содержимое непосредственно в теле ответа (HTTP 200) вместо перенаправления
inline_render boolean false Только совместно с ?inline=true. true или 1 — убирает заголовок Content-Disposition, браузер отображает файл вместо скачивания
download string — Имя файла. При переходе по ссылке браузер предложит сохранить файл с указанным именем

Примеры

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

Terminal
curl -L "https://vibecode.bitrix24.tech/v1/storage/objects/reports%2F2024%2Fannual.pdf" \
  -H "X-Api-Key: YOUR_API_KEY" \
  --output annual.pdf

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

Terminal
curl -L "https://vibecode.bitrix24.tech/v1/storage/objects/reports%2F2024%2Fannual.pdf" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  --output annual.pdf

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

javascript
// Получить временную ссылку (без следования по перенаправлению)
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/storage/objects/reports%2F2024%2Fannual.pdf',
  {
    redirect: 'manual',
    headers: { 'X-Api-Key': 'YOUR_API_KEY' },
  }
)
const url = res.headers.get('location') // временная ссылка: запрошено 10 минут, подпись может истечь раньше

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

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/storage/objects/reports%2F2024%2Fannual.pdf',
  {
    redirect: 'manual',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
    },
  }
)
const url = res.headers.get('location')

Ответ

Формат ответа зависит от параметров запроса.

По умолчанию — перенаправление

Возвращает 302 Found с временной ссылкой в заголовке Location. Запрошенный срок ссылки — 10 минут, подпись может истечь раньше: переходите по ней сразу, не сохраняя. Браузеры следуют перенаправлению автоматически; в серверном коде используйте redirect: 'manual' и читайте response.headers.get('location').

HTTP/1.1 302 Found
Location: <временная ссылка>
Cache-Control: no-store

?inline=true — содержимое в теле ответа

Возвращает 200 OK с содержимым объекта непосредственно в теле ответа. По умолчанию браузер сохраняет файл (заголовок Content-Disposition: attachment). Чтобы браузер отобразил файл вместо скачивания, добавьте &inline_render=true.

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 204800
ETag: "e3b0c44298fc1c149afbf4c8996fb92"
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="annual.pdf"

<содержимое объекта>

?download=<имя> — скачивание с заданным именем

Возвращает 302 Found. При переходе по ссылке из заголовка Location хранилище отдаёт файл с заголовком Content-Disposition: attachment; filename="<имя>", поэтому браузер предложит сохранить его с указанным именем.

HTTP/1.1 302 Found
Location: <временная ссылка с указанным именем файла>
Cache-Control: no-store

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

404 — объект не найден:

JSON
{
  "success": false,
  "error": {
    "code": "STORAGE_OBJECT_NOT_FOUND",
    "message": "Object reports/2024/annual.pdf not found"
  }
}

Ошибки

Метод ограничен 600 запросами в минуту на портал. Все API-ключи портала делят этот бюджет, а лимит делится между активными репликами платформы. Действующее значение приходит в x-ratelimit-limit; после 429 повторите запрос через время из Retry-After.

HTTP Код Описание
401 MISSING_API_KEY API-ключ не передан
403 STORAGE_SCOPE_REQUIRED У API-ключа нет скоупа vibe:storage
404 STORAGE_OBJECT_NOT_FOUND Объект с указанным ключом не найден
410 STORAGE_OBJECT_DELETED Объект был удалён
429 RATE_LIMITED Исчерпан бюджет чтения объекта для портала
502 STORAGE_OBJECT_STREAM_FAILED Ошибка при передаче содержимого объекта (только для режима ?inline=true)

Полный список общих ошибок — Ошибки.

  • Ключ приложения без сессии сотрудника видит только общий файл. Сотрудники приложения занимают логические имена независимо друг от друга, поэтому под одним именем может лежать несколько объектов. Запрос ключом приложения БЕЗ заголовка Authorization адресует общий файл приложения; если под этим именем есть только персональные файлы сотрудников, ответ — 404 STORAGE_OBJECT_NOT_FOUND. Чтобы обратиться к файлу сотрудника, передайте его сессию в Authorization: Bearer либо используйте идентификатор объекта.

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