Comment utiliser l'API Nano Banana 2.1

Appeler l'API Nano Banana 2.1 (gemini-nano-banana-2.1) : première image en curl, Python et JS, 2K/4K, édition, multi-tours, ancrage et coût par image.

Medy Evrard

6 October 2026

Comment utiliser l'API Nano Banana 2.1

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

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.

bouton

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

  1. Ouvrez Google AI Studio et connectez-vous.
  2. Allez dans Obtenir une clé API et créez une clé dans un projet Google Cloud.
  3. 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.
  4. 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 :

É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 :

  1. Créez un environnement et ajoutez une variable GEMINI_API_KEY avec votre clé.
  2. Créez une requête : POST https://generativelanguage.googleapis.com/v1beta/interactions.
  3. Ajoutez l'en-tête x-goog-api-key: {{GEMINI_API_KEY}}.
  4. Collez un corps JSON avec model, input et response_format, puis cliquez sur Envoyer.
  5. 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;
});
  1. Dupliquez la requête et remplacez model par gemini-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).

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.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API