Passer au contenu principal
La génération d’images sur Venice est synchrone. Envoyez un prompt à /image/generate et recevez votre image dans la même réponse, soit en base64 dans un JSON, soit sous forme binaire brute lorsque return_binary est true.

Endpoints

EndpointObjectifQuand l’utiliser
POST /image/generateAPI de génération d’images native de VeniceÀ utiliser pour bénéficier du support complet des fonctionnalités
GET /image/stylesLister les presets de style disponiblesÀ utiliser avant d’envoyer style_preset
POST /images/generationsAPI de génération d’images compatible OpenAIÀ utiliser lors de la migration de clients d’images OpenAI existants

Étape 1 : Envoyer une requête de génération

Le dimensionnement est spécifique au modèle. Certains modèles acceptent width et height explicites ; d’autres exposent aspect_ratio ; et les modèles à paliers de résolution exposent aspect_ratio plus des valeurs resolution telles que 1K, 2K ou 4K. Exemple de dimensionnement basé sur les pixels :
POST https://api.venice.ai/api/v1/image/generate
Authorization: Bearer $VENICE_API_KEY
Content-Type: application/json

{
  "model": "venice-sd35",
  "prompt": "A cinematic photo of a gondola passing through a narrow Venice canal at blue hour, warm window lights reflecting on the water",
  "negative_prompt": "blurry, low quality, distorted anatomy, text, watermark",
  "width": 1024,
  "height": 1024,
  "format": "webp"
}
Exemple de dimensionnement par ratio d’aspect :
POST https://api.venice.ai/api/v1/image/generate
Authorization: Bearer $VENICE_API_KEY
Content-Type: application/json

{
  "model": "qwen-image-2",
  "prompt": "A cinematic photo of a gondola passing through a narrow Venice canal at blue hour",
  "aspect_ratio": "16:9",
  "format": "webp"
}
Exemple de dimensionnement par palier de résolution :
POST https://api.venice.ai/api/v1/image/generate
Authorization: Bearer $VENICE_API_KEY
Content-Type: application/json

{
  "model": "gpt-image-2",
  "prompt": "A cinematic wide shot of a gondola passing through a narrow Venice canal at blue hour",
  "aspect_ratio": "16:9",
  "resolution": "4K",
  "format": "png"
}
Le même schéma s’applique aux autres modèles à paliers de résolution :
{
  "model": "nano-banana-pro",
  "prompt": "A serene canal in Venice at sunset",
  "aspect_ratio": "16:9",
  "resolution": "2K"
}
Utilisez Modèles d’image ou l’API Models pour confirmer quels champs de dimensionnement chaque modèle accepte. Réponse (200) :
{
  "id": "generate-image-1234567890",
  "images": [
    "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoQABAAPm..."
  ],
  "timing": {
    "inferenceDuration": 1840,
    "inferencePreprocessingTime": 22,
    "inferenceQueueTime": 31,
    "total": 1893
  }
}
Le tableau images contient des données d’image encodées en base64. Décodez le premier élément pour l’enregistrer ou l’afficher. timing.total correspond à la durée complète de la requête en millisecondes.

Étape 2 : Décoder et enregistrer l’image

import base64
import os
import requests

response = requests.post(
    "https://api.venice.ai/api/v1/image/generate",
    headers={
        "Authorization": f"Bearer {os.environ['VENICE_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "venice-sd35",
        "prompt": "A cinematic photo of a gondola passing through a narrow Venice canal at blue hour, warm window lights reflecting on the water",
        "width": 1024,
        "height": 1024,
        "format": "webp",
    },
)

data = response.json()
image_bytes = base64.b64decode(data["images"][0])

with open("output.webp", "wb") as f:
    f.write(image_bytes)

print(f"Saved image from request {data['id']}")

Étape 3 : Renvoyer du binaire au lieu de JSON (optionnel)

Si vous souhaitez que le corps de la réponse soit le fichier image lui-même, définissez return_binary: true. C’est utile lorsque vous voulez diffuser ou enregistrer l’image directement sans décodage base64.
curl https://api.venice.ai/api/v1/image/generate \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -o output.png \
  -d '{
    "model": "qwen-image-2",
    "prompt": "Minimalist poster of a moonlit Venetian bridge in deep blue tones",
    "format": "png",
    "return_binary": true
  }'
Lorsque return_binary est true, le corps de la réponse correspond à des données brutes image/jpeg, image/png ou image/webp selon le format que vous avez demandé.
variants n’est pris en charge que lorsque return_binary est false.

Étape 4 : Lister les styles d’image disponibles (optionnel)

Si vous souhaitez utiliser style_preset, récupérez d’abord les styles disponibles depuis /image/styles :
curl https://api.venice.ai/api/v1/image/styles \
  -H "Authorization: Bearer $VENICE_API_KEY"
Réponse (200) :
[
  "3D Model",
  "Analog Film",
  "Anime",
  "Cinematic",
  "Digital Art"
]
Puis transmettez l’une de ces valeurs dans votre requête de génération :
{
  "model": "qwen-image-2",
  "prompt": "A futuristic Venice skyline at sunrise",
  "style_preset": "Cinematic"
}
Utilisez l’endpoint des styles lorsque vous voulez les noms exacts des presets plutôt que de les deviner.

Paramètres de la requête

