Zum Hauptinhalt springen
Die Bildgenerierung auf Venice ist synchron. Sende einen Prompt an /image/generate und erhalte dein Bild in derselben Antwort – entweder als Base64 in JSON oder als rohes Binary, wenn return_binary auf true steht.

Endpoints

Schritt 1: Generierungsanfrage senden

Die Größenangabe ist modellspezifisch. Manche Modelle akzeptieren explizite width und height; manche stellen aspect_ratio bereit; und Resolution-Tier-Modelle bieten aspect_ratio plus resolution-Werte wie 1K, 2K oder 4K.
qwen-image, qwen-image-3, qwen-image-3-pro, qwen-image-2-1-turbo und qwen-image-2-1-pro akzeptieren width oder height nicht mehr. Das Senden eines der beiden gibt 400 mit “width and height are no longer supported for this model. Use aspect_ratio instead.” zurück. Prüfe model_spec.constraints aus GET /models?type=image, bevor du die Größenfelder wählst.
Beispiel für Pixel-basierte Größe:
Beispiel für Aspect-Ratio-Größe:
Beispiel für Resolution-Tier-Größe:
Dasselbe Muster gilt für andere Resolution-Tier-Modelle:
Nutze Image-Modelle oder die Models-API, um zu prüfen, welche Größenfelder ein Modell akzeptiert. Antwort (200):
Das images-Array enthält Base64-kodierte Bilddaten. Dekodiere den ersten Eintrag, um das Bild zu speichern oder anzuzeigen. timing.total ist die vollständige Request-Dauer in Millisekunden.

Schritt 2: Bild dekodieren und speichern

Schritt 3: Binary statt JSON zurückgeben (optional)

Wenn der Response-Body die Bilddatei selbst sein soll, setze return_binary: true. Das ist nützlich, wenn du das Bild direkt streamen oder speichern willst, ohne Base64 zu dekodieren.
Wenn return_binary auf true steht, ist der Response-Body rohe image/jpeg-, image/png- oder image/webp-Daten – je nach angefordertem format.
variants wird nur unterstützt, wenn return_binary auf false steht.

Schritt 4: Verfügbare Image-Styles auflisten (optional)

Wenn du style_preset nutzen willst, frage zuerst die verfügbaren Styles über /image/styles ab:
Dieser Endpoint ist öffentlich und erfordert keinen API-Schlüssel. Antwort (200):
Die Style-Namen befinden sich in data, nicht auf der obersten Ebene – lies response.data, statt direkt über das Response-Objekt zu iterieren. Übergib dann einen dieser Werte in deiner Generierungsanfrage:
Nutze den Styles-Endpoint, wenn du exakte Preset-Namen brauchst, statt sie zu raten.

Request-Parameter

Die Validierung ist modellspezifisch. Prüfe Image-Modelle und die Models-API, bevor du dich quer über mehrere Modelle auf einen Parameter verlässt.

Modellspezifische Optionen

Hochauflösende Generierung

Manche Image-Modelle unterstützen aspect_ratio ohne wählbare resolution-Stufe. Beispiel: qwen-image-2 akzeptiert eine Aspect-Ratio und mappt sie auf modellspezifische Ausgabedimensionen:
Andere Image-Modelle unterstützen aspect_ratio plus eine resolution-Stufe. Beispiel: gpt-image-2, nano-banana-2 und nano-banana-pro unterstützen 1K, 2K und 4K:
Nutze Image-Modelle, um zu sehen, welche Modelle höhere Auflösungen unterstützen und wie sie bepreist werden.

LoRA-Stärke

Einige Bildmodelle wenden zusätzliche LoRAs an. lora_strength (integer, 0 bis 100) legt fest, wie stark sie angewendet werden, und wirkt sich nur auf Modelle aus, die sie verwenden. Die API akzeptiert keine eigenen LoRA-Dateien, und kein Endpoint listet die LoRAs auf, die ein Modell verwendet. lora_strength ist die einzige LoRA-Steuerung.

Adult-Inhalte und Safe Mode

safe_mode steuert, ob Adult-Inhalte in der Generierungsausgabe unscharf gemacht werden. Der Default ist true, daher kommen als Adult eingestufte Bilder unscharf zurück, sofern du nicht safe_mode: false sendest:
Nicht unscharfe Adult-Bilder (NSFW) stehen allen API-Nutzern zur Verfügung. Du brauchst kein Pro-Abo, und die Einstellung für den Filter für Inhalte für Erwachsene in der Venice-App hat keinen Einfluss auf Bildanfragen über die API. Manche Image-Modelle sind speziell für Adult-/unzensierte Generierung ausgelegt und passen gut zu safe_mode: false. Beispiele auf der Pricing-Seite sind lustify-sdxl, lustify-v7 und lustify-v8. Die aktuelle Liste und die Kosten pro Modell findest du unter Image-Modelle und Pricing. Für das Bearbeiten bestehender Bilder ist das Default-Edit-Modell firered-image-edit. Die Inhaltsrichtlinien variieren je nach Edit-Modell; wenn du unzensiertes Editing brauchst, nutze qwen-edit-uncensored über Image Editing. Wenn safe_mode aktiv ist und das Modell eine unscharfe oder moderierte Ausgabe zurückgibt, kannst du die Response-Header x-venice-is-blurred und x-venice-is-content-violation prüfen, falls du das programmatisch erkennen musst.
Du nutzt eine Drittanbieter-App? Adult-Bilder bleiben unscharf, sofern die App nicht safe_mode: false oder beim OpenAI-kompatiblen Endpoint moderation: "low" sendet (siehe unten).

Style-Presets

