> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kvantora.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Приватные файлы

> Загрузка, антивирусная проверка, квота и срок хранения.

Файлы принадлежат пользователю и организации. Один пользователь получает 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.

Принимаются PNG/JPEG/WebP, WAV/MP3, MP4, PDF и UTF-8 TXT. Имя не может содержать путь, управляющие символы или скрытое имя с точкой в начале. HTML, SVG, архивы и произвольная загрузка по пользовательскому URL не принимаются.

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

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