Entwickler-API
Bildkomprimierung per API
Ein HTTP-Aufruf – und deine Website, dein Shop oder dein Skript bekommt optimierte JPG-, PNG- oder WebP-Dateien zurück. Deutsche Doku, Server in Deutschland.
Ein Endpunkt
POST, Bild rein, kleinere Datei raus
100 gratis / Tag
Mit kostenlosem Konto
In Deutschland
Keine Weitergabe an Dritte
15 Minuten
Danach ist alles gelöscht
Schnellstart
- Kostenloses Konto anlegen und die E-Mail-Adresse bestätigen.
- Im Portal unter API-Keys & Doku einen Key erstellen (beginnt mit
tt_, wird nur einmal angezeigt). - Bild an den Endpunkt schicken – fertig.
curl https://www.tinythis.de/api/v1/optimize.php \
-H "Authorization: Bearer tt_DEIN_API_KEY" \
-F "image=@foto.jpg" \
-F "format=best" \
-D header.txt \
-o foto-optimiertAuthentifizierung
Sende deinen Key im Header Authorization: Bearer tt_… oder alternativ als X-API-Key: tt_…. Keys gehören auf den Server – nie in öffentlich ausgelieferten JavaScript-Code. Für jede Website empfiehlt sich ein eigener Key; im Portal siehst du den Verbrauch je Key und kannst einzelne Keys sofort deaktivieren.
Bild optimieren
POST https://www.tinythis.de/api/v1/optimize.php · Content-Type: multipart/form-data
| Feld | Pflicht | Beschreibung |
|---|---|---|
image | ja | Die Bilddatei als Multipart-Feld. JPG, PNG, WebP, GIF (erstes Bild), BMP, TIFF, HEIC/HEIF, AVIF – bis 30 MB und 80 Megapixel. |
format | ja | jpg, png, webp oder best. best liefert den Gesamtsieger: die kleinste Datei, mit target_kb die höchste Auflösung innerhalb der Zielgröße. Transparente Bilder nie als JPG, Fotos nie als PNG. |
response | nein | file (Standard): die Datei selbst. json: Metadaten und die Datei als Base64 im Feld fileBase64. |
quality | nein | strong, balanced (Standard), high oder lossless. |
max_width / max_height | nein | Größere Bilder proportional verkleinern (1–20000 px). Es wird nie vergrößert. |
target_kb | nein | Zielgröße in KB (5–20000). Qualität und notfalls Pixelmaße werden angepasst. |
TinyThis wendet die EXIF-Drehung an, entfernt Metadaten, rechnet Farbprofile nach sRGB um und liefert im Ausgangsformat nie eine größere Datei als das Original.
Antwort
Bei response=file kommt die Bilddatei mit HTTP 200 zurück. Das tatsächliche Format steht im Content-Type (image/jpeg, image/png oder image/webp), dazu diese Header:
X-TinyThis-Input-Bytes: 4931072
X-TinyThis-Output-Bytes: 1646592
X-TinyThis-Saving: 66.6
X-TinyThis-Width: 3992
X-TinyThis-Height: 2992
Content-Disposition: attachment; filename="foto.webp"Mit response=json erhältst du stattdessen:
{
"success": true,
"jobId": "4f0c…",
"input": { "name": "foto.jpg", "mime": "image/jpeg", "size": 4931072, "sizeLabel": "4,70 MB" },
"output": { "format": "webp", "requestedFormat": "best", "mime": "image/webp",
"fileName": "foto.webp", "size": 1646592, "sizeLabel": "1,57 MB",
"saving": 66.6, "width": 3992, "height": 2992, "quality": "balanced" },
"usage": { "period": "2026-10-11", "limitPeriod": "day", "usedToday": 12, "dailyLimit": 100, "remaining": 88, … },
"fileBase64": "UklGR…"
}Fehlercodes
Fehler kommen immer als JSON: {"success": false, "message": "…"}
| 400 | Keine Datei im Feld image oder Upload abgebrochen |
| 401 | API-Key fehlt, ist ungültig oder deaktiviert |
| 413 | Datei größer als 30 MB |
| 415 | Dateiformat wird nicht unterstützt |
| 422 | Ungültiger Parameter, Bild nicht lesbar oder Format nicht verfügbar |
| 429 | Tageslimit erreicht (Antwort enthält limit, used und resetsAt – Zurücksetzen um Mitternacht) |
| 500 / 503 | Interner Fehler – bitte später erneut versuchen |
Verbrauch abfragen
GET https://www.tinythis.de/api/v1/usage.php mit demselben Header liefert den Stand von heute (das Limit gilt pro Tag) und zusätzlich die Summe des Monats. Der Aufruf zählt nicht als Optimierung.
{
"success": true,
"period": "2026-10-11",
"limitPeriod": "day",
"usedToday": 12,
"dailyLimit": 100,
"remaining": 88,
"resetsAt": "2026-10-12T00:00:00+02:00",
"usedThisMonth": 340,
"monthlyLimit": 3100,
"account": { "name": "Max Muster", "email": "max@example.de" },
"key": { "name": "meinshop.de", "prefix": "tt_61ed0d2" }
}Best Practices
- Original behalten, wenn nichts zu holen ist: Prüfe den Status und den
Content-Typeund speichere nur, wenn die Antwort ein Bild ist. - Timeout von 60 Sekunden einplanen – große Fotos mit allen Formaten brauchen einige Sekunden.
- Für Websites eignet sich
format=webpmitmax_width=2560; für maximale Kompatibilitätformat=jpg. - Bei 429 nicht in einer Schleife wiederholen – das Limit setzt sich um Mitternacht zurück.
- WordPress? Nimm direkt das Plugin – es nutzt dieselbe API.
FAQ
Fragen zur API
Was kostet die TinyThis-API?
Mit einem kostenlosen Konto sind 100 Optimierungen pro Tag enthalten. Das Kontingent setzt sich jede Nacht um 0 Uhr zurück. Brauchst du mehr, schreib uns an it@maxhoessbacher.de – wir finden eine Lösung.
Zählt jeder Aufruf als Optimierung?
Jeder erfolgreiche Aufruf von optimize.php zählt als eine Optimierung, egal welches Format. Fehlgeschlagene Aufrufe und die Abfrage von usage.php zählen nicht.
Wo werden die Bilder verarbeitet?
Auf unserem Server in Deutschland. Original und Ergebnis werden spätestens nach 15 Minuten gelöscht; wir geben nichts weiter.
Bleibt die API stabil?
Ja. Version v1 bleibt abwärtskompatibel: Bestehende Parameter und Antworten ändern sich nicht, neue Funktionen kommen nur als optionale Parameter oder zusätzliche Felder hinzu.
Gibt es ein WordPress-Plugin?
Ja – das TinyThis-Plugin nutzt die API, verbindet sich mit einem Klick und komprimiert jeden Upload automatisch.