Перейти к содержимому
Главная

Загрузить файл

Загружает один файл в файловое пространство текущего пользователя. API поддерживает два способа загрузки:

  • multipart/form-data: загрузка локального файла.
  • application/json: загрузка base64-содержимого.

Один запрос может загрузить только один файл; для загрузки нескольких файлов выполните несколько запросов. При успешной загрузке API возвращает объект файла.

POST https://api.odirouter.ai/v1/files
ОграничениеЗначениеОписание
Размер одного файла40MBЕсли файл или декодированное base64-содержимое превышает лимит, API вернет 413 file_too_large
Срок хранения файла7 днейПосле истечения срока файл нельзя получить или скачать
Срок одного подписанного URL1 часЕсли URL истек, но файл еще доступен в течение 7 дней, можно снова запросить информацию о файле и получить новый URL; срок подписи не превысит оставшийся срок файла
Частота запросов10 запросов/минутуСтандартное ограничение частоты запросов для POST /v1/files

Используйте Bearer-аутентификацию с API Key:

Authorization: Bearer YOUR_API_KEY

Файлы принадлежат пользователю, связанному с текущим API Key. Платформа записывает API Key, которым создан файл, для аудита и статистики использования.

Окно терминала
curl --location "https://api.odirouter.ai/v1/files" \
--header "Authorization: Bearer YOUR_API_KEY" \
--form "file=@./reference.png"
Окно терминала
curl --location "https://api.odirouter.ai/v1/files" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"data": "iVBORw0KGgoAAAANSUhEUgAA...",
"mime_type": "image/png",
"filename": "reference.png"
}'
file file обязательно

Один файл для загрузки

При загрузке локального файла платформа использует исходное имя файла; например file=@./reference.png будет записан как reference.png

data string обязательно

Содержимое файла в base64

Поддерживается обычная base64-строка или data URL

mime_type string обязательно

MIME-тип файла, например image/png

Если data передан как data URL и MIME в data URL не совпадает с mime_type, API вернет 400 invalid_request

filename string

Имя файла, например reference.png

Если не передано, платформа сгенерирует имя автоматически

{
"id": "file_456",
"object": "file",
"filename": "reference.png",
"bytes": 345678,
"mime_type": "image/png",
"file_type": "image",
"source": "upload",
"dimensions": {
"width": 1024,
"height": 768
},
"storage_policy": "temporary",
"created_at": 1784256000,
"expires_at": 1784860800,
"url": "https://private.cdn.odirouter.ai/uploads/xxx.png?Expires=..."
}
{
"error": {
"message": "Invalid request parameters.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_request"
}
}
{
"error": {
"message": "File exceeds the size limit.",
"type": "invalid_request_error",
"param": "file",
"code": "file_too_large"
}
}
{
"error": {
"message": "user request rate limit exceeded (request id: 202607211234567890)",
"type": "api_error",
"code": "rate_limit_exceeded"
}
}
{
"error": {
"message": "Object storage service unavailable.",
"type": "api_error",
"code": "storage_unavailable"
}
}
ПолеТипОписание
idstringID файла в формате file_{id}
objectstringВсегда file
filenamestringИсходное имя файла; если имя не передано, его генерирует платформа
bytesintegerРазмер файла в байтах
mime_typestringMIME-тип файла
file_typestringТип файла. Возможные значения в ответе: image, audio, video, document, text
sourcestringИсточник файла. Для загрузки через этот API возвращается upload
dimensionsobject | nullРазмеры файла. Для JPEG, PNG и GIF возвращается ширина и высота; для остальных файлов или неподдерживаемых форматов изображений возвращается null
dimensions.widthintegerШирина в пикселях; возвращается только если dimensions не равен null
dimensions.heightintegerВысота в пикселях; возвращается только если dimensions не равен null
storage_policystringПолитика хранения. Сейчас всегда temporary
created_atintegerВремя создания, Unix timestamp в секундах
expires_atintegerВремя истечения, Unix timestamp в секундах. В текущей версии у всех файлов есть конкретное время истечения
urlstringЕдинственный внешний адрес для доступа к файлу. Это текущий краткоживущий подписанный URL со сроком действия и параметрами подписи; после истечения срока нужно снова запросить информацию о файле, чтобы получить новый адрес
MIMEfile_typedimensions
image/jpegimageВозвращает ширину и высоту
image/pngimageВозвращает ширину и высоту
image/gifimageВозвращает ширину и высоту
image/webpimagenull
audio/mpegaudionull
audio/wavaudionull
audio/mp4audionull
audio/webmaudionull
video/mp4videonull
video/quicktimevideonull
video/webmvideonull
application/pdfdocumentnull
text/plaintextnull
text/csvtextnull
application/jsontextnull
HTTP статусcodeОписание
400invalid_requestОшибка в параметрах запроса
400file_requiredВ запросе загрузки отсутствует поле file
400invalid_base64base64-содержимое пустое или не может быть декодировано
400unsupported_file_typeТип файла не поддерживается
413file_too_largeФайл превышает лимит размера
429rate_limit_exceededПревышен лимит частоты загрузки
500storage_unavailableСервис объектного хранилища недоступен