ReWords.AI API

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
FormateJPEG, PNG, WebP. Erkannt an den Bytes der Datei, nicht an ihrem Namen oder Content-Type.
DateigrößeBis 20 MB (20 × 1024 × 1024 Bytes; die 28-MB-Grenze für den JSON-Body wird genauso gezählt).
AbmessungenLängste Seite bis 8000 px; kürzeste Seite mindestens 32 px.
FarbeRGB oder Graustufen. CMYK-JPEGs werden mit 400 invalid_image abgelehnt.
AnimationAnimiertes 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"}]'
upload.mjs — Node.js 18+
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, height und 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.url und results.C.url sind JPEG-Dateien unter öffentlichen Links: Laden Sie sie mit einem einfachen GET herunter, 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 Python urllib wird mit 403 abgelehnt; requests, curl, Browser und Node fetch funktionieren 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 * imageHeight

Beispiel: 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.

Auf dieser Seite