Загрузка файлов
Файлы для сообщений и переменных старта: загрузка, статус обработки и получение содержимого. Загруженный файл принадлежит user_id, который его загрузил, и доступен только ему.
Загрузка файла
POST /v1/files
Content-Type: multipart/form-data
Поля формы
Поле | Тип | Обязательное | Описание |
| file | да | Файл. У части файла должен быть указан тип содержимого ( |
| string | да | Идентификатор пользователя |
| string | нет | Имя переменной старта типа |
При загрузке проверяются только размер и формат файла:
Размер. Действует предел для типа файла из настроек агента (
file_upload.max_size_mb), а если загрузка файлов у агента выключена — предел платформы. Сверх предела —413с кодомfile_too_large, текст ошибки называет предел. Собственный предел файловой переменной проверяется позже — при отправке первого сообщения.Формат. Формат, который платформа не принимает, и файл без указанного типа содержимого —
415с кодомunsupported_file_type.Один файл. За один запрос загружается один файл; несколько файлов в поле
file—400с кодомtoo_many_files.
Разрешены ли файлы этого типа агенту и сколько их можно приложить, API проверяет позже — при отправке сообщения. Поэтому файл загружается, даже если загрузка файлов у агента сейчас выключена.
Какие форматы и размеры принимает агент, задаётся в его настройке Загрузка файлов.
Ответ
201 — объект File:
Поле | Тип | Описание |
| string | Идентификатор файла — передайте его в |
| string | Имя файла |
| string | Расширение |
| string | Тип содержимого или |
| integer | Размер в байтах |
| string |
|
| string | Время загрузки |
Обработка нужна видеофайлам, если к агенту подключено распознавание речи (Sber Salute Speech): платформа извлекает из видео звуковую дорожку. Остальные файлы, в том числе видео без распознавания речи, сразу получают статус ready.
Видео, которое ещё обрабатывается, можно отправить в сообщении: агент подождёт окончания обработки ограниченное время. Если обработка не успела, агент скажет об этом в ответе, а видео можно отправить снова, когда его статус станет ready.
curl https://api.evo-ai.ru/v1/files \ -H "Authorization: Bearer evo_agent_..." \ -F "user_id=user-42" \ -F "file=@contract.pdf;type=application/pdf"
{ "id": "e2b7c4a1-9d38-4f60-8a15-3c6e0b9d2f47", "name": "contract.pdf", "extension": "pdf", "mime_type": "application/pdf", "size": 482133, "status": "ready", "created_at": "2026-09-24T10:14:31Z" }
Ошибки
HTTP | Код | Когда |
|
| Поле |
|
| В поле |
|
| Файл больше допустимого размера |
|
| Формат не принимается или не указан тип содержимого |
Статус файла
GET /v1/files/{file_id}/status?user_id={user_id}
Ответ
200 — объект FileStatus:
Поле | Тип | Описание |
| string |
|
| object | При |
Код | Когда |
| В видео нет аудиодорожки |
| Видеофайл повреждён |
| Аудиодорожка длиннее допустимого |
| Обработка не уложилась в отведённое время |
| Обработка не удалась по иной причине |
Если видео не удалось обработать, агент ответит, что не может прочитать файл, — отправка сообщения при этом ошибкой не завершается.
Ошибки
HTTP | Код | Когда |
|
| Файла нет, или этот |
Содержимое файла
GET /v1/files/{file_id}/content
Возвращает сам файл: загруженный этим user_id или прикреплённый к сообщению в его диалогах, в том числе созданный агентом.
Параметры запроса
Параметр | Тип | Обязательный | Описание |
| string | да | Идентификатор пользователя |
| boolean | нет |
|
Ответ
200 — содержимое файла. С download=false файл приходит со своим типом содержимого, с download=true — как application/octet-stream для скачивания. HTML-файлы всегда отдаются как вложение для скачивания.
Ошибки
HTTP | Код | Когда |
|
| Файла нет, или этот |