Файлы принадлежат пользователю и организации. Один пользователь получает 10 ГБ суммарно по всем своим организациям: 1 ГБ = 1000000000 байт. Квота включает карантин и незавершённое удаление. Предел объекта 50 МиБ = 52428800 байт.

  1. POST /v1/files: filename, mime_type, size_bytes, sha256 (64 строчных hex-символа).
  2. PUT точных байтов по upload.url с upload.headers. В браузере Content-Length выставляется автоматически по Blob. Ссылка действует до 300 секунд.
  3. POST /v1/files/ID/complete проверяет размер, SHA-256, сигнатуру типа и антивирус. При недоступном сканере файл остаётся закрыт; повтор complete допустим.
  4. GET /v1/files/ID/download выдаёт ссылку до 300 секунд, не дольше оставшегося срока хранения. GET /v1/files/ID/content возвращает проверенные байты с attachment и private, no-store.

Принимаются типы mime_type (расширение имени должно соответствовать типу):

Группа mime_type и расширение
Изображения image/png (.png), image/jpeg (.jpg, .jpeg), image/webp (.webp)
Аудио audio/wav и audio/x-wav (.wav), audio/mpeg (.mp3), audio/ogg (.ogg, .opus), audio/opus (.opus), audio/flac (.flac), audio/aac (.aac), audio/mp4 (.m4a), audio/webm (.webm)
Видео video/mp4 (.mp4), video/webm (.webm)
3D и голос model/gltf-binary (.glb), application/x-safetensors (.safetensors)
Документы application/pdf (.pdf), Word .docx, Excel .xlsx, text/plain (.txt, UTF-8), text/markdown (.md), text/csv (.csv)

Содержимое проверяется по сигнатуре типа и антивирусом; Word и Excel — ещё и по структуре пакета. Имя файла — до 180 символов, без пути, управляющих символов, пробелов по краям и точки в начале или в конце. HTML, SVG, произвольные архивы и загрузка по пользовательскому URL не принимаются. Результаты моделей приходят теми же файловыми типами и скачиваются так же; необработанный звук PCM — только как результат модели, его загрузить нельзя.

В Нейростудии документы для ранжирования и векторизации читаются прямо в браузере, а исходный файл сохраняется в «Хранилище» как входящая загрузка на 7 дней и затем удаляется автоматически. В разделе «Хранилище» такие файлы отмечены как «Входящая загрузка», а созданные моделями — как «Результат».

Хранение по умолчанию 7 дней; точное время в retentionUntil. DELETE /v1/files/ID закрывает доступ. Если ссылка PUT ещё действует, квота остаётся занятой до её истечения и удаления объекта. Готовый файл нельзя перезаписать старой ссылкой PUT.

GET /v1/files и GET /v1/files/quota показывают метаданные и объём. Пагинация файлов: limit 1–100, after=next_cursor. Ссылки не следует писать в журналы или передавать посторонним: до истечения срока они дают доступ к файлу.