Google a lancé Nano Banana 2.1 le 6 octobre 2026, et il est déjà appelable via l'API Gemini sous le nom de gemini-nano-banana-2.1. Il s'agit d'une mise à jour de Nano Banana 2 (Gemini 3.1 Flash Image) avec une meilleure qualité visuelle, une édition de style masque et une cohérence des personnages renforcée à travers les itérations. Il coûte également deux fois moins cher par image que Nano Banana 2 à chaque résolution qu'ils partagent.
Ce guide vous mènera d'un terminal vide à une image enregistrée, puis couvrira les rapports d'aspect, la sortie 2K et 4K, l'édition, les modifications multi-tours, les images de référence, l'ancrage de recherche et le coût. Chaque requête ci-dessous peut être enregistrée et rejouée dans Apidog afin que vous puissiez comparer 2.1 avec le modèle que vous utilisez aujourd'hui.
Vous voulez d'abord le contexte ? Lisez Qu'est-ce que Nano Banana 2.1 pour savoir ce qui a changé et ce que Google n'a pas encore publié.
Ce dont vous avez besoin
| Élément | Valeur |
|---|---|
| URL de base | https://generativelanguage.googleapis.com/v1beta |
| En-tête d'authentification | x-goog-api-key: $GEMINI_API_KEY |
| ID du modèle | gemini-nano-banana-2.1 |
| Point d'accès | POST /v1beta/interactions |
| Résolutions | 1K (par défaut), 2K, 4K |
| Entrées | Texte, images (jusqu'à 14 références), vidéo |
| SDK Python | pip install google-genai |
| SDK JavaScript | npm install @google/genai |
Tous les exemples utilisent l'API Interactions, celle-là même que les documents de génération d'images de Google utilisent pour la version 2.1.
Étape 1 : Obtenir une clé API Gemini
- Ouvrez Google AI Studio et connectez-vous.
- Allez dans Obtenir une clé API et créez une clé dans un projet Google Cloud.
- Activez la facturation pour ce projet. La page de tarification de Google indique que le niveau gratuit pour Nano Banana 2.1 est « Non disponible », donc les appels API nécessitent un projet payant.
- Exportez la clé :
export GEMINI_API_KEY="votre-clé-ici"
Google relie 2.1 à l'environnement de jeu (playground) d'AI Studio, ce qui est pratique pour tester les invites, mais n'a pas publié combien un compte gratuit peut y générer. Notre guide sur comment utiliser Nano Banana 2.1 gratuitement couvre cette voie, et obtenir une clé API Gemini détaille la configuration de la clé.
Étape 2 : Générer votre première image
curl
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-nano-banana-2.1",
"input": [
{"type": "text", "text": "Créez une image d'un plat de nano-banane dans un restaurant chic avec un thème Gemini"}
]
}'
La réponse est au format JSON. L'image arrive sous forme de données base64 à l'intérieur d'un bloc de contenu d'image, vous voudrez donc un SDK (ou un script) pour la décoder.
Python
from google import genai
import base64
client = genai.Client() # lit GEMINI_API_KEY
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Créez une image d'un plat de nano-banane dans un restaurant chic avec un thème Gemini",
)
with open("generated_image.png", "wb") as f:
f.write(base64.b64decode(interaction.output_image.data))
interaction.output_image renvoie le dernier bloc d'image généré. Son champ data est en base64, alors décodez-le avant d'écrire le fichier.
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
const interaction = await ai.interactions.create({
model: "gemini-nano-banana-2.1",
input: "Créez une image d'un plat de nano-banane dans un restaurant chic avec un thème Gemini",
});
const image = interaction.output_image;
if (image) {
fs.writeFileSync("nano-banana.png", Buffer.from(image.data, "base64"));
}
Les modèles d'image Gemini 3 réfléchissent avant de dessiner. Le modèle peut produire jusqu'à deux « images de pensée » intermédiaires pendant qu'il planifie la composition. Celles-ci ne vous sont pas facturées, et la réflexion ne peut pas être désactivée dans l'API.
Étape 3 : Définir le rapport d'aspect, la résolution et la sortie uniquement d'image
Utilisez response_format pour contrôler la sortie. Définir "type": "image" renvoie uniquement l'image et supprime le texte conversationnel, ce qui réduit la taille des réponses et simplifie l'analyse.
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Une photo de produit d'un moulin à café noir mat sur un comptoir en marbre",
response_format={
"type": "image",
"mime_type": "image/png",
"aspect_ratio": "16:9",
"image_size": "2K",
},
)
À savoir :
image_sizeaccepte1K,2Ket4K. Utilisez unKmajuscule ; les valeurs en minuscules comme2ksont rejetées.- La version 2.1 n'a pas de niveau 512px. Celui-ci appartient à Nano Banana 2.
- Les rapports pris en charge incluent
1:1,2:3,3:2,3:4,4:3,4:5,5:4,9:16,16:9,21:9, ainsi que les extrêmes1:4,4:1,1:8et8:1. Une image 16:9 en 2K est de 2752x1536 ; en 4K elle est de 5504x3072. - Si vous voulez à la fois du texte et une image, passez une liste :
response_format=[{"type": "text"}, {"type": "image"}].
Étape 4 : Modifier une image existante
Envoyez votre image sous forme de bloc image en base64 à côté de l'instruction textuelle :
with open("living_room.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf-8")
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input=[
{"type": "text", "text": "En utilisant l'image fournie d'un salon, changez uniquement le canapé bleu pour qu'il soit un canapé chesterfield vintage en cuir marron. Gardez le reste de la pièce, y compris les coussins sur le canapé et l'éclairage, inchangé."},
{"type": "image", "data": image_b64, "mime_type": "image/png"},
],
)
Remplissage (inpainting) de style masque sans fichier masque
Il n'y a pas de téléchargement de masque séparé. Vous définissez le masque avec des mots. Modèle de Google :
À l'aide de l'image fournie, modifiez uniquement le [élément spécifique] pour qu'il devienne [nouvel élément/description]. Gardez tout le reste de l'image exactement tel quel, en préservant le style, l'éclairage et la composition d'origine.
Nommez un élément, décrivez le remplacement concrètement et répétez ce qui doit rester fixe. Des invites vagues comme « rendre le canapé plus beau » invitent le modèle à redessiner toute la pièce.
Étape 5 : Itérer avec l'édition multi-tours
L'édition multi-tours est le moyen recommandé par Google pour affiner une image. Transmettez l'id de l'interaction précédente en tant que previous_interaction_id et envoyez uniquement la modification souhaitée :
interaction_2 = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Mettez à jour cette infographie pour qu'elle soit en espagnol. Ne modifiez aucun autre élément de l'image.",
previous_interaction_id=interaction.id,
response_format={"type": "image", "mime_type": "image/png", "aspect_ratio": "16:9", "image_size": "2K"},
)
Via REST, le même champ est placé dans le corps : "previous_interaction_id": "<PREVIOUS_INTERACTION_ID>". C'est là que la cohérence améliorée des personnages multi-tours de la version 2.1 est importante : un personnage ou un produit doit rester reconnaissable à travers plusieurs séries d'éditions.
Étape 6 : Combiner jusqu'à 14 images de référence
Ajoutez d'autres blocs image à la liste input. Pour la version 2.1, Google documente jusqu'à 10 images d'objets haute fidélité et jusqu'à 4 images de personnages, soit 14 au total :
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input=[
{"type": "text", "text": "Une photo de groupe au bureau de ces personnes, elles font des grimaces."},
{"type": "image", "data": person_1_b64, "mime_type": "image/png"},
{"type": "image", "data": person_2_b64, "mime_type": "image/png"},
{"type": "image", "data": person_3_b64, "mime_type": "image/png"},
],
response_format={"type": "image", "aspect_ratio": "5:4", "image_size": "2K"},
)
Les images de référence sont des jetons d'entrée, et l'entrée 2.1 coûte trois fois plus cher que Nano Banana 2. Les flux de travail à forte référence réduisent l'écart de prix, alors mesurez avant de passer à 2.1.
Étape 7 : Ancrer les images avec la recherche Google
Pour les images qui dépendent de faits actuels, comme une carte météorologique ou un événement récent, ajoutez l'outil de recherche :
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Une peinture détaillée d'un papillon Timareta posé sur une fleur",
tools=[{"type": "google_search", "search_types": ["web_search", "image_search"]}],
)
{"type": "google_search"} seul vous donne la recherche web. L'ajout de image_search permet au modèle d'utiliser des images web comme contexte visuel, ce que seuls 2.1 et Nano Banana 2 supportent. L'ancrage ne peut pas utiliser d'images réelles de personnes provenant de la recherche. Si vous affichez des résultats ancrés aux utilisateurs, Google vous demande d'afficher les search_suggestions renvoyées dans l'étape google_search_result.
Étape 8 : Le tester dans Apidog
Les scripts sont utiles pour la génération. Pour vérifier qu'une invite, une clé et un modèle se comportent toujours correctement, une requête enregistrée est plus rapide. Dans Apidog :
- Créez un environnement et ajoutez une variable
GEMINI_API_KEYavec votre clé. - Créez une requête :
POST https://generativelanguage.googleapis.com/v1beta/interactions. - Ajoutez l'en-tête
x-goog-api-key: {{GEMINI_API_KEY}}. - Collez un corps JSON avec
model,inputetresponse_format, puis cliquez sur Envoyer. - Ajoutez un script post-réponse avec deux assertions :
pm.test("le statut est 200", () => {
pm.response.to.have.status(200);
});
pm.test("la réponse contient un bloc d'image", () => {
const steps = pm.response.json().steps || [];
const hasImage = steps.some(s =>
s.type === "model_output" &&
(s.content || []).some(c => c.type === "image" && c.data)
);
pm.expect(hasImage).to.be.true;
});
- Dupliquez la requête et remplacez
modelpargemini-3.1-flash-image. Envoyez les deux avec la même invite.
Vous disposez maintenant d'une comparaison côte à côte de 2.1 et de Nano Banana 2, avec le statut, le temps et la taille de la réponse affichés pour chaque exécution. Pour une comparaison plus large des fonctionnalités, consultez Nano Banana 2.1 vs Nano Banana 2 vs Pro.
Ce que cela coûte
Niveau payant, selon la page de tarification de Google au 7 octobre 2026 :
| Modèle | Entrée / 1M | Image 1K | Image 2K | Image 4K | Lot 1K |
|---|---|---|---|---|---|
| Nano Banana 2.1 | $1.50 | $0.0336 | $0.0504 | $0.0756 | $0.0168 |
| Nano Banana 2 | $0.50 | $0.067 | $0.101 | $0.151 | $0.034 |
| Nano Banana Pro | $2.00 | $0.134 | $0.134 | $0.24 | $0.067 |
La sortie d'image pour la version 2.1 coûte 30 $ par million de jetons. Une image 1K représente 1 120 jetons, 2K 1 680 et 4K 2 520, ce qui explique les prix par image. La sortie de texte et de réflexion coûte 7,50 $ par million. L'ancrage de recherche inclut 5 000 requêtes gratuites par mois partagées entre les modèles Gemini 3.x, puis 14 $ par 1 000.
Exemple détaillé : 1 000 images de produits en 2K à partir de courtes invites textuelles (environ 100 jetons d'entrée chacune).
- Sortie : 1 000 x 0,0504 $ = 50,40 $
- Entrée : 100 000 jetons x 1,50 $ / 1M = 0,15 $
- Total : environ 50,55 $, plus les jetons de texte de réflexion éventuels
Le même travail sur Nano Banana 2 coûte environ 101 $. Grâce à l'API Batch, le prix 2K de la version 2.1 tombe à 0,0252 $, ce qui réduit le coût de la sortie à 25,20 $ si vous pouvez attendre. Les travaux par lots échangent un délai d'exécution allant jusqu'à 24 heures contre des limites de débit plus élevées. Plus de détails sur la tarification de Nano Banana 2 se trouvent dans notre analyse des prix de l'API Nano Banana 2.
Erreurs courantes
Il s'agit de comportements génériques de l'API Gemini, et non d'erreurs spécifiques à la version 2.1 documentées :
| Erreur | Cause probable | Solution |
|---|---|---|
400 INVALID_ARGUMENT |
image_size en minuscules, rapport non pris en charge, input malformé |
Utilisez 2K et non 2k ; vérifiez la liste des rapports |
403 PERMISSION_DENIED |
Clé incorrecte, ou projet sans facturation | Vérifiez la clé et activez la facturation |
404 NOT_FOUND |
Faute de frappe dans l'ID du modèle | Utilisez gemini-nano-banana-2.1 exactement |
429 RESOURCE_EXHAUSTED |
Limite de débit atteinte | Réessayez plus tard avec un délai, ou utilisez le traitement par lots |
500 / 503 |
Problème de serveur temporaire | Réessayez avec un backoff exponentiel |
| 200 mais pas d'image | Invite bloquée ou réponse uniquement textuelle | Définissez "type": "image" et reformulez |
FAQ
Existe-t-il un niveau gratuit pour l'API Nano Banana 2.1 ? Non. Google indique que le niveau gratuit de l'API est « Non disponible ». L'environnement de jeu (playground) d'AI Studio est lié à 2.1, mais Google n'a pas publié de limite gratuite pour celui-ci.
La version 2.1 est-elle un remplacement direct de Nano Banana 2 ? En grande partie. Remplacez l'ID du modèle par gemini-nano-banana-2.1. Vous perdez le niveau 512px, et les jetons d'entrée coûtent plus cher, donc les éditions à forte référence nécessitent une vérification des coûts.
Les images générées portent-elles un filigrane ? Oui. Toutes les sorties incluent un filigrane SynthID.
Puis-je générer une image à partir d'une vidéo ? Oui. La version 2.1 accepte un bloc d'entrée video, tel qu'une URL YouTube, en plus de votre invite textuelle.
Le guide de l'API Nano Banana 2 est-il toujours d'actualité ? Les concepts s'appliquent. Consultez notre guide de l'API Nano Banana 2 pour le modèle précédent.
Conclusion
Nano Banana 2.1 promet de meilleures images à la moitié du prix par image de Nano Banana 2, avec la même structure d'API Interactions. Obtenez une clé facturée, générez une image, puis enregistrez la requête dans Apidog avec des assertions de statut et d'image. Dupliquez-la avec l'ancien ID de modèle, et vous saurez en une après-midi si 2.1 justifie le passage pour vos invites.
