API de compresión de imágenes
Comprime JPG, PNG, WebP y AVIF con la API de compresión de imágenes de Bitinz. Imágenes más ligeras en tu flujo de trabajo, con cuota mensual gratuita.
Descargar la especificación OpenAPIAutenticación
Crea una clave de API en tu panel y usa la autenticación HTTP Basic (usuario api, contraseña = la clave) o envía Authorization: Bearer <key>.
curl --user api:YOUR_API_KEY ... # or curl -H "Authorization: Bearer YOUR_API_KEY" ...
Comprimir una imagen
Envía la imagen por POST como cuerpo de la solicitud a /api/v1/shrink. Parámetros de consulta opcionales: level (fast / default / best) y filename.
curl -i --user api:YOUR_API_KEY \ --data-binary @photo.jpg \ "https://bitinz.com/api/v1/shrink?level=default&filename=photo.jpg"
Respuesta
Las solicitudes correctas suelen devolver 201 con status done. La cabecera Location y output.url apuntan a la descarga. Compression-Count es tu uso de este mes.
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"
}Aceptada y en espera: 202
Si la cola es larga, puede devolverse 202 Accepted con status pending. Location apunta al estado del trabajo, no a la descarga. Guarda esta URL y consúltala en lugar de volver a enviar la imagen.
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"
}Consultar el estado del trabajo
Envía GET /api/v1/results/{id} a la URL devuelta en Location cada 1–2 segundos. pending significa en cola (queuePosition indica su posición actual); processing significa que la compresión está en curso. Cuando status sea done, descarga desde downloadUrl. failed significa que el trabajo no pudo completarse; failure indica la categoría y note explica el motivo.
curl "https://bitinz.com/api/v1/results/<id>"
{
"id": "<id>",
"status": "done",
"available": true,
"downloadUrl": "/api/v1/results/<id>/download",
"outputSize": 992450,
"unchanged": false
}Descargar el resultado
Los resultados pueden descargarse hasta que caducan; después, la URL devuelve 410.
curl -o photo.min.jpg "https://bitinz.com/api/v1/results/<id>/download"
Códigos de error
{ "error": { "code": "...", "message": "..." } }
| 401 unauthorized / invalid_key | Clave ausente, desconocida o revocada |
| 413 too_large | La imagen supera el límite de tamaño |
| 415 unsupported_image | Ruta síncrona: no es una imagen PNG, JPEG, WebP o AVIF compatible |
| 422 image_too_large | Ruta síncrona: la imagen tiene más píxeles de los que el servicio puede procesar |
| failed / unsupported | Los trabajos en cola indican las imágenes no compatibles en el resultado como status: failed y failure: unsupported |
| failed / too_large | Los trabajos en cola indican las imágenes que superan el límite de procesamiento como status: failed y failure: too_large |
| 429 quota_exceeded | Se ha agotado la cuota mensual |
| 503 busy | El servidor está ocupado; inténtalo de nuevo en breve |