Note de l'auteur : Explication détaillée des causes profondes de l'erreur not supported model for image generation avec l'API de génération d'images Nano Banana 2, et comment passer correctement du format OpenAI au format natif Google generateContent.
Vous rencontrez l'erreur not supported model for image generation en utilisant Nano Banana 2 pour générer des images ? C'est l'un des problèmes d'appel d'API d'image Gemini les plus fréquents pour les développeurs actuellement. Cet article explique la cause racine de l'erreur et la bonne façon d'appeler l'API pour vous aider à résoudre rapidement ce problème.
Valeur clé : Après avoir lu cet article, vous comprendrez les différences d'appel d'API entre les modèles d'image Gemini et les modèles Imagen, vous maîtriserez l'utilisation correcte du point de terminaison generateContent, et vous résoudrez l'erreur en 3 étapes.

Cause principale de l'erreur d'API d'image Nano Banana 2
| Point clé | Explication | Solution |
|---|---|---|
| Message d'erreur | not supported model for image generation, only imagen models are supported | Basculer vers le point de terminaison generateContent |
| Cause racine | Le point de terminaison au format OpenAI ne prend en charge que les modèles Imagen, pas les modèles d'image Gemini | Utiliser le format natif de l'API Google |
| Point de terminaison correct | /v1beta/models/{MODEL}:generateContent |
Remplacer /v1/images/generations |
| Paramètre requis | responseModalities: ["TEXT", "IMAGE"] |
Définir dans generationConfig |
Explication détaillée de l'erreur d'API d'image Nano Banana 2
Lorsque vous utilisez le point de terminaison compatible OpenAI /v1/images/generations pour appeler Nano Banana 2 (gemini-3.1-flash-image-preview) ou Nano Banana Pro (gemini-3-pro-image-preview), le système renvoie l'erreur suivante :
not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500
La cause fondamentale de cette erreur est que les modèles d'image Gemini et les modèles Imagen sont deux architectures de modèles complètement différentes.
- Modèles Imagen (comme
imagen-3.0-generate-001) sont des modèles de génération d'images dédiés, utilisant les points de terminaison/v1/images/generationsou:predict - Modèles d'image Gemini (série Nano Banana) sont des grands modèles de langage multimodaux, capables de produire à la fois du texte et des images, et doivent utiliser le point de terminaison
:generateContent
En termes simples, vous avez utilisé un "canal dédié texte vers image" pour appeler un "modèle de conversation multimodal", d'où l'erreur de format.

