> ## 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.

# FLUX 3 Image Génération d’images

> Génération texte-image, retouche d’une image et jusqu’à 10 images de référence, avec plusieurs rapports d’aspect et une résolution jusqu’à 4k.

<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 obtenir l’état et les images. Arrêtez les interrogations lorsque l’état est `completed` ou `failed`. La génération en `4k` peut prendre plusieurs minutes ; un délai d’attente global de 10 minutes est recommandé.
</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": "flux-3-image",
      "prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
      "aspect_ratio": "21:9",
      "resolution": "2k"
    }'
  ```

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

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "flux-3-image",
          "prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
          "aspect_ratio": "21:9",
          "resolution": "2k"
      }
  )
  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: "flux-3-image",
      prompt: "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
      aspect_ratio: "21:9",
      resolution: "2k"
    })
  });
  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>
  Doit être `flux-3-image`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Description de la scène pour le texte-image, ou instructions de retouche. Les prompts négatifs ne sont pas pris en charge ; décrivez plutôt le résultat souhaité.

  Utilisez des balises et du JSON bbox dans `prompt` pour définir une disposition ou des zones de retouche locale. Voir les exemples ci-dessous.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Liste des images de référence, jusqu’à 10 images. Accepte les URL HTTP(S) accessibles publiquement ou les données Base64.

  Omettez ce paramètre pour le texte-image. Fournissez une image pour une retouche simple, ou plusieurs images comme références.
</ParamField>

<ParamField body="aspect_ratio" type="string" default="auto">
  Rapport d’aspect de sortie. Valeurs prises en charge :

  `21:9`, `2:1`, `16:9`, `3:2`, `7:5`, `4:3`, `5:4`, `1:1`, `4:5`, `3:4`, `5:7`, `2:3`, `9:16`, `1:2`, `9:21` ou `auto`.

  Les formats tels que `16x9` sont également acceptés. Avec `auto` :

  * Retouche ou références multiples : suit le rapport d’aspect de la première image de référence.
  * Texte-image : déterminé par le prompt ; utilise `1:1` si aucun rapport n’est déterminé.
</ParamField>

<ParamField body="size" type="string">
  Paramètre de compatibilité pour le rapport d’aspect. Peut remplacer `aspect_ratio` avec les mêmes valeurs. Il est recommandé de n’utiliser qu’un seul de ces champs.

  Les dimensions en pixels telles que `1024x1024` ne sont pas prises en charge et renvoient HTTP 400. Utilisez `resolution` pour choisir la résolution de sortie.
</ParamField>

<ParamField body="resolution" type="string" default="1k">
  Niveau de résolution. Accepte `768sq`, `1k`, `1.5k`, `2k` et `4k`, sans distinction de casse. `768` équivaut à `768sq`.

  Ce paramètre détermine le niveau tarifaire. S’il est omis, la génération et la facturation utilisent `1k`. Les valeurs non prises en charge, comme `3k`, renvoient HTTP 400.
</ParamField>

<ParamField body="safety_tolerance" type="integer" default="2">
  Tolérance de sécurité du contenu, de 0 à 4. 0 est le niveau le plus strict.
</ParamField>

<ParamField body="grounding" type="boolean" default="true">
  Autorise ou non les recherches web ou d’images avant la génération. Définissez `false` pour désactiver.

  Doit être un booléen, et non les chaînes `"false"` ou `"true"`.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Chaque requête génère 1 image ; seule la valeur `1` est acceptée. Pour plusieurs images, soumettez des tâches séparées. Une valeur supérieure à 1 renvoie HTTP 400.
</ParamField>

## Paramètres non pris en charge

Les paramètres suivants renvoient HTTP 400 lorsqu’ils sont fournis ; ils ne sont pas ignorés silencieusement :

* `width`, `height`
* Dimensions en pixels dans `size`, par exemple `1024x1024`
* `seed`, `steps`, `guidance`
* `output_format`, `negative_prompt`, `prompt_upsampling`, `mask_url`

Utilisez `resolution` pour une résolution supérieure et `aspect_ratio` pour un rapport d’aspect précis.

## Retoucher une image de référence

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "Rendez la voiture de l’image rouge en conservant la route, l’arrière-plan et l’éclairage d’origine",
  "image_urls": ["https://example.com/car.jpg"],
  "aspect_ratio": "auto",
  "resolution": "2k"
}
```

Remplacez l’URL d’exemple par une URL d’image accessible publiquement. Pour plusieurs références, fournissez plusieurs URL dans `image_urls`, sans dépasser 10 images au total.

## Références multiples

