🎁 Neu Kostenlos registrieren, 10 Aufrufe gratis. Bis zu 1 $, ohne Karte.

Bildgenerierung

POST /v1/images/generations

Generiere Bilder aus einem Text-Prompt. OpenAI-kompatibel — derselbe Endpoint und SDK-Aufruf (client.images.generate) wie bei der Bild-API von OpenAI, geroutet über Bildmodelle von OpenAI, Google, Alibaba und ByteDance hinter einem einzigen API-Key.

Der Zugriff ist derzeit über eine Allowlist beschränkt (bestimmte Workspaces/Nutzer). Ein Key, der nicht auf der Allowlist steht, erhält 403 image_gateway_not_allowlisted — bitte deinen Administrator, ihn für deinen Workspace freizuschalten.

Anfragetext

ParameterTypBeschreibung
model*stringDas zu verwendende Bildmodell (z. B. gpt-image-1, qwen-image-2.0, seedream-4-0-250828). Liste alle verfügbaren Modelle über GET /v1/images/models auf.
prompt*stringTextbeschreibung des gewünschten Bildes.
nintegerAnzahl der zu generierenden Bilder (Standard 1).
sizestringBildgröße, z. B. 1024x1024. Die Unterstützung variiert je nach Modell — manche akzeptieren nur bestimmte Größen; lasse es weg, um den Standardwert des Modells zu verwenden.
qualitystringQualitäts-/Rendering-Hinweis, sofern das Modell ihn unterstützt (z. B. standard, hd).
response_formatstringb64_json (Standard) gibt base64-Bildbytes zurück; url gibt eine abrufbare URL zurück, sofern der Upstream dies unterstützt.
seedintegerOptionaler Seed für reproduzierbare Ausgaben (sofern unterstützt).
negative_promptstringOptionaler Text, der beschreibt, was vermieden werden soll (sofern unterstützt).
imagestring | string[]Image-to-image-Eingabe: base64 oder eine data URI (ein String oder ein Array für mehrere Referenzbilder). Wird es einbezogen, bearbeitet es das Eingabebild gemäß dem Prompt, anstatt nur aus Text zu generieren. http(s)-URLs werden noch nicht unterstützt.

Verfügbare Modelle

Die Modellverfügbarkeit hängt von deinem Deployment ab. Rufe die aktuelle, compliance-bewusste Liste ab über GET /v1/images/models. Eine repräsentative Auswahl:

Unsicher, welches Modell? Wählen Sie nach Ihrem Bedarf

VoraussetzungHinweisEmpfohlene Modelle
Am günstigsten $0.03 / image wan2.7-image seedream-4-0-250828
Höchste Qualität gemini-3-pro-image-preview gpt-image-2
Bildbearbeitung (Image-to-Image) das Feld image senden gpt-image-2 seedream-4-0-250828 wan2.7-image
Daten außerhalb Festlandchinas halten westliche Anbieter gpt-image-2 gemini-3-pro-image-preview
Langsame / grenzüberschreitende Client-Verbindungen response_format: "url" wan2.7-image qwen-image-2.0
ModellAnbieterPreisAntwortBearbeiten (i2i)Hinweise
gpt-image-2 OpenAI token · $5→$30 /1M b64 only ≤16 Flaggschiff; Organisationsverifizierung erforderlich
gpt-image-1.5 OpenAI token · $5→$32 /1M b64 only ≤16 Veraltet
gpt-image-1 OpenAI token · $5→$40 /1M b64 only ≤16 Veraltet
gpt-image-1-mini OpenAI token · $2→$8 /1M b64 only ≤16 Veraltet; günstigstes OpenAI
gemini-3-pro-image-preview Google token · $2→$120 /1M b64 only ≤14 Vorschau; Spitzenqualität
gemini-3.1-flash-image-preview Google token · $0.5→$60 /1M b64 only ≤14 Vorschau
gemini-3.1-flash-lite-image Google token · $0.25→$30 /1M b64 only ≤14 Vorschau; schnellstes Gemini
gemini-2.5-flash-image Google token · $0.3→$30 /1M b64 only ≤3 Einstellung am 2026-10-02
qwen-image-2.0 Alibaba $0.035 / image b64 · url ✓ ≤3
qwen-image-2.0-pro Alibaba $0.075 / image b64 · url ✓ ≤3 Höhere Qualität
wan2.7-image Alibaba $0.03 / image b64 · url ✓ ≤9 Am günstigsten
wan2.7-image-pro Alibaba $0.075 / image b64 · url ✓ ≤9
seedream-4-0-250828 ByteDance $0.03 / image b64 · url ✓ ≤10 Akzeptiert 1024×1024
seedream-4-5-251128 ByteDance $0.04 / image b64 · url ✓ ≤10 size ≥ 1920×1920
seedream-5-0-260128 ByteDance $0.035 / image b64 · url ✓ ≤10 5.0 Lite; size ≥ 1920×1920

