Справочник API
Политика загрузки файлов
/v1/media/upload-policy/v1/media/upload-policyЗагружайте изображения, видео, аудио и другие файлы в файловое хранилище, а затем передавайте полученный публичный URL в запрос к модели. Шлюз только создаёт краткосрочную политику загрузки, привязанную к пользователю; сами файлы через API-сервер не проходят.
{
"image_max_bytes": 52428800,
"video_max_bytes": 209715200,
"audio_max_bytes": 104857600,
"file_max_bytes": 52428800
}#Создайте политику загрузки
kindstringобязательно"image", "video", "audio" или "file".
content_typestringобязательноКонкретный MIME-тип, соответствующий kind. file принимает MIME-типы, отличные от image/video/audio, например application/pdf или text/plain.
sizeintegerобязательноТочный размер файла в байтах. Выполните GET к этому эндпоинту с тем же API-ключом, чтобы узнать все четыре лимита пользователя.
curl https://www.aisplice.store/v1/media/upload-policy \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "image",
"content_type": "image/avif",
"size": 1048576
}'{
"upload_url": "https://uploads.example.com/",
"public_url": "https://media.example.com/media/user-upload/image/...",
"fields": {
"key": "media/user-upload/image/...",
"policy": "...",
"...": "Pass every returned field unchanged"
},
"expires_at": "2026-07-25T10:05:00Z"
}#Загрузите в файловое хранилище
Отправьте все полученные записи fields и файл одним multipart POST-запросом на upload_url. Политика действует пять минут, привязана к одному сгенерированному пути файла и не может перезаписать существующий файл.
# Save the policy response as policy.json first.
upload_args=()
while IFS=$'\t' read -r key value; do
upload_args+=(-F "$key=$value")
done < <(jq -r '.fields | to_entries[] | [.key, .value] | @tsv' policy.json)
# Keep the file field last for storage compatibility.
curl "$(jq -r .upload_url policy.json)" \
"${upload_args[@]}" \
-F "file=@reference.avif"#Используйте публичный URL
После успешного ответа хранилища используйте public_url в медиаполе, которое поддерживает выбранная модель. Успешная загрузка не гарантирует, что любая модель сможет обработать любой медиаформат; сверьтесь с контрактом запроса модели.
{
"model": "gpt-image-2",
"prompt": "Turn this reference into a watercolor",
"images": ["https://media.example.com/media/user-upload/image/..."]
}#Связанные ошибки
Этот эндпоинт сообщает об ошибках через error.type, а не error.code, поэтому сопоставляйте значения ниже вместе со статусом.
- 400 invalid_request_errorkind, content_type и size должны описывать один загружаемый файл.
- 401 unauthorizedBearer-токен недействителен или отсутствует.
- 413 payload_too_largeЗаявленный размер файла превышает установленный лимит загрузки.
- 415 unsupported_media_typecontent_type не соответствует выбранному типу: изображение, видео, аудио или обычный файл.
Проблема не решена?
Пришлите нам ID запроса или текст ошибки, и мы разберёмся.