Wenn das gewählte Modell es unterstützt, kannst du mit style_preset die Ausgabe steuern, ohne deinen gesamten Prompt umzuschreiben. Gültige Preset-Namen findest du unter Image Styles:
Die aktuelle Style-Liste findest du unter Image Styles.

Style-Referenzen

style_references geht einen Schritt weiter als style_preset: Statt eines benannten Presets richtet sich die Generierung an einem oder mehreren Referenzbildern aus. Jeder Eintrag hat ein image und optional eine strength:
Die Unterstützung hängt vom Modell ab. Prüfe GET /models?type=image:
  • model_spec.supportsStyleReferences ist nur bei Modellen true, die das Feld akzeptieren.
  • model_spec.constraints.maxStyleReferences gibt an, wie viele Einträge das Modell akzeptiert.
  • model_spec.constraints.supportsStyleReferenceStrength zeigt dir, ob strength überhaupt eine Wirkung hat.
Wenn du style_references an ein Modell ohne Unterstützung sendest, bekommst du einen 400. Dasselbe gilt, wenn du das Limit des Modells überschreitest oder eine beschädigte, nicht erreichbare oder zu große Referenz sendest. Manche Modelle berechnen zusätzlich zum Basispreis pro Bild eine Style-Referenz-Gebühr für jedes zurückgegebene Bild, zum Beispiel Krea v2 Large und Krea v2 Medium. Die Gebühr fällt nur für Bilder an, die tatsächlich zurückgegeben werden. Die Basispreise pro Bild findest du unter Image-Modelle.

Teilweise Varianten-Ergebnisse

Bei variants größer als 1 können einzelne Varianten von der Inhaltsrichtlinie des Providers abgelehnt werden, während die übrigen erfolgreich sind. In diesem Fall gibt der Endpoint trotzdem 200 zurück, allerdings mit weniger Bildern als angefordert:
  • Wenn eine oder mehrere Varianten ausgelassen werden, enthält der JSON-Body content_policy_violation_count, also die Anzahl der ausgelassenen Varianten.
  • Der Response-Header x-venice-content-violation-count enthält dieselbe Anzahl.
  • x-venice-is-content-violation und x-venice-is-blurred beziehen sich auf die zurückgegebenen Bilder.
Werden alle angeforderten Varianten abgelehnt, werden keine Bilder zurückgegeben und die Anfrage schlägt stattdessen mit 422 fehl. Geh nicht davon aus, dass len(images) == variants gilt; vergleiche die Länge des Arrays mit variants und prüfe, falls vorhanden, content_policy_violation_count.

OpenAI-kompatibler Endpoint

Wenn du bereits OpenAI-Image-SDKs oder bestehende DALL-E-Integrationen verwendest, unterstützt Venice auch POST /images/generations. Das Request-Format ist einfacher, bietet aber weniger Features als der native Venice-Endpoint. Request:
size gilt nur für pixelbasierte Modelle, die in model_spec.constraints aus GET /models?type=image einen widthHeightDivisor größer als 1 haben. Die meisten Modelle, darunter qwen-image-2, bestimmen die Ausgabegröße stattdessen über Seitenverhältnis und Auflösung und ignorieren size. Manche OpenAI-Parameter werden aus Gründen der SDK-Kompatibilität akzeptiert, aber ignoriert (n ist auf 1 beschränkt): Auf dieser Route gibt es keine Steuerung der Stufen: Es gibt kein Feld resolution oder aspect_ratio, und quality kann die Kosten weder erhöhen noch senken. Nutze bei GPT-Image-Modellen mit Stufen den nativen Endpoint /image/generate, wenn du quality, resolution oder aspect_ratio wählen willst. Nutze die OpenAI-kompatible Route für schnellere Migrationen. Verwende /image/generate, wenn du Venice-spezifische Optionen wie cfg_scale, style_preset, style_references, variants oder Binary-Responses brauchst.

Adult-Content-Unschärfe auf /images/generations steuern

Der OpenAI-kompatible Endpoint akzeptiert safe_mode nicht. Wird er gesendet, gibt es einen 400 mit Unrecognized key(s) in object: 'safe_mode'. Nutze stattdessen den OpenAI-typischen Parameter moderation:
safe_mode funktioniert nur auf dem nativen Endpoint POST /image/generate. moderation funktioniert nur auf dem OpenAI-kompatiblen Endpoint POST /images/generations. Dieselbe Aufteilung gilt für Transparenz: /image/generate verwendet transparent_background: true, während /images/generations den OpenAI-typischen Parameter background: "transparent" nutzt. Beide erfordern das Ausgabeformat png oder webp und ein Modell mit supportsTransparentBackground: true. Siehe Bilder mit transparentem Hintergrund.

Prompting-Tipps

  1. Mit dem Motiv beginnen, dann Medium, Beleuchtung, Komposition und Stimmung ergänzen.
  2. Zu vermeidende Details ins negative_prompt stecken, statt den Hauptprompt zu überladen.
  3. seed beim Iterieren wiederverwenden, um Prompt-Änderungen zu vergleichen, ohne die Komposition komplett zu wechseln.
  4. Größenangabe modellbewusst halten. Manche Modelle nutzen width/height, manche aspect_ratio, Resolution-Tier-Modelle aspect_ratio plus resolution.
  5. variants beim Explorieren nutzen, dann auf eine einzelne Ausgabe zurückwechseln, sobald die Richtung steht.

Fehler

Wenn safe_mode aktiviert ist (oder moderation auf auto steht), prüfe Response-Header wie x-venice-is-blurred und x-venice-is-content-violation, wenn du Moderationsergebnisse programmatisch erkennen musst.

Verfügbare Modelle

Aktuelle Modellliste, Preise und Feature-Support unter Image-Modelle.