Price: token · $in→$out /1M = nach Nutzung abgerechnet (OpenAI / Google); $/image = Pauschale pro generiertem Bild. Response: b64 · url ✓-Modelle können auch eine vorsignierte, vom Anbieter gehostete URL zurückgeben (response_format: "url", gültig ~24 h). Die Download-Geschwindigkeit hängt vom Anbieter ab: Alibaba-URLs nutzen ein global beschleunigtes CDN (überall schnell, auch in Festlandchina); ByteDance-seedream-URLs werden aus Objektspeicher in Singapur ausgeliefert (schnell für Kunden im Ausland, langsam aus Festlandchina). b64 only-Modelle lehnen response_format: "url" mit 400 url_not_supported ab. Edit (i2i) = jedes Modell unterstützt Image-to-Image (das Feld image senden); der Wert ist die maximale Anzahl an Referenzbildern.

Image-to-image (Bearbeitung)

Füge derselben Anfrage ein image-Feld hinzu, um ein Eingabebild zu bearbeiten oder zu referenzieren. Unterstützt bei gpt-image, gemini-*-image, qwen-image / wan2.7 und seedream (jedes Modell begrenzt, wie viele Eingabebilder es akzeptiert). Sende das Bild als base64 oder data URI; übergib ein Array für mehrere Referenzen.

curl https://synthorai.io/v1/images/generations \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "add a small red party hat on the main subject",
    "image": "'"$(base64 -i input.png)"'"
  }'

Antwortformat

Setze response_format: b64_json gibt base64-Bildbytes zurück (Standard); url gibt eine abrufbare URL zurück, sofern der Upstream dies unterstützt. Die Antwort entspricht der images-API von OpenAI: { created, data: [{ b64_json | url }] }.

url is supported only where the upstream itself hands back a CDN URL — currently the Alibaba and ByteDance families (qwen-image*, wan*, seedream*); the image downloads from the vendor's CDN via a pre-signed URL valid ~24 hours. OpenAI and Google models (gpt-image*, gemini*) are b64-only: requesting url there returns 400 url_not_supported — rejected before generation, nothing is billed. Check per model via the supports_url field of GET /v1/images/models, or the model table above.

Complete example — url mode

Generate with response_format: "url", read data[0].url from the response, then download the image from the vendor's CDN — a full round-trip you can paste into a terminal:

# 1) Generate — ask for a URL instead of inline base64
curl https://synthorai.io/v1/images/generations \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-image",
    "prompt": "a serene mountain lake at sunrise",
    "response_format": "url"
  }'

# → 200 in ~15–30 s. Tiny JSON body — no image bytes inline:
{
  "created": 1783064343,
  "data": [
    {
      "url": "https://dashscope-463f.oss-accelerate.aliyuncs.com/1d/8a/20260703/xxxx.png?Expires=1783151704&OSSAccessKeyId=LTAI...&Signature=bvTa..."
    }
  ]
}

