Bildübersetzungs-API: Bild senden, übersetztes Bild zurückerhalten

Die TranslateMyImage-API übersetzt den Text in einem Bild und gibt ein neues Bild zurück, keine Liste von Strings. Sie senden ein Bild und eine Zielsprache an einen einzigen Endpoint; die JSON-Antwort enthält eine URL zum übersetzten Bild, das so erzeugt wird, dass das ursprüngliche Layout erhalten bleibt. Diese Seite zeigt, was die API leistet, Beispielanfragen in curl, Python und Node.js, den Umgang mit Fehlern und wann sich eine eigene OCR-Pipeline mehr lohnt. Die vollständige Referenz finden Sie in der API-Dokumentation.

Kurz gesagt

  • Ein einziger Endpoint: POST https://translatemyimage.com/api/translate mit einem X-API-Key-Header und einem Multipart-Body, der das Bild und target_lang enthält.
  • Eine Anfrage = ein Bild in eine Sprache = ein Credit, sobald die Übersetzung abgeschlossen ist. Zielsprachen: en, fr, es, de, it, pt, ja, ko, zh.
  • API-Zugriff gibt es ab dem Pro-Tarif (Pro, Premium oder Enterprise). Prüfen Sie erzeugte Bilder, bevor Sie sie veröffentlichen.

Felder der Anfrage

Der Body ist multipart/form-data; das übernimmt Ihr HTTP-Client für Sie.

FeldPflichtZulässige Werte
fileJaEin JPG-, PNG- oder WEBP-Bild, bis zu 10 MB und 25 Megapixel
target_langJaen, fr, es, de, it, pt, ja, ko oder zh
source_langNeinEiner der neun Codes oben; lassen Sie das Feld weg oder senden Sie auto für die automatische Erkennung
qualityNeinbasic (Standard) oder ultra
business_typeNeindefault, marketing, edition (der Modus Manga / Comics) oder technical documentation
custom_promptNeinAnweisungen für das Modell, bis zu 1.000 Zeichen (ab dem Pro-Tarif)

Antwort

Ein erfolgreicher Aufruf liefert diese Struktur (Beispiel aus der Referenz):

{
  "success": true,
  "translation": {
    "id": "clxb1234567890",
    "originalUrl": "https://storage.com/original.jpg",
    "translatedUrl": "https://storage.com/translated.jpg",
    "sourceLang": "fr",
    "targetLang": "en",
    "status": "completed",
    "createdAt": "2026-09-21T15:27:39.000Z",
    "metadata": { "quality": "basic", "model": "muse-image" }
  }
}

sourceLang ist null, wenn Sie source_lang weglassen oder auto senden. Fehler liefern JSON mit success: false, einer Meldung in error und, sobald der Schlüssel akzeptiert ist, einem stabilen code wie insufficient_credits.

Schnellstart

Erstellen Sie einen Schlüssel auf der Seite API Keys im Dashboard. Er wird nur einmal angezeigt; speichern Sie ihn deshalb sofort in einer Umgebungsvariable oder einem Secret Manager.

curl

curl -X POST https://translatemyimage.com/api/translate \
  -H "X-API-Key: $TMI_API_KEY" \
  -F "[email protected]" \
  -F "target_lang=es" \
  -F "source_lang=auto" \
  -F "business_type=marketing"

Python (requests), mit erneuten Versuchen, wenn der Bilddienst sein Rate Limit erreicht:

import os
import time

import requests

API_URL = "https://translatemyimage.com/api/translate"
API_KEY = os.environ["TMI_API_KEY"]


def translate_image(path, target_lang, business_type="default", max_attempts=5):
    for attempt in range(max_attempts):
        with open(path, "rb") as image:
            response = requests.post(
                API_URL,
                headers={"X-API-Key": API_KEY},
                files={"file": image},
                data={
                    "target_lang": target_lang,
                    "source_lang": "auto",
                    "business_type": business_type,
                },
                timeout=900,  # die Erzeugung kann Minuten dauern: großzügig bemessen
            )
        if response.status_code == 429:
            time.sleep(2 ** attempt)  # exponentielles Backoff, dann erneut versuchen
            continue
        payload = response.json()
        if response.status_code != 200 or not payload.get("success"):
            raise RuntimeError(f"{response.status_code}: {payload.get('error')}")
        return payload["translation"]
    raise RuntimeError(f"Still rate limited after {max_attempts} attempts")


