> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Nano banana 2.1 Génération d’images

> Génération texte-image et retouche d’images de référence en 1K / 2K / 4K, avec 10 rapports d’aspect et des versions officielle et Ext.

## Choix du modèle

| ID du modèle | Facturation | Images par requête | Taille des images de référence |
| - | - | - | - |
| `gemini-nano-banana-2.1` | Consommation réelle de tokens | 1–4 | 20MB maximum par image |
| `gemini-nano-banana-2.1-ext` | Par image, selon le niveau de résolution | 1 uniquement | 20MB maximum par image, 50MB au total |

Les deux modèles offrent les mêmes dimensions de sortie et la même qualité d’image. Choisissez la version officielle pour générer plusieurs images en une requête, ou Ext pour estimer le coût par image. Consultez les [tarifs des modèles](https://apimart.ai/pricing) pour les prix applicables.

<Info>
  Cet endpoint est asynchrone. Une soumission réussie renvoie un `task_id`. Utilisez la [consultation des tâches](/fr/api-reference/tasks/status) pour récupérer l’état et les images. Interrogez toutes les 3–5 secondes et prévoyez un délai d’attente global d’au moins 3 minutes.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/images/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "gemini-nano-banana-2.1",
      "prompt": "Un chat roux sur une table en bois près d’une tasse de café, douce lumière matinale, photographie réaliste",
      "size": "16:9",
      "resolution": "2K",
      "n": 1
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "gemini-nano-banana-2.1",
          "prompt": "Un chat roux sur une table en bois près d’une tasse de café, douce lumière matinale, photographie réaliste",
          "size": "16:9",
          "resolution": "2K",
          "n": 1
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.apimart.ai/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "gemini-nano-banana-2.1",
      prompt: "Un chat roux sur une table en bois près d’une tasse de café, douce lumière matinale, photographie réaliste",
      size: "16:9",
      resolution: "2K",
      n: 1
    })
  });
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01K..."
      }
    ]
  }
  ```
</ResponseExample>

## En-têtes de requête

<ParamField header="Authorization" type="string" required>
  Authentification Bearer au format `Bearer <token>`, où `<token>` est votre APIMart API Key.
</ParamField>

## Paramètres de requête

<ParamField body="model" type="string" required>
  ID du modèle : `gemini-nano-banana-2.1` ou `gemini-nano-banana-2.1-ext`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Description textuelle pour la génération ou la retouche d’images. Le chinois et l’anglais sont pris en charge.
</ParamField>

<ParamField body="size" type="string" default="auto">
  Rapport d’aspect de sortie. Valeurs prises en charge : `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` et `21:9`. Le format `16x9` est également accepté.

  Si ce paramètre est omis ou défini sur `auto`, le modèle décide. En mode image-image, la sortie suit le rapport d’aspect de l’image de référence.

  Les autres rapports, notamment `1:4`, `4:1`, `1:8` et `8:1`, ne sont pas pris en charge. Un rapport non pris en charge entraîne l’échec de la tâche et un remboursement.
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  Niveau de résolution : `1K`, `2K` ou `4K`. Les minuscules sont acceptées. Ce paramètre influe aussi sur la facturation.

  `0.5K` et `512` ne sont pas pris en charge et renvoient HTTP 400 à la soumission. Les autres valeurs non reconnues, comme `3K`, sont traitées et facturées en `1K`. Utilisez uniquement les valeurs prises en charge ci-dessus.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Nombre d’images générées : 1–4 pour la version officielle, 1 uniquement pour Ext.

  Une valeur supérieure à 4 renvoie immédiatement HTTP 400. Une requête Ext avec 2–4 échoue pendant l’exécution et est intégralement remboursée. Pour plusieurs images, soumettez des tâches Ext séparées ou utilisez la version officielle.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Liste des images de référence. Omettez-la pour le texte-image ; renseignez-la pour l’image-image ou la retouche. Chaque élément accepte :

  * Une URL d’image HTTP(S) accessible publiquement.
  * Une Data URL Base64, par exemple `data:image/png;base64,...`.

  PNG, JPEG ou WEBP sont recommandés. La version officielle autorise 20MB maximum par image. Ext autorise 20MB maximum par image et 50MB au total.

  La plateforme ne fixe pas de nombre maximal d’images de référence, mais cela ne signifie pas que les envois sont illimités : dépasser les limites du modèle peut faire échouer la tâche avec remboursement. Plus d’images de référence impliquent généralement un délai plus long.
</ParamField>

<ParamField body="official_fallback" type="boolean" default="false">
  S’applique uniquement à `gemini-nano-banana-2.1-ext`. Si activé, tente de terminer la tâche avec la version officielle en cas d’échec d’Ext.

  **Si la version officielle est effectivement utilisée, la facturation passe à sa consommation réelle de tokens, et non au tarif par image d’Ext.**
</ParamField>

<ParamField body="webhook" type="string">
  URL de rappel notifiée à la fin de la tâche. Voir les [webhooks de tâches](/fr/api-reference/tasks/webhook).
</ParamField>

## Dimensions de sortie indicatives

| Rapport d’aspect | 1K | 2K | 4K |
| - | - | - | - |
| 1:1 | 1024×1024 | 2048×2048 | 4096×4096 |
| 2:3 | 848×1264 | 1696×2528 | 3392×5056 |
| 3:2 | 1264×848 | 2528×1696 | 5056×3392 |
| 3:4 | 896×1200 | 1792×2400 | 3584×4800 |
| 4:3 | 1200×896 | 2400×1792 | 4800×3584 |
| 4:5 | 928×1152 | 1856×2304 | 3712×4608 |
| 5:4 | 1152×928 | 2304×1856 | 4608×3712 |
| 9:16 | 768×1376 | 1536×2752 | 3072×5504 |
| 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| 21:9 | 1584×672 | 3168×1344 | 6336×2688 |

Ces dimensions comprennent des mesures et des valeurs de référence de la famille de modèles. Toutes les combinaisons n’ont pas été testées. Les dimensions réelles de l’image renvoyée font foi.

## Retoucher une image de référence

```json theme={null}
{
  "model": "gemini-nano-banana-2.1-ext",
  "prompt": "Ajoutez un bonnet rouge en maille au chat de l’image et ne changez rien d’autre",
  "image_urls": ["https://example.com/cat.jpg"],
  "resolution": "1K"
}
```

Remplacez l’URL d’exemple par une URL d’image accessible. Si `size` est omis, la sortie suit le rapport d’aspect de l’image de référence.

## Génération par lot (version officielle uniquement)

```json theme={null}
{
  "model": "gemini-nano-banana-2.1",
  "prompt": "Ville cyberpunk de nuit, néons, rues après la pluie",
  "size": "16:9",
  "resolution": "2K",
  "n": 4
}
```

## Réponse de soumission

<ResponseField name="code" type="integer">
  Code de statut de la réponse. `200` indique un succès.
</ResponseField>

<ResponseField name="data" type="array">
  Résultat de la soumission. `status` vaut `submitted`. `task_id` sert à consulter l’état et les résultats ; ce n’est pas l’URL de l’image finale.
</ResponseField>

## Consulter les résultats

```bash theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01K... \
  --header 'Authorization: Bearer <token>'
