Bilder
Wie Sie Bilder an die ReWords.AI API senden – URL, Base64, Data-URL oder Multipart-Upload –, die Größen- und Formatgrenzen, der Umgang mit EXIF und Transparenz, die Ergebnisdateien und wie Boxen auf Pixel abgebildet werden.
Was Sie senden können
| Grenze | |
|---|---|
| Formate | JPEG, PNG, WebP. Erkannt an den Bytes der Datei, nicht an ihrem Namen oder Content-Type. |
| Dateigröße | Bis 20 MB (20 × 1024 × 1024 Bytes; die 28-MB-Grenze für den JSON-Body wird genauso gezählt). |
| Abmessungen | Längste Seite bis 8000 px; kürzeste Seite mindestens 32 px. |
| Farbe | RGB oder Graustufen. CMYK-JPEGs werden mit 400 invalid_image abgelehnt. |
| Animation | Animiertes WebP: nur das erste Bild wird verwendet. |
Eine Datei, die gegen diese Regeln verstößt, wird mit 400 invalid_image abgelehnt, bevor etwas berechnet wird.
Vier Wege, ein Bild zu senden
Verwenden Sie genau einen pro Anfrage. Keinen oder mehr als einen zu senden ergibt 400 invalid_request.
1. image_url
Ein öffentlicher http(s)-Link. Wir laden ihn einmal herunter, während wir Ihre Anfrage bearbeiten, ein signierter Link muss
also nur gültig bleiben, bis wir antworten. Wir folgen bis zu 3 Weiterleitungen und geben nach 15 Sekunden auf; lässt sich die
Datei nicht herunterladen, liefert die Anfrage 400 invalid_image. Links, die Cookies oder eine Anmeldung brauchen,
funktionieren nicht, ebenso wenig Adressen in einem privaten Netz wie localhost, 10.x.x.x oder 192.168.x.x.
{ "image_url": "https://example.com/banner.png" }2. image_base64
Die Bytes der Datei in Standard-Base64 (A–Z a–z 0–9 + /, Auffüllung optional) oder dasselbe als Data-URL mit beliebigem
Medientyp, etwa data:image/png;base64, oder das data:application/octet-stream;base64,, das der FileReader eines Browsers
erzeugen kann – das Format wird an den Bytes erkannt. Leerzeichen und Zeilenumbrüche werden ignoriert, die 76-Zeichen-Zeilen von
base64 unter Linux oder von Pythons base64.encodebytes funktionieren also. Base64 macht die Datei etwa ein Drittel größer,
daher darf der gesamte JSON-Body bis zu 28 MB groß sein; ein größerer Body ergibt 400 invalid_image. Text, der kein gültiges
Base64 ist, ergibt 400 invalid_request; gültiges Base64 einer Datei, die kein unterstütztes Bild ist, ergibt 400 invalid_image.
{ "image_base64": "iVBORw0KGgoAAAANSUhEUgAA..." }
{ "image_base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }3. Multipart-Datei-Upload
Senden Sie multipart/form-data mit der Datei im Feld image. Bei POST /edits gehört das Array replacements als
JSON-String in ein Formularfeld; match, language und callback_url sind normale Formularfelder.
curl https://api.rewords.ai/v1/edits \
-H "Authorization: Bearer $REWORDS_API_KEY" \
-F [email protected] \
-F 'replacements=[{"from":"SALE","to":"HOT DEAL"}]'import crypto from 'node:crypto';
import fs from 'node:fs';
const form = new FormData();
form.append('image', new Blob([await fs.promises.readFile('banner.png')]), 'banner.png');
form.append('replacements', JSON.stringify([{ from: 'SALE', to: 'HOT DEAL' }]));
const res = await fetch('https://api.rewords.ai/v1/edits', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.REWORDS_API_KEY}`, // let fetch set the multipart Content-Type
'Idempotency-Key': crypto.randomUUID(), // a new key per job; reuse it only to resend this same job
},
body: form,
});
const job = await res.json();
if (!res.ok) throw new Error(`${res.status} ${job.error.code}: ${job.error.message}`);
console.log(job.id, job.status);4. image_id
POST /ocr liefert eine image_id. Übergeben Sie sie innerhalb von 24 Stunden an POST /edits, um das hochgeladene Bild
wiederzuverwenden, statt es erneut zu senden. Sie funktioniert nur für das Konto, das sie erzeugt hat; eine unbekannte,
abgelaufene oder fremde id ergibt 400 invalid_request. Jeder OCR-Aufruf liefert eine neue image_id, auch für ein Bild, das Sie
schon gesendet haben – auch wenn Sie eine image_id an POST /ocr senden, was Ihnen neue 24 Stunden gibt.
Wie wir Ihr Bild lesen
- Die EXIF-Ausrichtung wird zuerst angewendet. Ein seitlich gespeichertes Handyfoto wird aufgerichtet, und alle
width,heightund Boxen beziehen sich auf das aufgerichtete Bild – so, wie Sie es in einem Bildbetrachter sehen. - Transparente Bereiche werden weiß. Die Transparenz von PNG und WebP wird auf einen weißen Hintergrund reduziert, weil die Ergebnisse JPEG sind.
Ergebnisse
results.A.url,results.B.urlundresults.C.urlsind JPEG-Dateien unter öffentlichen Links: Laden Sie sie mit einem einfachenGETherunter, ohne API-Schlüssel. Behandeln Sie die Links als privat – wer einen hat, kann ihn öffnen.- Senden Sie beim Herunterladen einen
User-Agent-Header. Der Standardwert von Pythonurllibwird mit403abgelehnt;requests,curl, Browser und Nodefetchfunktionieren ohne Änderung. - Links bleiben mindestens 7 Tage erhalten. Laden Sie herunter, was Sie behalten möchten.
- Ergebnisdateien werden aufgerichtet und ohne EXIF-Ausrichtung gespeichert, die Größe in der Datei ist also die Größe, die Sie sehen.
- B ist Ihr Originalbild mit dem eingefügten neuen Text. A ist die Neuzeichnung des ganzen Bildes durch die KI und behält das Seitenverhältnis Ihres Bildes. Lesen Sie die Pixelgröße aus der Datei, statt anzunehmen, dass sie Ihrem Upload entspricht.
- C (4K) hat bis zu etwa 8,3 Megapixel (entsprechend 3840 × 2160), längste Seite höchstens 3840 px, gleiches Seitenverhältnis. Bei Bildern, die breiter oder höher als 3:1 sind, entfällt es.
Boxen und Pixel
Boxen sind [x, y, width, height], ganze Zahlen auf einer Skala von 0–1000 des aufgerichteten Bildes, gemessen von der oberen
linken Ecke. width und height sind mindestens 1; x + width und y + height sind nie größer als 1000.
pixel left = x / 1000 * imageWidth
pixel top = y / 1000 * imageHeight
pixel width = width / 1000 * imageWidth
pixel height = height / 1000 * imageHeightBeispiel: Die Box [120, 80, 300, 60] auf einem Bild mit 1080 × 1350 ist links 130, oben 108, 324 × 81 px (gerundet).
Um eine eigene Box zu senden, rechnen Sie in die andere Richtung um und runden auf ganze Zahlen.
Warteschlange und Limits
Parallelität der ReWords.AI API, die Warteschlange für 30 Jobs, Rate-Limits für Sendungen und Abfragen, Polling, Bildgrößen, Retry-After und idempotente Wiederholungen.
Webhooks
Erhalten Sie einen signierten ReWords.AI-Webhook, wenn eine Bearbeitung fertig ist, und prüfen Sie das HMAC in X-Rewords-Signature mit Node.js oder Python.