ParamètreTypeRequisPar défautDescription
modelstringOui-Identifiant du modèle à utiliser pour la génération
promptstringOui-Ce qu’il faut générer
negative_promptstringNon-Ce qu’il faut éviter dans l’image
widthintegerNon1024Largeur de sortie en pixels pour les modèles basés sur les pixels tels que venice-sd35 et qwen-image
heightintegerNon1024Hauteur de sortie en pixels pour les modèles basés sur les pixels tels que venice-sd35 et qwen-image
formatstringNonwebpFormat de sortie : jpeg, png ou webp
variantsintegerNon1Nombre d’images à générer (1-4), uniquement lorsque return_binary est false
return_binarybooleanNonfalseRenvoyer les octets bruts de l’image au lieu de JSON base64
safe_modebooleanNontrueFloute le contenu pour adultes lorsque activé
seedintegerNonaléatoireRéutilisez la même seed pour des itérations plus cohérentes
cfg_scalenumberNondépend du modèleDes valeurs plus élevées poussent le modèle à suivre le prompt plus étroitement
style_presetstringNon-Applique un style préréglé depuis Image Styles
aspect_ratiostringConditionnel-Utilisé par les modèles prenant en charge le dimensionnement basé sur le ratio, tels que qwen-image-2, gpt-image-2, nano-banana-2 et nano-banana-pro
resolutionstringConditionnel-Utilisé par les modèles prenant en charge les paliers de résolution tels que 1K, 2K ou 4K
enable_web_searchbooleanConditionnelfalsePermet aux modèles compatibles d’utiliser des informations web actuelles ; coût supplémentaire
La validation est spécifique au modèle. Consultez Modèles d’image et l’API Models avant de compter sur un paramètre à travers plusieurs modèles.

Options spécifiques aux modèles

Génération haute résolution

Certains modèles d’image prennent en charge aspect_ratio sans palier resolution sélectionnable. Par exemple, qwen-image-2 accepte le ratio d’aspect et le mappe à des dimensions de sortie spécifiques au modèle :
{
  "model": "qwen-image-2",
  "prompt": "Editorial product photo of a luxury watch on black marble, dramatic studio lighting",
  "aspect_ratio": "16:9"
}
D’autres modèles d’image prennent en charge aspect_ratio plus un palier resolution. Par exemple, gpt-image-2, nano-banana-2 et nano-banana-pro prennent en charge 1K, 2K et 4K :
{
  "model": "gpt-image-2",
  "prompt": "Editorial product photo of a luxury watch on black marble, dramatic studio lighting",
  "aspect_ratio": "16:9",
  "resolution": "4K"
}
{
  "model": "nano-banana-2",
  "prompt": "Editorial product photo of a luxury watch on black marble, dramatic studio lighting",
  "aspect_ratio": "16:9",
  "resolution": "2K"
}
Utilisez Modèles d’image pour voir quels modèles prennent en charge des résolutions plus élevées et comment ils sont tarifés.

Presets de style

Si le modèle sélectionné le prend en charge, style_preset vous permet d’orienter la sortie sans réécrire l’intégralité de votre prompt. Vous pouvez récupérer les noms valides des presets depuis Image Styles :
{
  "model": "qwen-image-2",
  "prompt": "A futuristic Venice skyline at sunrise",
  "style_preset": "3D Model"
}
Voir Image Styles pour la liste actuelle des styles.

Endpoint compatible OpenAI

Si vous utilisez déjà les SDK d’image OpenAI ou des intégrations DALL-E existantes, Venice prend également en charge POST /images/generations. Il offre un format de requête plus simple, mais moins de fonctionnalités que l’endpoint natif de Venice. Requête :
{
  "model": "qwen-image-2",
  "prompt": "A clean isometric illustration of an AI control room",
  "size": "1024x1024",
  "response_format": "b64_json"
}
Utilisez la route compatible OpenAI pour des migrations plus rapides. Utilisez /image/generate lorsque vous avez besoin d’options spécifiques à Venice telles que cfg_scale, style_preset, variants ou des réponses binaires.

Conseils de prompting

  1. Commencez par le sujet, puis ajoutez le médium, l’éclairage, la composition et l’ambiance.
  2. Placez les détails à éviter absolument dans negative_prompt plutôt que de surcharger le prompt principal.
  3. Réutilisez seed lors des itérations afin de comparer les changements de prompt sans modifier totalement la composition.
  4. Adaptez le dimensionnement au modèle. Certains modèles utilisent width/height, d’autres aspect_ratio, et les modèles à paliers de résolution utilisent aspect_ratio plus resolution.
  5. Utilisez variants pendant l’exploration, puis revenez à une seule sortie une fois la direction définie.

Erreurs

StatutSignificationAction
400Paramètres de requête invalidesVérifiez les noms de champs, les types et les contraintes spécifiques au modèle
401Échec d’authentification ou le modèle requiert un palier d’accès supérieurVérifiez votre clé API et votre accès au modèle
402Solde insuffisantAjoutez des crédits sur venice.ai/settings/api
415Type de contenu invalideEnvoyez du JSON avec Content-Type: application/json
429Limite de débit dépassée ou modèle surchargéRéessayez avec un backoff ; vérifiez l’en-tête Retry-After
500Échec du traitement d’inférenceRéessayez la requête
503Modèle à pleine capacitéRéessayez après un court délai
Lorsque Safe Venice est activé, inspectez les en-têtes de réponse tels que x-venice-is-blurred et x-venice-is-content-violation si vous devez détecter les résultats de modération de manière programmatique.

Modèles disponibles

Voir Modèles d’image pour la liste actuelle des modèles, les tarifs et le support des fonctionnalités.