```

Exemple de réponse réussie (l’URL d’image est fictive) :

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed",
    "progress": 100,
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.png"],
          "expires_at": 1791417625
        }
      ]
    }
  }
}
```

| État de la tâche | Signification |
| - | - |
| `pending` | En attente |
| `processing` | Génération en cours |
| `completed` | Succès ; lire le tableau des URL dans `data.result.images[0].url` |
| `failed` | Échec ; motif dans `data.error.message`. Remboursement intégral ; `data.cost` vaut 0 |

Tous les liens des images finales se trouvent dans le tableau `data.result.images[0].url`. Pour 4 images générées, ce tableau contient 4 liens. Seules les images finales sont renvoyées ; `n=1` correspond à 1 image finale.

Les liens expirent 24 heures après la fin de la tâche, selon `expires_at`. Téléchargez et sauvegardez les images rapidement. La sortie est en PNG ou JPEG ; le contenu réel du fichier fait foi. `data.cost` dans le résultat de consultation indique le montant final facturé en USD.

## Facturation

* **Version officielle** : facturation selon les tokens d’entrée et de sortie réellement utilisés. Les prompts et images de référence comptent en entrée. Un montant est prélevé à la soumission selon la résolution et `n`, puis ajusté à la consommation réelle par remboursement ou prélèvement complémentaire.
* **Version Ext** : prix unitaire du niveau de résolution × nombre réel d’images générées. Le rapport d’aspect n’affecte pas le niveau. Si `official_fallback` est activé et que la version officielle est effectivement utilisée, sa facturation par tokens s’applique.
* Consultez les [tarifs des modèles](https://apimart.ai/pricing) pour les prix unitaires. Une requête rejetée à la soumission ne crée aucune tâche et n’est pas facturée. Les tâches échouées sont intégralement remboursées.

## Erreurs courantes

| Situation | Action |
| - | - |
| HTTP 400 | Vérifier `0.5K` / `512`, `n` supérieur à 4 ou une image de référence dépassant la taille maximale par image |
| HTTP 401 | Vérifier l’API Key |
| HTTP 402 | Vérifier que le solde couvre le prélèvement initial |
| HTTP 429 | Limite de débit atteinte ; réessayer avec un délai croissant |
| Échec : rapport d’aspect non pris en charge | Utiliser l’un des 10 rapports `size` pris en charge ou `auto` |
| Échec : plusieurs images demandées avec Ext | Définir `n` sur 1 ou utiliser la version officielle |
| Échec : blocage de sécurité du contenu | Modifier le prompt ou les images de référence puis réessayer |
| Échec : téléchargement de l’image de référence impossible | Vérifier que l’URL d’image est accessible publiquement |

<Warning>
  Nano banana 2.1 et Gemini 3.1 Flash Image sont des modèles différents ; leurs noms ne sont pas des alias interchangeables. Lors d’une migration depuis ce dernier, remplacez la résolution `0.5K` et les quatre rapports extrêmes `1:4`, `4:1`, `1:8` et `8:1`.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.