Skip to Content
API-ReferenzOpenAI-kompatibles ProtokollImages

Images API

Zwei Endpunkte: Generieren (Text → Bild) und Bearbeiten (Bild + Text → Bild). Beide Antworten folgen der OpenAI-Standardstruktur data[0].b64_json.

Was Sie tun möchtenEndpunktUnterstützte Modelle
Ein Bild aus Text generierenPOST /v1/images/generationsDie Reihen GPT Image, Nano Banana (Gemini), Seedream, Qwen-Image und MAI Image
Ein Bild hochladen und per Anweisung bearbeitenPOST /v1/images/editsGPT Image, Nano Banana (Gemini), MAI Image

Seedream und Qwen-Image unterstützen /v1/images/edits nicht. Bild-zu-Bild läuft bei ihnen über den Endpunkt generations, allerdings mit unterschiedlichen Feldern für Referenzbilder: Seedream verwendet image, Qwen verwendet input_images — verwechseln Sie die beiden nicht. Wenn Sie bei Gemini die Auflösung steuern möchten (512 bis 4K), nutzen Sie das native Gemini-Protokoll. Die Parameterunterschiede der einzelnen Reihen finden Sie auf der jeweiligen Seite der Reihe.

Schnellstart

Eine minimale, lauffähige Anfrage: ein Bild mit 1024×1024 generieren, dekodieren und als output.png speichern.

