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/translatemit einemX-API-Key-Header und einem Multipart-Body, der das Bild undtarget_langenthä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.
| Feld | Pflicht | Zulässige Werte |
|---|---|---|
file | Ja | Ein JPG-, PNG- oder WEBP-Bild, bis zu 10 MB und 25 Megapixel |
target_lang | Ja | en, fr, es, de, it, pt, ja, ko oder zh |
source_lang | Nein | Einer der neun Codes oben; lassen Sie das Feld weg oder senden Sie auto für die automatische Erkennung |
quality | Nein | basic (Standard) oder ultra |
business_type | Nein | default, marketing, edition (der Modus Manga / Comics) oder technical documentation |
custom_prompt | Nein | Anweisungen 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
| Status | Bedeutung (laut Referenz) | Was Ihr Code tun sollte |
|---|---|---|
| 200 | Übersetzung abgeschlossen; ein Credit wird verbraucht | Das übersetzte Bild herunterladen und speichern |
| 400 | Ungültige Eingabe, nicht unterstütztes Format oder fehlende Datei | Nicht wiederholen. Typ, Größe (10 MB), Auflösung (25 MP) und Sprachcode vor dem Senden prüfen |
| 401 | API-Schlüssel fehlt, ist ungültig oder widerrufen | Nicht wiederholen. Den Schlüssel prüfen und wie er geladen wird |
| 403 | Das Konto, dem der Schlüssel gehört, hat nicht den Pro-Tarif oder höher, den der API-Zugriff voraussetzt | Nicht wiederholen. Den Tarif des Kontos prüfen, das den Schlüssel erstellt hat |
| 429 | Der Bilddienst hat sein Rate Limit erreicht | Später mit exponentiellem Backoff erneut versuchen |
| 500 | Verarbeitung fehlgeschlagen | Zuerst 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 Rendering | TranslateMyImage-API | |
|---|---|---|
| Was Sie erhalten | Text-Strings mit Koordinaten, danach das, was Sie daraus rendern | Eine URL zu einem fertig übersetzten Bild |
| Kontrolle | Vollständig: Schriften, verbindliche Glossare, bearbeitbare Ebenen | Modus (business_type) und custom_prompt |
| Entwicklungsaufwand | Mehrere Dienste plus Rendering-Code, die gebaut und gepflegt werden müssen | Eine HTTP-Anfrage pro Bild und Sprache |
| Zielsprachen | Alle, die Ihr Übersetzungsdienst unterstützt | 9 |
| Übersetzter Text als Daten | Ja | Nein, die API liefert ein Bild |
| Pixel außerhalb des Textes | Unverändert | Werden 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
- Validieren Sie lokal, bevor Sie senden: Dateityp, 10 MB, 25 Megapixel, ein unterstützter
target_lang. - Stellen Sie einen Job pro Bild und Sprache in die Warteschlange und reagieren Sie auf 429 mit Backoff.
- Kopieren Sie das Ergebnis in Ihren eigenen Speicher oder Ihr DAM, zusammen mit Quell-ID, Zielsprache,
translation.idundcreatedAt. Weder die Referenz noch die Datenschutzerklärung sagen zu, wie langetranslatedUrlverfügbar bleibt; nutzen Sie den Link also nicht als dauerhaftes Hosting. Es ist ein unsignierter Speicherlink: Behandeln Sie ihn als öffentlich. - 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.
- 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.