API Reference
Compress images to WebP programmatically. Send images via multipart form, receive a ZIP archive.
Authentication
All requests must include your API key in the x-api-key header. Set the key in your environment as API_KEY.
401 Unauthorized.Endpoint
/api/compressRequest
Send a multipart/form-data body with the following fields:
imagesFile[]qualitynumberResponse
200ZIP archive (application/zip) with assets/ folder of WebP files400Bad request — no files, or no valid image files provided401Missing or invalid API key500Image processing errorSuccessful responses include response headers: X-File-Count, X-Original-Size, X-Compressed-Size (bytes).
Examples
cURL
curl -X POST https://your-domain.com/api/compress \
-H "x-api-key: YOUR_API_KEY" \
-F "images=@photo.jpg" \
-F "images=@banner.png" \
-F "quality=85" \
--output assets.zipJavaScript (fetch)
const form = new FormData();
form.append("images", fileInput.files[0]);
form.append("images", fileInput.files[1]);
form.append("quality", "85");
const res = await fetch("/api/compress", {
method: "POST",
headers: { "x-api-key": process.env.API_KEY },
body: form,
});
const blob = await res.blob();
// blob is a ZIP archive containing assets/*.webpPython (requests)
import requests
files = [
("images", ("photo.jpg", open("photo.jpg", "rb"), "image/jpeg")),
("images", ("banner.png", open("banner.png", "rb"), "image/png")),
]
res = requests.post(
"https://your-domain.com/api/compress",
headers={"x-api-key": "YOUR_API_KEY"},
files=files,
data={"quality": 85},
)
with open("assets.zip", "wb") as f:
f.write(res.content)ZIP Structure
The downloaded archive always contains a single assets/ folder:
assets.zip
└── assets/
├── photo.webp
├── banner.webp
└── hero-image.webpDatenschutzhinweis für API-Nutzer (DSGVO)
Hochgeladene Bilder werden ausschließlich im EU-Rechenzentrum Frankfurt (fra1) verarbeitet und danach sofort gelöscht. Es findet keine Speicherung, kein Logging von Bildinhalten und keine Weitergabe statt.
Wenn Sie über die API Bilder verarbeiten, die personenbezogene Daten Ihrer eigenen Nutzer enthalten (z. B. Porträtfotos), sind Sie als Verantwortlicher im Sinne der DSGVO verpflichtet, einen Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO abzuschließen. Bitte nehmen Sie dafür über das Impressum Kontakt auf.