La retouche, la retouche locale et la mise en page utilisent le même endpoint et le même modèle de cette page, avec une facturation selon `resolution`. Les références sont numérotées dans l’ordre : `ref_image_0` pour la première, `ref_image_1` pour la deuxième. Vous pouvez aussi écrire `Image 1` / `Image 2` dans le prompt.

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "Transformez Image 1 dans le style de Image 2.",
  "image_urls": [
    "https://example.com/subject.jpg",
    "https://example.com/style.jpg"
  ],
  "aspect_ratio": "auto"
}
```

## Retouche locale (bounding box)

Commencez `prompt` par des instructions en langage naturel et désignez les éléments par des `<balises>`, comme `<car_1>`. Ajoutez ensuite un tableau JSON dans la même chaîne, avec un objet par cadre. bbox n’est pas un paramètre de requête séparé.

| Champ | Description |
| - | - |
| `id` | Correspond à la balise de l’élément dans le prompt, sans les chevrons. |
| `from` | Source de l’élément, par exemple `ref_image_0` ; utilisez `null` pour les éléments à dessiner ou redessiner. |
| `src_bbox` | Cadre dans l’image source ; vaut aussi `null` lorsque `from` vaut `null`. |
| `tgt_bbox` | Cadre dans l’image de sortie ; identique à `src_bbox` pour conserver la position, différent pour déplacer l’élément. |
| `desc` | Décrit comment modifier l’élément ou ce qu’il faut conserver. |

Tous les champs de cadre (`src_bbox`, `tgt_bbox`, `bbox`) utilisent `[haut, gauche, bas, droite]`, soit `[y1, x1, y2, x2]`, sur une **grille normalisée de 0 à 1000** : `[0,0]` en haut à gauche et `[1000,1000]` en bas à droite. Ce ne sont pas des coordonnées en pixels.

Cet exemple rend la voiture encadrée rouge et décrit l’arrière-plan à conserver. L’URL et les positions des cadres sont illustratives ; adaptez-les à votre image.

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "Dans <ref_image_0>, rendez la voiture <car_1> rouge et conservez l’arrière-plan <background_1>. [{\"id\":\"car_1\",\"from\":null,\"src_bbox\":null,\"tgt_bbox\":[250,300,750,800],\"desc\":\"Une voiture rouge conservant sa forme et son orientation d’origine.\"},{\"id\":\"background_1\",\"from\":\"ref_image_0\",\"src_bbox\":[0,0,1000,1000],\"tgt_bbox\":[0,0,1000,1000],\"desc\":\"Conserver la route, l’arrière-plan et l’éclairage d’origine.\"}]",
  "image_urls": [
    "https://example.com/car.jpg"
  ],
  "aspect_ratio": "auto",
  "resolution": "2k"
}
```

### Déplacer un élément

Placez l’objet suivant dans le tableau bbox à la fin du prompt. `from` désigne l’image source, `src_bbox` la position d’origine et `tgt_bbox` la nouvelle position. Utilisez aussi la balise correspondante `<knight_1>` dans les instructions en langage naturel.

```json theme={null}
{
  "id": "knight_1",
  "from": "ref_image_0",
  "src_bbox": [
    500,
    150,
    850,
    350
  ],
  "tgt_bbox": [
    194,
    55,
    544,
    255
  ],
  "desc": "Une petite figurine de chevalier gris en amigurumi."
}
```

## Mise en page texte-image

La mise en page fonctionne aussi sans image de référence. Chaque cadre utilise `id`, `bbox` et `desc`. Définissez explicitement `aspect_ratio`, car la grille de coordonnées s’étire avec le rapport d’aspect.

```json theme={null}
{
  "model": "flux-3-image",
  "aspect_ratio": "1:1",
  "prompt": "Illustration minimaliste d’une silhouette noire courant <silhouette_1> sur un fond chartreuse uni <background_1>. [{\"id\":\"background_1\",\"bbox\":[0,0,1000,1000],\"desc\":\"Un fond jaune-vert fluorescent avec une légère texture de papier.\"},{\"id\":\"silhouette_1\",\"bbox\":[150,150,850,850],\"desc\":\"Une silhouette noire courant avec une texture pointillée.\"}]"
}
```

### Remarques

* Le JSON bbox fait partie de la chaîne `prompt`. Si vous écrivez le JSON de requête à la main, échappez les guillemets internes avec `\"`. Les SDK ou la sérialisation JSON peuvent le faire automatiquement.

* Énumérez aussi les zones à conserver et décrivez les exigences de préservation dans `desc`.

* Les balises des éléments dans le prompt doivent correspondre une à une aux valeurs `id` du JSON. Les identifiants de référence comme `<ref_image_0>` désignent les images d’entrée.

* Ce modèle n’a pas de paramètre `mask` et ne prend pas en charge `mask_url` ; fournir `mask_url` renvoie HTTP 400. La retouche bbox n’utilise pas de paramètre d’envoi de masque.

## 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 de la tâche.

  <Expandable title="Afficher les champs de la tâche">
    <ResponseField name="status" type="string">
      `submitted` indique une soumission réussie, pas la fin de la génération.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID de tâche utilisé pour consulter l’état et les résultats.
    </ResponseField>
  </Expandable>
</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": {
    "status": "completed",
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.jpg"]
        }
      ]
    }
  }
}
```

Lisez les liens d’images dans le tableau `data.result.images[0].url`. Si l’état est `failed`, consultez le message d’erreur renvoyé au lieu de continuer à attendre une image.

## Résolution et facturation

Facturation par image. Le prix unitaire dépend uniquement de `resolution`, pas du rapport d’aspect ni du nombre d’images de référence. Les images de référence n’entraînent aucun supplément.

| Niveau de résolution | Taille de sortie approximative |
| - | - |
| `768sq` | Environ 768×768 |
| `1k` (par défaut) | Environ 1MP |
| `1.5k` | Environ 2MP |
| `2k` | Environ 4MP |
| `4k` | Environ 16MP |

Les tailles sont approximatives ; les dimensions réelles de l’image renvoyée font foi. Consultez les [tarifs des modèles](https://apimart.ai/pricing) pour chaque niveau.

Les tâches échouées ou bloquées par la modération sont intégralement remboursées.

## Erreurs de paramètres courantes

| Requête | Résultat et action |
| - | - |
| `resolution: "3k"` | HTTP 400 ; utiliser l’un des 5 niveaux pris en charge |
| `size: "1024x1024"` | HTTP 400 ; utiliser un rapport d’aspect et choisir la résolution avec `resolution` |
| `n: 2` | HTTP 400 ; une seule image est générée par requête |
| 11 images de référence | HTTP 400 ; fournir au maximum 10 images |
| `grounding: "false"` | HTTP 400 ; utiliser le booléen `false` |


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