Эндпоинт оптимизации изображений
Официальное техническое руководство по базовому эндпоинту обработки изображений POST /v1/optimize.
Основной эндпоинт для оптимизации, транскодирования, даунскейлинга и изменения размеров изображений:
POST https://api.smallpict.app/v1/optimize
(Алиас: POST https://api.smallpict.app/v1/convert)
Формат запроса (JSON полезная нагрузка)
POST /v1/optimize HTTP/1.1Host: api.smallpict.appX-API-Key: sp_sdk_9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0bX-Timestamp: 1716301234X-Signature: 3a9f8b2c4d6e8a0f1b3c5d7e9f2a4b6c8d0e1f3a5b7c9d1e3f5a7b9c1d3e5f7aContent-Type: application/jsonIdempotency-Key: c9b8a7f6-e5d4-4c3b-2a1f-0e9d8c7b6a5fСхема тела запроса
{ "filename": "hero-banner.jpg", "mime_type": "image/jpeg", "filesize": 1654200, "options": { "format": "avif", "quality": 80, "max_dimension": 1600, "max_width": 1920, "max_height": 1080, "lossless": false, "strip_metadata": true }}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
filename | string | Да | Исходное имя файла изображения (например, banner.png) |
mime_type | string | Да | Тип MIME (например, image/jpeg, image/png, image/webp) |
filesize | integer | Да | Общий размер файла в байтах (должен быть > 0) |
options.format | string | Нет | Целевой формат: avif, webp, original / keep, jpg, png (По умолчанию: webp) |
options.quality | integer | Нет | Качество сжатия от 1 до 100 (По умолчанию: 80) |
options.max_dimension | integer | Нет | Пропорциональное ограничение максимального размера длинной стороны в пикселях (например, 1600, 1920, 2048, 2560) |
options.max_width | integer | Нет | Ограничение максимальной ширины в пикселях |
options.max_height | integer | Нет | Ограничение максимальной высоты в пикселях |
options.lossless | boolean | Нет | Включение попиксельного сжатия без потерь (По умолчанию: false) |
options.strip_metadata | boolean | Нет | Удаление EXIF данных камеры и профилей цвета (По умолчанию: true) |
Параметры прямого онлайн-преобразования
Маршруты облачного преобразования принимают параметры запроса для масштабирования на лету:
GET https://api.smallpict.app/v1/transform?url=...&format=webp&quality=80&max_dimension=1600
?format=avif|webp|original?quality=1..100?max_dimension=1600?max_width=1920?max_height=1080
Ответ сервера (200 OK)
После успешной инициализации SmallPict возвращает безопасный предварительно подписанный URL для загрузки и идентификатор задачи:
{ "upload_url": "https://upload.smallpict.app/uploads/a1b2c3d4/hero-banner.jpg?signature=...", "job_id": "job-a1b2c3d4", "object_key": "uploads/a1b2c3d4/hero-banner.jpg", "status": "queued"}Загрузите байты изображения на upload_url запросом HTTP PUT, затем проверьте статус задачи. Используйте защищённую ссылку для загрузки ровно в том виде, в каком она пришла в ответе: она быстро истекает и действует только для этой загрузки.
Проверка статуса задачи
Запрос текущего состояния задачи:
GET https://api.smallpict.app/v1/optimize/status?job_id=job-a1b2c3d4
Ответ после завершения (200 OK)
{ "job_id": "job-a1b2c3d4", "status": "completed", "url": "https://cdn.smallpict.app/opt/hero-banner.avif", "format": "avif", "bytes_saved": 1456200, "savings_percentage": 88.03, "created_at": "2026-08-23T08:00:00Z", "updated_at": "2026-08-23T08:00:01Z"}