Разработчикам

API для сжатия изображений

Сжимайте JPG, PNG, WebP и AVIF через API сжатия изображений Bitinz. Лёгкие изображения в вашем процессе и бесплатная месячная квота для каждого аккаунта.

Скачать спецификацию OpenAPI
Получить API-ключ

Аутентификация

Создайте API-ключ в личном кабинете и используйте HTTP Basic (пользователь api, пароль = ключ) или передавайте Authorization: Bearer <key>.

curl --user api:YOUR_API_KEY ...
# or
curl -H "Authorization: Bearer YOUR_API_KEY" ...

Сжатие изображения

Отправьте изображение методом POST в теле запроса на /api/v1/shrink. Необязательные параметры запроса: level (fast / default / best) и filename.

curl -i --user api:YOUR_API_KEY \
  --data-binary @photo.jpg \
  "https://bitinz.com/api/v1/shrink?level=default&filename=photo.jpg"

Ответ

Успешные запросы обычно возвращают 201 со status done. Заголовок Location и output.url указывают на скачивание. Compression-Count — ваше использование за месяц.

HTTP/1.1 201 Created
Location: https://bitinz.com/api/v1/results/<id>/download
Compression-Count: 1

{
  "id": "<id>",
  "status": "done",
  "input":  { "size": 2277375, "type": "image/jpeg" },
  "output": { "size": 992450, "type": "image/jpeg", "ratio": 0.436,
              "url": "https://bitinz.com/api/v1/results/<id>/download" },
  "unchanged": false,
  "expiresAt": "2026-10-02T12:00:00Z"
}

Принято и ожидает: 202

При длинной очереди может вернуться 202 Accepted со status pending. Location указывает на статус задачи, а не на скачивание. Сохраните этот URL и опрашивайте его вместо повторной отправки изображения.

HTTP/1.1 202 Accepted
Location: https://bitinz.com/api/v1/results/<id>

{
  "id": "<id>",
  "status": "pending",
  "input": { "size": 2277375 },
  "expiresAt": "2026-10-02T12:00:00Z"
}

Опрос статуса задачи

Отправляйте GET /api/v1/results/{id} на URL из Location каждые 1–2 секунды. pending — задача в очереди (queuePosition показывает текущее место); processing — идёт сжатие. Когда status станет done, скачайте результат по downloadUrl. failed — задачу не удалось завершить; failure указывает категорию, а note — причину.

curl "https://bitinz.com/api/v1/results/<id>"

{
  "id": "<id>",
  "status": "done",
  "available": true,
  "downloadUrl": "/api/v1/results/<id>/download",
  "outputSize": 992450,
  "unchanged": false
}

Скачивание результата

Результаты можно скачать до истечения срока; после этого URL возвращает 410.

curl -o photo.min.jpg "https://bitinz.com/api/v1/results/<id>/download"

Коды ошибок

{ "error": { "code": "...", "message": "..." } }

401 unauthorized / invalid_keyКлюч отсутствует, неизвестен или отозван
413 too_largeИзображение превышает лимит размера
415 unsupported_imageСинхронный путь: не поддерживаемое изображение PNG, JPEG, WebP или AVIF
422 image_too_largeСинхронный путь: в изображении больше пикселей, чем может обработать сервис
failed / unsupportedЗадачи из очереди сообщают о неподдерживаемых изображениях в результате как status: failed и failure: unsupported
failed / too_largeЗадачи из очереди сообщают об изображениях сверх лимита обработки как status: failed и failure: too_large
429 quota_exceededМесячная квота исчерпана
503 busyСервер занят, повторите попытку чуть позже