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

# Édition d'images

> Éditez, retouchez par inpainting, composez des entrées en couches et supprimez les arrière-plans d'images via les API synchrones de Venice.

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 1 à 3 images superposées | Éditions plus contrôlées avec masques ou superpositions    |
| `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é.
</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={"system"}
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={"system"}
  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={"system"}
  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={"system"}
  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 jusqu'à trois images. La première image est l'image de base. Les images restantes sont traitées comme des couches d'édition ou des masques, ce qui vous donne plus de contrôle que l'édition par prompt seul.

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={"system"}
{
  "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={"system"}
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={"system"}
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={"system"}
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={"system"}
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 |
| `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 1 à 3 fichiers, chaînes base64 ou URL | Oui    | -           | La première image est l'image de base ; les autres sont des couches d'édition ou des masques |
| `prompt`  | string                                           | Oui    | -           | Instructions textuelles pour combiner ou éditer les couches                                  |
| `modelId` | string                                           | Non    | `qwen-edit` | Identifiant du modèle d'édition                                                              |

### `/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 |

***

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

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) |
| `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 [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.
