Розробникам

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Сервер зайнятий, спробуйте трохи пізніше