/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 explizitewidth und height; manche stellen aspect_ratio bereit; und Resolution-Tier-Modelle bieten aspect_ratio plus resolution-Werte wie 1K, 2K oder 4K.
Beispiel für Pixel-basierte Größe:
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, setzereturn_binary: true. Das ist nützlich, wenn du das Bild direkt streamen oder speichern willst, ohne Base64 zu dekodieren.
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 dustyle_preset nutzen willst, frage zuerst die verfügbaren Styles über /image/styles ab:
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:
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ützenaspect_ratio ohne wählbare resolution-Stufe. Beispiel: qwen-image-2 akzeptiert eine Aspect-Ratio und mappt sie auf modellspezifische Ausgabedimensionen:
aspect_ratio plus eine resolution-Stufe. Beispiel: gpt-image-2, nano-banana-2 und nano-banana-pro unterstützen 1K, 2K und 4K:
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:
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 mitstyle_preset die Ausgabe steuern, ohne deinen gesamten Prompt umzuschreiben. Gültige Preset-Namen 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.supportsStyleReferencesist nur bei Modellentrue, die das Feld akzeptieren.model_spec.constraints.maxStyleReferencesgibt an, wie viele Einträge das Modell akzeptiert.model_spec.constraints.supportsStyleReferenceStrengthzeigt dir, obstrengthüberhaupt eine Wirkung hat.
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
Beivariants 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-countenthält dieselbe Anzahl. x-venice-is-content-violationundx-venice-is-blurredbeziehen sich auf die zurückgegebenen Bilder.
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 auchPOST /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
- Mit dem Motiv beginnen, dann Medium, Beleuchtung, Komposition und Stimmung ergänzen.
- Zu vermeidende Details ins
negative_promptstecken, statt den Hauptprompt zu überladen. seedbeim Iterieren wiederverwenden, um Prompt-Änderungen zu vergleichen, ohne die Komposition komplett zu wechseln.- Größenangabe modellbewusst halten. Manche Modelle nutzen
width/height, mancheaspect_ratio, Resolution-Tier-Modelleaspect_ratioplusresolution. variantsbeim 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.