> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-de47a659.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Édition d'images

> Éditez, retouchez par inpainting et composez des images avec les endpoints /image/edit et /image/multi-edit de Venice, ou détourez en PNG transparent.

L'édition d'images sur Venice est synchrone. Envoyez votre image source à `/image/edit` ou `/image/multi-edit` et le résultat édité revient dans la même réponse sous forme de fichier PNG. Pour les détourages, `/image/background-remove` renvoie un PNG transparent.

<Warning>
  Les endpoints d'édition d'images sont expérimentaux et le comportement spécifique au modèle peut évoluer au fil du temps.
</Warning>

## Endpoints

| Endpoint                        | Objectif                                                                                                | Idéal pour                                                 |
| ------------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `POST /image/edit`              | Éditer une seule image avec un prompt                                                                   | Éditions générales et inpainting piloté par prompt         |
| `POST /image/multi-edit`        | Éditer en utilisant plusieurs images de référence (3, ou jusqu'à 6 sur les modèles de niveau supérieur) | Composition et éditions multi-références                   |
| `POST /image/background-remove` | Supprimer l'arrière-plan d'une image                                                                    | Détourages transparents pour produits, portraits et assets |

## Quand utiliser quel endpoint

* Utilisez `/image/edit` lorsque vous avez une image source et souhaitez modifier, supprimer ou restyler une partie de celle-ci avec un prompt.
* Utilisez `/image/multi-edit` lorsque vous avez besoin d'un contrôle supplémentaire via des masques, des superpositions ou des couches de référence.
* Utilisez `/image/background-remove` lorsque vous souhaitez uniquement un sujet de premier plan propre avec transparence.

<Note>
  Pour l'inpainting, utilisez `/image/edit` ou `/image/multi-edit`. L'ancien paramètre `inpaint` sur `/image/generate` est déprécié.

  <Tip>
    Définissez `enhance_prompt: true` sur l'un ou l'autre des endpoints d'édition pour qu'un enhancer conscient de l'image analyse l'image ou les images d'entrée et réécrive votre instruction avant l'édition. Voir [Amélioration de prompt](/guides/media/prompt-enhancement) pour le comportement, la tarification et les détails de l'en-tête de réponse.
  </Tip>
</Note>

## Étape 1 : Éditer une seule image

L'édition d'une seule image est le flux d'inpainting le plus simple. Envoyez une image et un prompt court tel que « remove the sign », « change the sky to sunrise » ou « replace the background with a studio backdrop ».

**Requête :**

```bash theme={null}
POST https://api.venice.ai/api/v1/image/edit
Authorization: Bearer $VENICE_API_KEY
Content-Type: application/json

{
  "model": "qwen-edit",
  "prompt": "Replace the cloudy sky with a warm sunrise while preserving the buildings and canal",
  "image": "https://example.com/venice-canal.jpg"
}
```

**Réponse (200) :**
Le corps de la réponse est constitué de données binaires brutes `image/png`. Enregistrez-les directement dans un fichier.

<CodeGroup>
  ```python Python theme={null}
  import base64
  import os
  import requests

  with open("input.jpg", "rb") as f:
      image_base64 = base64.b64encode(f.read()).decode("utf-8")

  response = requests.post(
      "https://api.venice.ai/api/v1/image/edit",
      headers={
          "Authorization": f"Bearer {os.environ['VENICE_API_KEY']}",
          "Content-Type": "application/json",
      },
      json={
          "model": "qwen-edit",
          "prompt": "Remove the tourist crowd from the square and keep the architecture intact",
          "image": image_base64,
      },
  )

  with open("edited.png", "wb") as f:
      f.write(response.content)
  ```

  ```javascript Node.js theme={null}
  import fs from "fs";

  const imageBase64 = fs.readFileSync("input.jpg").toString("base64");

  const response = await fetch("https://api.venice.ai/api/v1/image/edit", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VENICE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "qwen-edit",
      prompt: "Remove the tourist crowd from the square and keep the architecture intact",
      image: imageBase64,
    }),
  });

  const editedImage = Buffer.from(await response.arrayBuffer());
  fs.writeFileSync("edited.png", editedImage);
  ```

  ```bash cURL theme={null}
  curl https://api.venice.ai/api/v1/image/edit \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -o edited.png \
    -d '{
      "model": "qwen-edit",
      "prompt": "Colorize this black and white portrait naturally",
      "image": "https://example.com/portrait-bw.jpg"
    }'
  ```
</CodeGroup>

## Étape 2 : Utiliser multi-edit pour les masques ou l'inpainting en couches

`/image/multi-edit` accepte plusieurs images, et le plafond est spécifique au modèle : la plupart des modèles d'édition en autorisent 3, tandis que ceux de niveau supérieur — dont `gpt-image-2-edit`, `nano-banana-pro-edit`, `seedream-v5-pro-edit`, `flux-2-max-edit` et `wan-2-7-pro-edit` — en autorisent jusqu'à 6. Lisez `model_spec.constraints.maxInputImages` depuis `GET /models?type=inpaint` pour obtenir le plafond d'un modèle donné ; lorsque le champ est absent, le plafond est de 3.

La première image est l'image de base. Les images restantes sont des références supplémentaires qui conditionnent l'édition.

<Note>
  L'endpoint public n'a pas de canal de masque. Les images supplémentaires agissent comme des références sur l'ensemble de l'image, pas comme des cartes de régions — il n'existe pas de paramètre `mask`, et en envoyer un renvoie un `400`. Rédigez un prompt précis pour délimiter la zone où l'édition s'applique.
</Note>

C'est le meilleur choix lorsque vous souhaitez :

* cibler une région spécifique avec un masque
* combiner une composition existante avec une superposition
* contraindre l'édition plus étroitement qu'un prompt sur une seule image ne peut le faire

**Requête JSON :**

```json theme={null}
{
  "modelId": "qwen-edit",
  "prompt": "Replace the blank billboard area with a glowing Venice film festival poster while preserving lighting and perspective",
  "images": [
    "https://example.com/street-scene.png",
    "https://example.com/billboard-mask.png"
  ]
}
```

**Requête multipart :**

```bash theme={null}
curl https://api.venice.ai/api/v1/image/multi-edit \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -F "modelId=qwen-edit" \
  -F "prompt=Replace the blank billboard area with a glowing Venice film festival poster while preserving lighting and perspective" \
  -F "images=@street-scene.png" \
  -F "images=@billboard-mask.png" \
  -o multi-edited.png
```

Comme pour `/image/edit`, le corps de la réponse est constitué de données `image/png` brutes.

<Note>
  `/image/multi-edit` utilise actuellement le champ `modelId` plutôt que `model` dans le schéma de requête.
</Note>

***

## Conseils d'inpainting

L'inpainting basé sur prompt fonctionne mieux lorsque l'instruction est courte et locale :

* `remove the tree`
* `change the sky to sunset`
* `replace the logo with a blank sign`
* `restore the torn corner of the photo`

Pour des changements de scène plus larges, décrivez ce qui doit rester identique :

```text theme={null}
Replace the background with a modern photo studio backdrop while preserving the subject pose, facial features, and clothing.
```

Si l'édition continue d'affecter la mauvaise zone, passez de `/image/edit` à `/image/multi-edit` et fournissez une couche de masque ou de superposition.

***

## Étape 3 : Supprimer l'arrière-plan

Utilisez `/image/background-remove` lorsque vous souhaitez isoler le sujet de premier plan sur un arrière-plan transparent. Cet endpoint renvoie un PNG avec transparence alpha.

**En utilisant une URL d'image :**

```bash theme={null}
curl https://api.venice.ai/api/v1/image/background-remove \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -o cutout.png \
  -d '{
    "image_url": "https://example.com/product-photo.jpg"
  }'
```

**En utilisant un téléversement de fichier local :**

```bash theme={null}
curl https://api.venice.ai/api/v1/image/background-remove \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -F "image=@product-photo.jpg" \
  -o cutout.png
```

Utilisez la suppression d'arrière-plan pour :

* les photos de produits e-commerce
* les photos de profil et les portraits
* les assets que vous prévoyez de placer sur un nouvel arrière-plan

***

## Paramètres de la requête

### `/image/edit`

| Paramètre        | Type                          | Requis   | Par défaut                  | Description                                                                                         |
| ---------------- | ----------------------------- | -------- | --------------------------- | --------------------------------------------------------------------------------------------------- |
| `image`          | fichier, chaîne base64 ou URL | Oui      | -                           | Image source à éditer                                                                               |
| `prompt`         | string                        | Oui      | -                           | Instructions textuelles pour l'édition                                                              |
| `model`          | string                        | Non      | `qwen-edit`                 | Identifiant du modèle d'édition                                                                     |
| `aspect_ratio`   | string                        | Non      | valeur par défaut du modèle | Ratio de sortie pour les modèles qui le prennent en charge                                          |
| `enhance_prompt` | boolean                       | Non      | `false`                     | Analyser l'image d'entrée et réécrire l'instruction d'édition avant l'inférence                     |
| `safe_mode`      | boolean                       | Non      | `true`                      | Floute le contenu pour adultes dans le résultat modifié. Définir sur false pour désactiver le flou. |
| `modelId`        | string                        | Déprécié | -                           | Alias déprécié de `model`                                                                           |

### `/image/multi-edit`

| Paramètre        | Type                                       | Requis | Par défaut  | Description                                                                                                                                                                               |
| ---------------- | ------------------------------------------ | ------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `images`         | tableau de fichiers, chaînes base64 ou URL | Oui    | -           | La première image est l'image de base ; les autres sont des références supplémentaires. Le maximum est spécifique au modèle — 3 par défaut, jusqu'à 6 sur les modèles de niveau supérieur |
| `prompt`         | string                                     | Oui    | -           | Instructions textuelles pour combiner ou éditer les couches                                                                                                                               |
| `modelId`        | string                                     | Non    | `qwen-edit` | Identifiant du modèle d'édition                                                                                                                                                           |
| `enhance_prompt` | boolean                                    | Non    | `false`     | Analyser les images d'entrée et réécrire l'instruction d'édition avant l'inférence                                                                                                        |
| `safe_mode`      | boolean                                    | Non    | `true`      | Floute le contenu pour adultes dans le résultat modifié. Définir sur false pour désactiver le flou.                                                                                       |

### `/image/background-remove`

| Paramètre   | Type                     | Requis                         | Description                        |
| ----------- | ------------------------ | ------------------------------ | ---------------------------------- |
| `image`     | fichier ou chaîne base64 | L'un de `image` ou `image_url` | Image source à détourer            |
| `image_url` | string                   | L'un de `image` ou `image_url` | URL publique de l'image à détourer |

<Note>
  `/image/background-remove` utilise un modèle interne fixe. Il n'accepte pas de champ `model`. Son envoi (par exemple `"model": "bria-bg-remover"`) renvoie `400 invalid model id`.
</Note>

### Contenu adulte et mode sûr

`/image/edit` et `/image/multi-edit` acceptent tous deux `safe_mode` (par défaut : `true`). Lorsqu'il est activé, le contenu adulte dans le résultat édité est flouté. Définissez `safe_mode: false` pour recevoir une sortie non floutée :

```json theme={null}
{
  "model": "qwen-edit-uncensored",
  "prompt": "…",
  "image": "…",
  "safe_mode": false
}
```

Le modèle par défaut `qwen-edit` bloque toujours l'imagerie sexuelle explicite et la violence réelle, indépendamment de `safe_mode`. Pour une édition non censurée, utilisez `qwen-edit-uncensored`.

La différence de nom du paramètre de modération entre les endpoints prête à confusion :

| Endpoint                                                  | Champ pour désactiver le flou |
| --------------------------------------------------------- | ----------------------------- |
| `POST /image/edit`, `POST /image/multi-edit`              | `safe_mode: false`            |
| `POST /image/generate` (génération native)                | `safe_mode: false`            |
| `POST /images/generations` (génération compatible OpenAI) | `moderation: "low"`           |

Passer `safe_mode` à `/images/generations` renvoie une erreur `400` avec `Unrecognized key(s) in object: 'safe_mode'`.

***

## Formats d'entrée pris en charge

| Endpoint                   | Entrée JSON           | Entrée multipart           | Sortie      |
| -------------------------- | --------------------- | -------------------------- | ----------- |
| `/image/edit`              | Chaîne base64 ou URL  | Téléversement de fichier   | `image/png` |
| `/image/multi-edit`        | Chaînes base64 ou URL | Téléversements de fichiers | `image/png` |
| `/image/background-remove` | Chaîne base64 ou URL  | Téléversement de fichier   | `image/png` |

Pour les endpoints d'édition, les dimensions de l'image doivent être d'au moins `65536` pixels et d'au plus `33177600` pixels. Les fichiers téléversés doivent faire moins de `25MB`.

***

## Modèles et tarification

Le modèle d'édition par défaut est `qwen-edit`, au tarif de **0,04 $par édition**. D'autres modèles capables d'édition peuvent avoir des tarifs et des contraintes différents. L'amélioration de prompt ajoute **0,04$ par réécriture appliquée** au prix de l'édition.

Voir :

* [Tarification des images](/overview/pricing)
* [API Models](/api-reference/endpoint/models/list) avec `type=inpaint`

***

## Erreurs

| Statut | Signification                                | Action                                                                                                               |
| ------ | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `400`  | Paramètres de requête invalides              | Vérifiez le nombre d'images, les noms de champs et le format d'entrée                                                |
| `401`  | Échec d'authentification                     | Vérifiez votre clé API                                                                                               |
| `402`  | Solde insuffisant                            | Ajoutez des crédits sur [venice.ai/settings/api](https://venice.ai/settings/api?utm_source=venice-api-documentation) |
| `415`  | Type de contenu invalide                     | Utilisez correctement JSON ou multipart form-data                                                                    |
| `429`  | Limite de débit dépassée ou modèle surchargé | Réessayez avec un backoff ; vérifiez l'en-tête `Retry-After`                                                         |
| `500`  | Échec du traitement d'inférence              | Réessayez la requête                                                                                                 |
| `503`  | Modèle à pleine capacité                     | Réessayez après un court délai                                                                                       |

<Note>
  Certains modèles d'édition ont des politiques de contenu plus strictes que les modèles de génération d'images. Par exemple, `qwen-edit` bloque les requêtes impliquant des images sexuelles explicites, des mineurs sexualisés ou de la violence réelle.
</Note>

***

## Workflows liés

* Utilisez [Génération d'images](/guides/media/image-generation) lorsque vous partez d'un texte plutôt que d'une image existante.
* Utilisez [Amélioration de prompt](/guides/media/prompt-enhancement) pour apprendre comment fonctionne la réécriture d'édition consciente de l'image.
* Utilisez [Modèles d'image](/models/image) pour comparer les familles de modèles de génération, d'édition et d'amélioration.
* Utilisez [API Image Edit](/api-reference/endpoint/image/edit), [API Multi-Edit](/api-reference/endpoint/image/multi-edit) et [API Background Remove](/api-reference/endpoint/image/background-remove) pour les détails complets du schéma.