base_urlhttps://api.ofox.ai/v1
Endpunkt Text zu Bildhttps://api.ofox.ai/v1/images/generations
Endpunkt Bearbeitenhttps://api.ofox.ai/v1/images/edits
Modell-IDopenai/gpt-image-2.5-flare
gen.py
import base64 from openai import OpenAI client = OpenAI( api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.ai/v1", timeout=600, # die Bild-API antwortet synchron und braucht oft länger ) resp = client.images.generate( model="openai/gpt-image-2.5-flare", prompt="Ein roter Apfel auf einem weißen Tisch", size="1024x1024", quality="low", ) with open("output.png", "wb") as f: f.write(base64.b64decode(resp.data[0].b64_json))

Die API antwortet synchron; setzen Sie das Timeout Ihres Clients auf 600 Sekunden. Anfragen mit hoher Qualität, großen Formaten sowie Bearbeitungen können mehrere Minuten dauern; siehe gemessene Latenz.

Alle Reihen werden auf dieselbe Weise aufgerufen; für einen Modellwechsel ändern Sie nur model. Wertebereiche und reihenspezifische Parameter unterscheiden sich; siehe die einzelnen Parameter unten.

Bilder generieren

POST https://api.ofox.ai/v1/images/generations

Anfrageparameter

Die folgenden Werte und Standardwerte gelten für die Reihe GPT Image (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2). Abweichungen anderer Reihen sind jeweils vermerkt. Gemessene Details: Reihe GPT Image.

Erforderlich
modelerforderlichstring

Modell-ID; Groß- und Kleinschreibung wird unterschieden. Eine falsche Schreibweise liefert 404 model_not_found.

▸ Details

Die unterstützten Modelle stehen in der Tabelle oben auf dieser Seite. Verwenden Sie die vollständige ID mit Anbieterpräfix, z. B. openai/gpt-image-2.5-flare.

prompterforderlichstring

Beschreibt das zu generierende Bild.

Häufig verwendet
sizestring· Standard auto· WerteWIDTHxHEIGHTauto

Ausgabegröße. Breite und Höhe sind frei wählbar, müssen aber vier Regeln erfüllen, andernfalls erhalten Sie 400 Invalid size.

▸ Details

Die vier Regeln:

  • Breite und Höhe jeweils durch 16 teilbar
  • Längste Kante ≤ 3840
  • Seitenverhältnis zwischen 1:3 und 3:1
  • Gesamtpixelzahl ≥ 655.360 (768x768 ist unzulässig, 1024x768 ist zulässig)

Weggelassen oder auto: Das Modell entscheidet; gemessen wurden 1254×1254. Geben Sie die Größe explizit an, wenn Sie eine feste Größe benötigen. Für andere Reihen gelten andere Größenregeln; siehe die jeweilige Seite der Reihe. Details: GPT Image · Größe.

qualitystring· Wertelowmediumhighxhighmaxauto

Qualitätsstufe; bestimmt direkt den Preis. gpt-image-2 hat kein xhigh / max.

▸ Details
  • gpt-image-2 hat kein xhigh / max; diese Werte liefern 400.
  • Die Werte standard / hd aus der DALL·E-Ära werden nicht angenommen und liefern 400.
  • Weglassen ist nicht gleichbedeutend mit medium: Das Modell wählt selbst eine Stufe (gemessen: low). Setzen Sie den Wert explizit, wenn Sie stabile Qualität und Kosten benötigen.

Die meisten anderen Reihen haben keine Qualitätsstufen; siehe die jeweilige Seite der Reihe. Details: GPT Image · Qualität.

ninteger· Standard 1· Werte1–10

Anzahl der Bilder; jedes Bild wird einzeln abgerechnet. Von Gemini-Modellen nicht unterstützt; senden Sie den Parameter dort nicht.

output_formatstring· Standard png· Wertepngjpegwebp

Dateiformat der Ausgabe.

▶Erweitert · 7output_compression · background · moderation · stream · partial_images · input_images · extra_body.provider.typeExpand
output_compressioninteger· Werte0–100

Komprimierungsgrad; wirkt nur bei jpeg / webp.

backgroundstring· Standard opaque· Werteopaquetransparentauto

Hintergrund. transparent erfordert ein Format mit Alphakanal (png / webp).

moderationstring· Werteautolow

Strenge der Inhaltsmoderation.

streamboolean· Wertetruefalse

Antwort per Streaming übertragen. Zusammen mit partial_images erhalten Sie während der Generierung Zwischenbilder.

partial_imagesinteger· Werte0–3

Anzahl der per Streaming übertragenen Zwischenbilder; erfordert zusätzlich stream: true. Laut OpenAI-Dokumentation werden pro Zwischenbild zusätzlich 100 Ausgabe-Tokens berechnet.

input_imagesstring[]· Werte1–3 Bilder

Array von Referenzbildern (URL oder base64); nur von der Reihe Qwen unterstützt, 1–3 Bilder.

▸ Details

Andere Reihen melden keinen Fehler, ignorieren den Parameter aber; bei Seedream heißt das Feld für Referenzbilder image.

extra_body.provider.typestring· Werteazure_foundryopenai

Legt den Anbieter fest. Optional und in der Regel nicht nötig; das Gateway leitet automatisch weiter. Sinnvoll, wenn Sie Anforderungen an die Inhaltsmoderation haben. Ist ein Anbieter festgelegt und nicht verfügbar, wird nicht automatisch auf einen anderen Anbieter ausgewichen.

▸ Details

Gleichwertig ist der Header X-OfoxAI-Provider-Type. Siehe Erweitert: Anbieter festlegen.

Antwort

200 OK (b64_json gekürzt)
{ "created": 1777385517, "data": [ { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 } ], "model": "openai/gpt-image-2.5-flare", "size": "1024x1024", "quality": "low", "usage": { "input_tokens": 13, "input_tokens_details": { "text_tokens": 13 }, "output_tokens": 196, "output_tokens_details": { "image_tokens": 196 }, "total_tokens": 209 } }

Das Bild als base64, ohne das Präfix data:image/png;base64,.

▸ Details

Dekodieren Sie es und schreiben Sie die Datei; zur Anzeige im Browser müssen Sie das Präfix selbst ergänzen. Ein Feld url enthält die Antwort nicht.

Bildindex; unterscheidet die Bilder bei n > 1.

sizestring

Die tatsächliche Ausgabegröße. Wurde size weggelassen oder auf auto gesetzt, lesen Sie die tatsächliche Größe hier ab.

qualitystring

Die tatsächlich verwendete Qualitätsstufe. Wurde quality weggelassen, sehen Sie hier, welche Stufe verwendet wurde.

Tatsächlich verwendeter Hintergrund und tatsächlich verwendetes Format. Nicht immer enthalten; verlassen Sie sich nicht auf diese beiden Felder.

usageobject

Abrechnungsrelevante Nutzung. output_tokens sind die Tokens des ausgegebenen Bildes, input_tokens_details.text_tokens sind die Tokens des Prompts.

▸ Details

Berechnen Sie die Kosten eines Aufrufs anhand dieser Werte.

Bilder bearbeiten

POST https://api.ofox.ai/v1/images/edits

Dieser Endpunkt unterstützt GPT Image, Nano Banana (Gemini) und MAI Image. Aufrufe mit Seedream und Qwen-Image liefern 400 endpoint_not_supported; verwenden Sie stattdessen das Referenzbildfeld des Generierungs-Endpunkts, siehe Seedream und Qwen-Image.

Anfrageparameter

multipart/form-data: Die Parameter werden als Formularfelder gesendet, die Bilddatei wird hochgeladen. Werte und Standardwerte gelten auch hier für die Reihe GPT Image.

Erforderlich
modelerforderlichstringform

Modell-ID; gleiche Regeln wie beim Generierungs-Endpunkt. Die unterstützten Modelle stehen in der Tabelle oben auf dieser Seite.

imageerforderlichfileform· WertePNGJPEG

Referenzbild als lokale Datei (in cURL mit dem Präfix @), keine URL.

▸ Details

Für mehrere Bilder wiederholen Sie das Feld unter dem Namen image[]. Höchstens 15 MB pro Datei, höchstens 50 MB pro Request-Body; das Gateway begrenzt die Anzahl nicht zusätzlich, empfohlen sind höchstens 16 Bilder.

prompterforderlichstringform

Die Bearbeitungsanweisung.

Häufig verwendet
maskfileform· WertePNG mit Alpha

Maske für das lokale Neuzeichnen: ein PNG mit Alphakanal in derselben Größe wie image; transparente Bereiche werden neu gezeichnet.

▸ Details

Wirkt nur an diesem Endpunkt; beim Generierungs-Endpunkt wird sie stillschweigend ignoriert. Erstellung und gemessene Wirkung: GPT Image · Inpainting mit Maske.

sizestringform· Standard auto· WerteWIDTHxHEIGHTauto

Ausgabegröße; gleiche Regeln wie beim Generierungs-Endpunkt.

▸ Details

Weggelassen oder auto: Das Modell entscheidet, die Größe entspricht nicht zwingend dem Original. Geben Sie sie explizit an, um die Originalgröße beizubehalten.

qualitystringform· Wertelowmediumhighxhighmaxauto

Qualitätsstufe; gleiche Regeln wie beim Generierungs-Endpunkt: gpt-image-2 hat kein xhigh / max.

nintegerform· Standard 1· Werte1–10

Anzahl der Bilder; jedes Bild wird einzeln abgerechnet.

▶Erweitert · 1X-OfoxAI-Provider-TypeExpand
X-OfoxAI-Provider-Typestringheader· Werteazure_foundryopenai

Legt den Anbieter fest. Optional und in der Regel nicht nötig; das Gateway leitet automatisch weiter. Sinnvoll, wenn Sie Anforderungen an die Inhaltsmoderation haben. Ist ein Anbieter festgelegt und nicht verfügbar, wird nicht automatisch auf einen anderen Anbieter ausgewichen.

▸ Details

Dieser Endpunkt ist ein Multipart-Upload; um einen Anbieter festzulegen, funktioniert nur der Header. Ein Formularfeld extra_body wird stillschweigend ignoriert. Siehe Erweitert: Anbieter festlegen.

Antwort

Gleiche Struktur wie beim Generierungs-Endpunkt; usage enthält zusätzlich die Eingabe-Tokens der Referenzbilder:

200 OK (b64_json gekürzt)
{ "created": 1777385669, "data": [ { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 } ], "model": "openai/gpt-image-2", "size": "auto", "quality": "low", "usage": { "input_tokens": 1041, "input_tokens_details": { "image_tokens": 1024, "text_tokens": 17 }, "num_input_images": 1, "output_tokens": 358, "total_tokens": 1399 } }

Die für die Referenzbilder berechneten Eingabe-Tokens. Gemessen wurden 1.024 für ein Referenzbild mit 1024×1024. Dieser Posten ist der Hauptgrund, warum eine Bearbeitung mehr kostet als Text zu Bild in derselben Größe.

Anzahl der Referenzbilder. Damit können Sie prüfen, ob das Modell die Referenzbilder tatsächlich eingelesen hat.

Die übrigen Felder entsprechen der Antwort des Generierungs-Endpunkts.

Unterstützte Modelle und Preise finden Sie im Modellkatalog .

Aufruf

edit.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.ai/v1", timeout=600) with open("apple.png", "rb") as f: resp = client.images.edit( model="openai/gpt-image-2", image=f, prompt="Färbe den Apfel grün, lass alles andere unverändert", size="auto", quality="low", ) with open("apple_edited.png", "wb") as out: out.write(base64.b64decode(resp.data[0].b64_json))

Das Feld image erwartet einen lokalen Dateipfad (in cURL mit dem Präfix @), keine URL.

Gemessener Vergleich:

OriginalBearbeitet
Originaler roter ApfelBearbeiteter grüner Apfel

Fehler

Im Fehlerfall erhalten Sie einen HTTP-Fehlerstatus und folgende Struktur (gemessen):

400 Bad Request
{ "error": { "code": null, "message": "The model 'gpt-image-2' does not support quality 'xhigh'.", "param": null, "request_id": "fbe4f24c-779d-41a0-8b3a-c62886cdd1ae", "type": "image_generation_user_error" } }

code kann null sein. Werten Sie den HTTP-Status und message aus.

StatusFehlerUrsacheLösung
400Invalid size '…'Die Größe verletzt eine der vier RegelnGemäß den Regeln unter size anpassen
400does not support quality '…' oder ungültiger Wertxhigh / max an gpt-image-2 gesendet, oder standard / hd gesendetEinen unter quality aufgeführten Wert verwenden
400Unknown parameter: '…'Nicht unterstütztes Feld gesendet, z. B. style aus DALL·EDas Feld entfernen
400Invalid image file or mode for image 1Referenzbild ist kein PNG / JPEG, oder die Maske ist kein PNG mit Alpha bzw. weicht in der Größe vom Original abimage und mask prüfen
400provider_type_unavailableDer festgelegte Anbieter stellt dieses Modell nicht bereitDen Anbieterparameter entfernen und das Gateway automatisch weiterleiten lassen
404model_not_foundModell-ID falsch geschrieben oder falsche Groß-/KleinschreibungDie vollständige ID aus der Tabelle auf dieser Seite kopieren
429rate_limit_exceededMehr als 100 RPM pro Team; zusätzliche Keys erhöhen das Limit nichtParallelität verringern, mit Backoff erneut versuchen

Geben Sie bei Anfragen an den Support die request_id aus der Antwort und die Fehlerinformationen (HTTP-Status und error.message) an. Wir empfehlen, diese Werte zu protokollieren.

Erweitert: Anbieter festlegen

Optional und in der Regel nicht nötig. Alle drei GPT-Image-Modelle (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2) werden sowohl von azure_foundry als auch von openai bereitgestellt, jeweils für Generierung und Bearbeitung. Ohne Festlegung leitet das Gateway automatisch weiter.

Wenn Sie Anforderungen an die Inhaltsmoderation haben, können Sie einen Anbieter festlegen. Anfragen gehen dann nur an diesen Anbieter; ist er nicht verfügbar, wird nicht automatisch auf einen anderen Anbieter ausgewichen.

Die Angabe eines Anbieters, der das Modell nicht bereitstellt, liefert 400 provider_type_unavailable.

AnbieterBeschreibungInhaltsmoderation (gpt-image-2)
azure_foundryGehostet auf Microsoft AzureStrenger
openaiOffizielle API von OpenAIVergleichsweise großzügig

Die beiden Anbieter von openai/gpt-image-2 moderieren unterschiedlich streng. Wird ein Prompt wiederholt abgelehnt, können Sie openai explizit festlegen. Ohne Festlegung werden Anfragen gewichtet verteilt und können bei azure_foundry landen.

Text zu Bild /v1/images/generations

JSON-Request-Body: Sowohl das Body-Feld extra_body.provider.type als auch der Header X-OfoxAI-Provider-Type funktionieren.

gen_pinned.py
resp = client.images.generate( model="openai/gpt-image-2", prompt="A simple red apple on a white table", size="1024x1024", extra_body={"extra_body": {"provider": {"type": "openai"}}}, )

Bei den offiziellen OpenAI-SDKs muss extra_body als wörtlicher Schlüssel im Request-Body stehen. Im TypeScript-SDK schreiben Sie extra_body direkt in das Parameterobjekt. Das Argument extra_body= des Python-SDK führt seinen Inhalt auf der obersten Ebene des Bodys zusammen; verschachteln Sie ihn daher eine Ebene tiefer oder verwenden Sie den Header.

Bild zu Bild /v1/images/edits

Ein Multipart-Upload hat keinen JSON-Body, in den sich extra_body verschachteln ließe; hier funktioniert daher nur der Header.

Terminal
curl https://api.ofox.ai/v1/images/edits \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "X-OfoxAI-Provider-Type: openai" \ -F "model=openai/gpt-image-2" \ -F "prompt=..." \ -F "image=@input.png"

Mit den SDKs: In Python übergeben Sie extra_headers={"X-OfoxAI-Provider-Type": "openai"}; in TypeScript übergeben Sie { headers: { 'X-OfoxAI-Provider-Type': 'openai' } } als zweites Argument.

An /v1/images/edits wird ein als Formularfeld gesendetes extra_body stillschweigend ignoriert: Das Bild wird normal generiert, die Festlegung greift aber nicht. Verwenden Sie stattdessen X-OfoxAI-Provider-Type.

Vollständige Referenz: API · Provider-Routing.

Offizielle Dokumentation und weitere Seiten

Die offizielle Dokumentation beschreibt das Verhalten bei direktem Aufruf von OpenAI. Weicht sie von den gemessenen Ergebnissen bei OfoxAI ab, gelten die gemessenen Ergebnisse auf dieser Website.

OpenAI

OfoxAI-Seiten der Reihen

Zuletzt aktualisiert am