# 2) Download from the vendor CDN — the URL is pre-signed, no auth header needed
curl -o out.png "https://dashscope-463f.oss-accelerate.aliyuncs.com/1d/8a/20260703/xxxx.png?Expires=1783151704&OSSAccessKeyId=LTAI...&Signature=bvTa..."

The URL is pre-signed — anyone with it can download, no auth header needed — and expires in ~24 hours: fetch promptly and re-host the file if you need it long-term. Typical end-to-end: ~15–30 s generation + sub-second CDN download.

Latency, large responses & timeouts

Generation time varies by model: qwen-image-2.0 typically returns in ~5–10 s, while wan2.7-image and seedream-class models take ~15–30 s (longer at 2K+ sizes). The gateway allows up to 180 s per request and returns 504 generation_timeout beyond that — this API itself never returns 408.

The default response_format=b64_json embeds the full image in the response body (2–3 MB of base64 for large models). On slow or long-haul client links, downloading that body can add minutes and trip your HTTP client's or relay gateway's own timeout — typically surfaced on your side as 408 or a timeout error.

Für Modelle mit großen Bildern oder Clients weit entfernt von der Serving-Region empfiehlt sich response_format: "url" — der Response-Body ist winzig und das Bild wird direkt vom Anbieter heruntergeladen. Anbieter-Unterschied: Alibaba-URLs (qwen-image*/wan*) laufen über ein global beschleunigtes CDN, schnell sogar vom chinesischen Festland; ByteDance-seedream-URLs werden aus Singapur-Objektspeicher ausgeliefert — schnell im Ausland, langsam vom chinesischen Festland. URLs sind vorsigniert und ~24 Stunden gültig: zeitnah abrufen und bei Bedarf für Persistenz erneut hosten. Falls du b64_json über eine langsame Verbindung nutzen musst, erhöhe den Client-Timeout auf ≥180 s.

Abrechnung

Wird nur bei Erfolg (HTTP 200) abgerechnet. Die meisten Modelle werden pro Bild abgerechnet (Anzahl × Stückpreis); OpenAI-gpt-image-*-Modelle, die die Token-Nutzung zurückgeben, werden pro Token abgerechnet. Jede Abrechnung wird mit request_id, model und cost zur Nachverfolgbarkeit erfasst.

Manche Modelle lehnen eine explizite size ab (z. B. geben seedream-4-5-251128 / seedream-5-0-260128 bei size=1024x1024 einen 400 zurück). Lasse bei einem InvalidParameter:size-Fehler size weg, um den Standardwert des Modells zu verwenden.

Beispiel — curl

curl https://synthorai.io/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-1",
    "prompt": "a serene mountain lake at sunrise, photorealistic",
    "n": 1,
    "size": "1024x1024"
  }'

Beispiel — Python (OpenAI SDK)

from openai import OpenAI
import base64

client = OpenAI(base_url="https://synthorai.io/v1", api_key="YOUR_API_KEY")

resp = client.images.generate(
    model="qwen-image-2.0",
    prompt="a serene mountain lake at sunrise, photorealistic",
    n=1,
    size="1024x1024",
)
# Default response_format is b64_json
img = base64.b64decode(resp.data[0].b64_json)
with open("out.png", "wb") as f:
    f.write(img)

Beispiel — Node (OpenAI SDK)

import OpenAI from "openai";
import fs from "node:fs";

const client = new OpenAI({
  baseURL: "https://synthorai.io/v1",
  apiKey: process.env.SYNTHORAI_API_KEY,
});

const resp = await client.images.generate({
  model: "seedream-4-0-250828",
  prompt: "a serene mountain lake at sunrise, photorealistic",
  n: 1,
});
fs.writeFileSync("out.png", Buffer.from(resp.data[0].b64_json, "base64"));

Idempotenz

Übergib einen X-Idempotency-Key Header, um Wiederholungen sicher zu machen: Eine erneute Anfrage mit demselben Key gibt 409 zurück, anstatt ein zweites Mal zu generieren (und abzurechnen). Die Bildgenerierung ist langsam und wiederholungsanfällig, daher verhindert dies doppelte Abrechnungen.