По возможностям

Загрузка файлов

Используйте загрузку файлов платформы, если у клиента есть только локальное изображение, видео, аудио, PDF, таблица или другой файл. API возвращает временный адрес для загрузки и постоянный public_url; детали реализации хранилища от клиента скрыты.

#URL, загрузка или Base64

Что есть на входеРекомендуемый способПочему
Готовый публичный HTTPS-URLПередайте URL напрямуюБез повторной загрузки и с минимальным телом запроса.
Локальный файл на устройствеЗагрузите и передайте public_urlНадёжно для больших файлов, можно переиспользовать при повторах.
Небольшое встроенное изображение, и модель явно поддерживает Base64Можно использовать Base64Только если это допускает контракт выбранной модели.

#Загрузка локального файла

  1. 1

    Узнайте текущий лимит

    Используйте тот же API-ключ, чтобы применились лимиты пользователя.

    GET /v1/media/upload-policy
  2. 2

    Создайте политику загрузки

    Передайте kind, конкретный content_type и точный размер в байтах.

    POST /v1/media/upload-policy
  3. 3

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

    Отправьте POST-запросом все полученные записи fields и файл на upload_url.

    multipart/form-data
  4. 4

    Используйте полученный URL

    Укажите public_url в медиаполе, которое поддерживает модель.

    public_url
create-policy.sh
curl https://www.aisplice.store/v1/media/upload-policy \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "file",
    "content_type": "application/pdf",
    "size": 1048576
  }'

#Не разбирайте поля загрузки

Передавайте все ключи и значения из fields, не переименовывая, не отфильтровывая и не кешируя их. Политика загрузки действует недолго и привязана к одному сгенерированному пути файла.

browser.ts
const form = new FormData();
for (const [key, value] of Object.entries(policy.fields)) {
  form.append(key, String(value));
}
form.append("file", file); // keep the file field last

const uploaded = await fetch(policy.upload_url, {
  method: "POST",
  body: form,
});
if (!uploaded.ok) throw new Error(await uploaded.text());

const modelInputUrl = policy.public_url;

#Типы файлов и поддержка моделями

Успешная загрузка не значит, что модель примет файл

Эндпоинт загрузки может хранить любые файлы — PDF, Excel, текст, — но модель может их использовать, только если в её контракте запроса описано подходящее поле для файла или URL. Модели, работающие только с изображениями, не прочитают таблицу лишь потому, что у неё есть публичный URL.
Сверьтесь с контрактом выбранной модели

Все поля: /v1/media/upload-policy в справочнике API →

Проблема не решена?

Пришлите нам ID запроса или текст ошибки, и мы разберёмся.