Zum Inhalt springen
TinyThis

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

  1. Kostenloses Konto anlegen und die E-Mail-Adresse bestätigen.
  2. Im Portal unter API-Keys & Doku einen Key erstellen (beginnt mit tt_, wird nur einmal angezeigt).
  3. 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-optimiert

Authentifizierung

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

FeldPflichtBeschreibung
imagejaDie Bilddatei als Multipart-Feld. JPG, PNG, WebP, GIF (erstes Bild), BMP, TIFF, HEIC/HEIF, AVIF – bis 30 MB und 80 Megapixel.
formatjajpg, 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.
responseneinfile (Standard): die Datei selbst. json: Metadaten und die Datei als Base64 im Feld fileBase64.
qualityneinstrong, balanced (Standard), high oder lossless.
max_width / max_heightneinGrößere Bilder proportional verkleinern (1–20000 px). Es wird nie vergrößert.
target_kbneinZielgröß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": "…"}

400Keine Datei im Feld image oder Upload abgebrochen
401API-Key fehlt, ist ungültig oder deaktiviert
413Datei größer als 30 MB
415Dateiformat wird nicht unterstützt
422Ungültiger Parameter, Bild nicht lesbar oder Format nicht verfügbar
429Tageslimit erreicht (Antwort enthält limit, used und resetsAt – Zurücksetzen um Mitternacht)
500 / 503Interner 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-Type und 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=webp mit max_width=2560; für maximale Kompatibilität format=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.