Nhà phát triển

API nén ảnh

Nén JPG, PNG, WebP và AVIF với API nén ảnh của Bitinz. Đưa ảnh nhỏ hơn vào quy trình làm việc, kèm hạn mức miễn phí hằng tháng cho mọi tài khoản.

Tải đặc tả OpenAPI
Lấy khóa API

Xác thực

Tạo khóa API trong bảng điều khiển, rồi dùng xác thực HTTP Basic (người dùng api, mật khẩu = khóa) hoặc gửi Authorization: Bearer <key>.

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

Nén một ảnh

Gửi ảnh bằng POST làm nội dung yêu cầu tới /api/v1/shrink. Tham số truy vấn tùy chọn: level (fast / default / best) và filename.

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

Phản hồi

Yêu cầu thành công thường trả về 201 với status là done. Header Location và output.url trỏ đến bản tải về. Compression-Count là mức sử dụng của bạn trong tháng này.

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

Đã nhận và đang chờ: 202

Khi hàng đợi dài hơn, có thể trả về 202 Accepted với status là pending. Location trỏ đến trạng thái tác vụ, không phải bản tải về. Hãy giữ URL này và truy vấn nó thay vì gửi lại ảnh.

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

Truy vấn trạng thái tác vụ

Gửi GET /api/v1/results/{id} tới URL trả về trong Location mỗi 1–2 giây. pending nghĩa là đang chờ (queuePosition cho biết vị trí hiện tại); processing nghĩa là đang nén. Khi status là done, tải về từ downloadUrl. failed nghĩa là tác vụ không thể hoàn tất; failure cho biết loại lỗi và note giải thích lý do.

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

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

Tải kết quả về

Có thể tải kết quả về cho đến khi hết hạn; sau đó URL trả về 410.

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

Mã lỗi

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

401 unauthorized / invalid_keyThiếu khóa, khóa không xác định hoặc đã bị thu hồi
413 too_largeẢnh vượt quá giới hạn dung lượng
415 unsupported_imageĐường đồng bộ: không phải ảnh PNG, JPEG, WebP hoặc AVIF được hỗ trợ
422 image_too_largeĐường đồng bộ: ảnh có nhiều điểm ảnh hơn mức dịch vụ có thể xử lý
failed / unsupportedTác vụ trong hàng đợi báo ảnh không được hỗ trợ trong kết quả là status: failed và failure: unsupported
failed / too_largeTác vụ trong hàng đợi báo ảnh vượt giới hạn xử lý là status: failed và failure: too_large
429 quota_exceededĐã dùng hết hạn mức hằng tháng
503 busyMáy chủ đang bận, vui lòng thử lại sau ít phút