for lang in ["es", "fr", "de"]:
    result = translate_image("product-front.jpg", lang, "marketing")
    print(lang, result["translatedUrl"])

Node.js (ab Version 18, als ES-Modul, mit dem eingebauten fetch und FormData):

import { readFile } from "node:fs/promises";

const form = new FormData();
const image = new Blob([await readFile("product-front.jpg")], { type: "image/jpeg" });
form.append("file", image, "product-front.jpg");
form.append("target_lang", "ja");

const response = await fetch("https://translatemyimage.com/api/translate", {
  method: "POST",
  headers: { "X-API-Key": process.env.TMI_API_KEY },
  body: form,
});
const payload = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${payload.error}`);
console.log(payload.translation.translatedUrl);

Ein target_lang pro Anfrage: Um ein Bild in fünf Sprachen zu übersetzen, senden Sie fünf Anfragen.

Jeden Statuscode behandeln

StatusBedeutung (laut Referenz)Was Ihr Code tun sollte
200Übersetzung abgeschlossen; ein Credit wird verbrauchtDas übersetzte Bild herunterladen und speichern
400Ungültige Eingabe, nicht unterstütztes Format oder fehlende DateiNicht wiederholen. Typ, Größe (10 MB), Auflösung (25 MP) und Sprachcode vor dem Senden prüfen
401API-Schlüssel fehlt, ist ungültig oder widerrufenNicht wiederholen. Den Schlüssel prüfen und wie er geladen wird
403Das Konto, dem der Schlüssel gehört, hat nicht den Pro-Tarif oder höher, den der API-Zugriff voraussetztNicht wiederholen. Den Tarif des Kontos prüfen, das den Schlüssel erstellt hat
429Der Bilddienst hat sein Rate Limit erreichtSpäter mit exponentiellem Backoff erneut versuchen
500Verarbeitung fehlgeschlagenZuerst code prüfen: insufficient_credits bedeutet, dass dem Konto Credits fehlen; eine Wiederholung hilft dann nicht. Andernfalls ein- oder zweimal wiederholen und die Datei dann zur manuellen Bearbeitung protokollieren

Die Referenz dokumentiert diese sechs Statuscodes. Der Endpoint kann auch andere zurückgeben, zum Beispiel 422, wenn kein Bild erzeugt werden konnte (code: generation_failed), oder 503, wenn der Bilddienst nicht verfügbar ist (service_unavailable). Verzweigen Sie daher nach code statt nur nach dem Status.

Selbst bauen oder eine Bild-zu-Bild-API aufrufen?

Statt einer Bild-zu-Bild-API können Sie eine Pipeline zusammenstellen: einen OCR-Dienst, der den Text findet (Google Cloud Vision etwa liefert laut seiner OCR-Dokumentation den extrahierten Text mit dem Begrenzungsrahmen jedes Wortes), eine Textübersetzungs-API und schließlich Code, der den Originaltext entfernt und die Übersetzung mit einer passenden Schrift in dieselben Rahmen setzt.

OCR + Textübersetzung + eigenes RenderingTranslateMyImage-API
Was Sie erhaltenText-Strings mit Koordinaten, danach das, was Sie daraus rendernEine URL zu einem fertig übersetzten Bild
KontrolleVollständig: Schriften, verbindliche Glossare, bearbeitbare EbenenModus (business_type) und custom_prompt
EntwicklungsaufwandMehrere Dienste plus Rendering-Code, die gebaut und gepflegt werden müssenEine HTTP-Anfrage pro Bild und Sprache
ZielsprachenAlle, die Ihr Übersetzungsdienst unterstützt9
Übersetzter Text als DatenJaNein, die API liefert ein Bild
Pixel außerhalb des TextesUnverändertWerden mit dem Bild neu erzeugt: Ziffern, kleiner Text und Logos können sich ändern

Bauen Sie selbst, wenn Sie den übersetzten Text als Daten brauchen (Alt-Text, Suche), eine strikt durchgesetzte Terminologie, bearbeitbare Ebenen, mehr Sprachen oder Pixel außerhalb des Textes, die identisch bleiben müssen. Rufen Sie die API auf, wenn Sie fertige Visuals in wenigen Sprachen möchten und diese vor der Verwendung prüfen können.

Ein Workflow für die Produktion

  1. Validieren Sie lokal, bevor Sie senden: Dateityp, 10 MB, 25 Megapixel, ein unterstützter target_lang.
  2. Stellen Sie einen Job pro Bild und Sprache in die Warteschlange und reagieren Sie auf 429 mit Backoff.
  3. Kopieren Sie das Ergebnis in Ihren eigenen Speicher oder Ihr DAM, zusammen mit Quell-ID, Zielsprache, translation.id und createdAt. Weder die Referenz noch die Datenschutzerklärung sagen zu, wie lange translatedUrl verfügbar bleibt; nutzen Sie den Link also nicht als dauerhaftes Hosting. Es ist ein unsignierter Speicherlink: Behandeln Sie ihn als öffentlich.
  4. Markieren Sie jedes Ergebnis als „zu prüfen“. Eine Person, die die Zielsprache beherrscht, prüft zuerst Preise, technische Daten und Rechtstexte, dann Überschriften. Die Seite zur Stapelübersetzung enthält eine Tabelle zur Prüfung nach Risiko, die Sie übernehmen können.
  5. Veröffentlichen Sie nur geprüfte Bilder, zum Beispiel als Amazon-Listing-Bilder.

Bevor Sie Code schreiben, schicken Sie einige repräsentative Bilder mit dem geplanten Modus durch den Web-Übersetzer. Für gelegentliche Aufträge ohne Code ist die Stapelübersetzung im Dashboard einfacher: bis zu 10 Bilder und 50 übersetzte Ergebnisse pro Durchlauf.

Tarife und Credits

API-Zugriff ist ab dem Pro-Tarif enthalten: Pro enthält 100 Credits pro Monat, Premium 300 (Preise). Jede abgeschlossene Übersetzung verbraucht einen Credit. Pay-as-you-go-Pakete fügen 1 Credit für 2 $, 30 für 10 $ oder 100 für 20 $ hinzu; allein schalten sie den API-Zugriff nicht frei. Jeder Tarif mit API-Zugriff enthält außerdem Ultra-Qualität und custom_prompt.

API-Dokumentation lesen

Endpoint, Header, Parameter, Status- und Fehlercodes, eine Beispielantwort und Aufrufe in cURL, Python und Node.js.

Häufig gestellte Fragen

Gibt es eine API, die den Text in einem Bild übersetzt?

Ja. Die TranslateMyImage-API nimmt ein Bild und eine Zielsprache entgegen und gibt eine URL zu einem neuen Bild mit übersetztem Text zurück, das so erzeugt wird, dass das ursprüngliche Layout erhalten bleibt. Mit einer Textübersetzungs-API müssten Sie den Text zuerst per OCR aus dem Bild extrahieren und die Übersetzung dann selbst wieder ins Bild setzen.

Gibt die API den übersetzten Text zurück?

Nein. Die Antwort enthält die ID der Übersetzung, die URLs des Original- und des übersetzten Bildes, die Sprachen, einen Status, einen Zeitstempel und Metadaten. Wenn Sie den übersetzten Text selbst brauchen, etwa für Alt-Texte oder die Suche, lassen Sie einen OCR-Dienst über das übersetzte Bild laufen.

Kann ich ein Bild mit einer einzigen Anfrage in mehrere Sprachen übersetzen?

Nein. Jede Anfrage hat genau einen target_lang. Für fünf Sprachen senden Sie fünf Anfragen mit derselben Datei; jede abgeschlossene Übersetzung verbraucht einen Credit.

Was kostet die Bildübersetzungs-API?

Jede abgeschlossene Übersetzung verbraucht einen Credit. API-Zugriff ist ab dem Pro-Tarif enthalten: Pro kostet 9,90 $ pro Monat mit 100 Credits, Premium 19,90 $ pro Monat mit 300 Credits. Pay-as-you-go-Pakete fügen Credits hinzu (1 für 2 $, 30 für 10 $ oder 100 für 20 $), schalten den API-Zugriff allein aber nicht frei.

Gibt es ein SDK für Python oder JavaScript?

Die Referenz dokumentiert einfache HTTP-Aufrufe mit Beispielen in cURL, Python (requests) und Node.js (axios). Jeder HTTP-Client, der multipart/form-data mit einem eigenen Header senden kann, funktioniert.