Programiści

API do kompresji obrazów

Kompresuj JPG, PNG, WebP i AVIF za pomocą API do kompresji obrazów Bitinz. Mniejsze obrazy w twoim procesie i darmowy limit miesięczny dla każdego konta.

Pobierz specyfikację OpenAPI
Uzyskaj klucz API

Uwierzytelnianie

Utwórz klucz API w panelu, a następnie użyj uwierzytelniania HTTP Basic (użytkownik api, hasło = klucz) lub wyślij Authorization: Bearer <key>.

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

Kompresja obrazu

Wyślij obraz metodą POST jako treść żądania do /api/v1/shrink. Opcjonalne parametry zapytania: level (fast / default / best) i filename.

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

Odpowiedź

Udane żądania zwykle zwracają 201 ze status done. Nagłówek Location i output.url wskazują pobieranie. Compression-Count to twoje wykorzystanie w tym miesiącu.

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"
}

Przyjęte i oczekujące: 202

Przy dłuższej kolejce może zostać zwrócone 202 Accepted ze status pending. Location wskazuje stan zadania, a nie pobieranie. Zachowaj ten URL i odpytuj go zamiast ponownie wysyłać obraz.

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"
}

Odpytywanie stanu zadania

Wysyłaj GET /api/v1/results/{id} na URL zwrócony w Location co 1–2 sekundy. pending oznacza kolejkę (queuePosition podaje obecne miejsce); processing oznacza trwającą kompresję. Gdy status ma wartość done, pobierz wynik z downloadUrl. failed oznacza, że zadania nie udało się ukończyć; failure podaje kategorię, a note wyjaśnia przyczynę.

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

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

Pobieranie wyniku

Wyniki można pobierać do czasu ich wygaśnięcia; potem URL zwraca 410.

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

Kody błędów

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

401 unauthorized / invalid_keyBrak klucza, klucz nieznany lub unieważniony
413 too_largeObraz przekracza limit rozmiaru
415 unsupported_imageŚcieżka synchroniczna: to nie jest obsługiwany obraz PNG, JPEG, WebP ani AVIF
422 image_too_largeŚcieżka synchroniczna: obraz ma więcej pikseli, niż usługa może przetworzyć
failed / unsupportedZadania z kolejki zgłaszają nieobsługiwane obrazy w wyniku jako status: failed i failure: unsupported
failed / too_largeZadania z kolejki zgłaszają obrazy ponad limit przetwarzania jako status: failed i failure: too_large
429 quota_exceededMiesięczny limit został wykorzystany
503 busySerwer jest zajęty, spróbuj za chwilę