API за компресиране на изображения
Компресирайте JPG, PNG, WebP и AVIF с API за компресиране на изображения на Bitinz. По-малки изображения в работния процес и безплатна месечна квота.
Изтегляне на спецификацията OpenAPIУдостоверяване
Създайте 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 | Сървърът е зает, опитайте отново след малко |