Format d'appel correct de l'API d'images Nano Banana 2
Comparaison : Appel incorrect vs Appel correct
| Point de comparaison | ❌ Méthode incorrecte (format OpenAI) | ✅ Méthode correcte (format generateContent) |
|---|---|---|
| Point de terminaison API | /v1/images/generations |
/v1beta/models/{MODEL}:generateContent |
| Structure de la requête | Paramètres prompt + size + n |
Structure contents + generationConfig |
| Format de la réponse | URL de l'image | Données d'image Base64 en ligne |
| Modèles pris en charge | Série DALL-E, Imagen | Modèles d'image Gemini (série Nano Banana) |
| Contenu de sortie | Image uniquement | Texte + Image (sortie multimodale) |
Exemple de requête incorrecte pour l'API d'images Nano Banana 2
Voici un exemple d'appel incorrect qui provoquera une erreur :
# ❌ Erreur : Utilisation du format OpenAI pour appeler Nano Banana 2
curl -X POST https://api.apiyi.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Un adorable chat roux faisant une sieste au soleil",
"size": "1024x1024",
"n": 1
}'
# Retour : not supported model for image generation
Exemple de requête correcte pour l'API d'images Nano Banana 2
Voici la méthode d'appel correcte utilisant le format natif generateContent de Google :
# ✅ Correct : Utilisation du format natif generateContent de Google
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Un adorable chat roux faisant une sieste au soleil"}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
🎯 Astuce technique : En passant par la plateforme APIYI apiyi.com pour appeler Nano Banana 2, vous n'avez pas besoin de configurer un compte Google Cloud séparément. Utilisez une clé API unifiée pour appeler directement le point de terminaison
generateContent.
Démarrage rapide avec l'API d'images Nano Banana 2
3 étapes pour corriger les erreurs de l'API d'images Nano Banana 2
Étape 1 : Changer le point de terminaison API
Remplacez l'URL de requête du format OpenAI par le format generateContent :
# Point de terminaison incorrect
https://api.apiyi.com/v1/images/generations
# Point de terminaison correct (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent
# Point de terminaison correct (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent
Étape 2 : Modifier la structure du corps de la requête
Passez des paramètres prompt + size d'OpenAI à la structure native contents + generationConfig de Google. Paramètres clés :
contents.parts.text: Texte descriptif de l'imagegenerationConfig.responseModalities: Doit être défini sur["TEXT", "IMAGE"]
Étape 3 : Traiter les données de réponse
L'image retournée par generateContent est encodée en Base64 et intégrée en ligne, pas une URL. Vous devez extraire et décoder l'image à partir de la réponse.
Exemple Python minimal
import requests
import base64
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com" # Interface unifiée d'APIYI
response = requests.post(
f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": "Un adorable chat roux faisant une sieste au soleil"}]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
}
)
result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open("output.png", "wb") as f:
f.write(img_data)
print("Image sauvegardée sous output.png")
elif "text" in part:
print("Description du modèle :", part["text"])
Voir le code d’implémentation complet (avec gestion des erreurs et paramètres de ratio d’aspect)
import requests
import base64
import os
from typing import Optional
def generate_image(
prompt: str,
model: str = "gemini-3.1-flash-image-preview",
aspect_ratio: str = "1:1",
output_path: str = "output.png",
api_key: Optional[str] = None
) -> dict:
"""
Génère une image en utilisant le point de terminaison generateContent de Nano Banana 2
Args:
prompt: Description de l'image
model: Nom du modèle
aspect_ratio: Ratio d'aspect (1:1, 16:9, 9:16, 4:3, 3:4)
output_path: Chemin du fichier de sortie
api_key: Clé API
Returns:
Dictionnaire contenant le chemin du fichier et la description du modèle
"""
api_key = api_key or os.getenv("APIYI_API_KEY")
base_url = "https://api.apiyi.com" # Interface unifiée d'APIYI
response = requests.post(
f"{base_url}/v1beta/models/{model}:generateContent",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": prompt}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": aspect_ratio}
}
},
timeout=60
)
if response.status_code != 200:
raise Exception(f"Échec de la requête API : {response.status_code} - {response.text}")
result = response.json()
candidates = result.get("candidates", [])
if not candidates:
raise Exception("Aucun résultat valide retourné")
output = {"text": "", "image_path": ""}
for part in candidates[0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open(output_path, "wb") as f:
f.write(img_data)
output["image_path"] = output_path
elif "text" in part:
output["text"] = part["text"]
return output
# Exemple d'utilisation
result = generate_image(
prompt="Un paysage de montagne et d'eau dans un style à l'encre de Chine, avec des montagnes lointaines enveloppées d'une brume légère",
model="gemini-3.1-flash-image-preview",
aspect_ratio="16:9",
output_path="landscape.png"
)
print(f"Image sauvegardée : {result['image_path']}")
print(f"Description du modèle : {result['text']}")
Recommandation : Obtenez une clé API via APIYI apiyi.com. La plateforme offre un quota de test gratuit et prend en charge les appels
generateContentpour les deux modèles d'image Gemini : Nano Banana 2 et Nano Banana Pro.
Comparaison des modèles d'image API Nano Banana 2
Comprendre les différences dans la manière d'appeler les API des modèles de génération d'images peut vous aider à éviter des erreurs de format similaires :
| Modèle | Code | Point de terminaison API | Format d'appel | Plateformes disponibles |
|---|---|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | :generateContent |
Format natif Google | APIYI et autres plateformes |
| Nano Banana Pro | gemini-3-pro-image-preview | :generateContent |
Format natif Google | APIYI et autres plateformes |
| Imagen 3 | imagen-3.0-generate-001 | /v1/images/generations ou :predict |
Format compatible OpenAI | APIYI et autres plateformes |
| DALL-E 3 | dall-e-3 | /v1/images/generations |
Format OpenAI | APIYI et autres plateformes |
Explication des paramètres clés de l'API d'image Nano Banana 2

Le point de terminaison generateContent prend en charge des paramètres riches pour la génération d'images :
| Paramètre | Description | Requis ? | Exemple de valeur |
|---|---|---|---|
contents.parts.text |
Invite de description de l'image | ✅ Requis | "Un chat roux au soleil" |
responseModalities |
Configuration des modalités de réponse | ✅ Requis | ["TEXT", "IMAGE"] |
imageConfig.aspectRatio |
Ratio d'aspect de l'image | Optionnel | "1:1", "16:9", "9:16" |
contents.parts.inlineData |
Image de référence (image vers image) | Optionnel | Données d'image en Base64 |
💡 Important :
responseModalitiesdoit contenir à la fois"TEXT"et"IMAGE". Définir uniquement["IMAGE"]entraînera un échec de la requête. C'est parce que les modèles d'image Gemini sont multimodaux et produisent toujours à la fois une description textuelle et une image.
Questions fréquentes
Q1 : Pourquoi Nano Banana 2 ne peut-il pas être appelé avec le format OpenAI ?
Nano Banana 2 (gemini-3.1-flash-image-preview) est un grand modèle de langage multimodal basé sur Gemini. Sa capacité de génération d'images est réalisée via une "génération conversationnelle", et non via une "interface texte vers image" dédiée. Le point de terminaison /v1/images/generations du format OpenAI est conçu spécifiquement pour des modèles de génération d'images comme DALL-E et Imagen, et ne peut pas traiter la structure de requête multimodale des modèles Gemini. Lors d'un appel via la plateforme APIYI apiyi.com, il est nécessaire de choisir le format de point de terminaison correspondant au type de modèle.
Q2 : Quelle est la différence entre l’API image de Nano Banana 2 et celle de Nano Banana Pro ?
Les deux utilisent le point de terminaison generateContent, et leur format d'appel est identique. Les principales différences sont :
- Nano Banana 2 (version Flash) : Génération plus rapide, environ 3-5 secondes, idéal pour la génération en lot et les prototypes rapides.
- Nano Banana Pro : Qualité d'image supérieure, précision du rendu du texte atteignant 94%, idéal pour les conceptions fines et les usages commerciaux.
Sur la plateforme APIYI apiyi.com, les deux modèles sont disponibles. Il suffit de changer le nom du modèle dans l'URL du point de terminaison.
Q3 : Comment traiter les données d’image renvoyées par generateContent ?
Contrairement au format OpenAI qui renvoie une URL d'image, generateContent renvoie des données d'image en ligne encodées en Base64. Étapes de traitement :
- Dans la réponse JSON, trouver la partie contenant
inlineDatadanscandidates[0].content.parts. - Récupérer la chaîne Base64 du champ
inlineData.data. - Décoder avec
base64.b64decode()puis enregistrer en tant que fichier image. - Le champ
inlineData.mimeTypevous indiquera le format de l'image (généralementimage/png).
Résumé
Les points essentiels concernant les erreurs de l'API image Nano Banana 2 :
- Cause de l'erreur claire : L'utilisation de
/v1/images/generations(format OpenAI) pour appeler un modèle d'image Gemini déclenche l'erreur "not supported model". - Passer à generateContent : Le point de terminaison correct est
/v1beta/models/gemini-3.1-flash-image-preview:generateContent. - Configurer responseModalities : Il est impératif d'inclure
["TEXT", "IMAGE"]dans legenerationConfig, sinon aucune image ne sera générée.
Face à une erreur d'API Nano Banana 2, le cœur du problème se résume à une phrase : remplacez le point de terminaison de génération d'images d'OpenAI par le point de terminaison natif generateContent de Google.
Nous recommandons de tester rapidement Nano Banana 2 et Nano Banana Pro via APIYI apiyi.com. La plateforme offre un quota gratuit, prend en charge l'appel direct au format generateContent, et ne nécessite pas de compte Google Cloud.
📚 Références
-
Documentation Google Gemini pour la génération d'images : Guide officiel de l'API Gemini
- Lien :
ai.google.dev/gemini-api/docs/image-generation - Description : Contient les spécifications complètes des paramètres et des exemples pour le point de terminaison
generateContent.
- Lien :
-
Référence de l'API Google generateContent : Documentation de l'interface de génération de contenu de l'API Gemini
- Lien :
ai.google.dev/api/generate-content - Description : Explication détaillée de la structure des requêtes et des réponses pour le point de terminaison
generateContent.
- Lien :
-
Documentation de compatibilité Google Gemini OpenAI : Explication de la compatibilité entre les formats Gemini et OpenAI
- Lien :
ai.google.dev/gemini-api/docs/openai - Description : Comprenez quelles fonctionnalités prennent en charge le format compatible OpenAI et lesquelles nécessitent le format natif.
- Lien :
Auteur : Équipe technique d'APIYI
Échanges techniques : N'hésitez pas à discuter des problèmes d'appel de l'API d'images Nano Banana 2 dans la section des commentaires. Pour plus de ressources, visitez le centre de documentation d'APIYI à docs.apiyi.com.
