Aller au contenu principal

Endpoint /v1/images/edits : modifier vos images

L’édition d’images avec l’API Grok

Au-delà de la génération, l’API xAI propose un endpoint dédié à l’édition d’images existantes : POST /v1/images/edits. Cet endpoint vous permet de modifier, transformer ou enrichir des images en décrivant les changements souhaités par un simple prompt textuel.

5
Images sources max
2
Formats d'entrée
JSON
Content-Type requis
Tours d'édition

Structure d’une requête d’édition

La requête d’édition utilise un format JSON avec le modèle, un prompt décrivant la modification et l’image source :

import requests
import os

headers = {
    "Authorization": f"Bearer {os.getenv('XAI_API_KEY')}",
    "Content-Type": "application/json"
}

payload = {
    "model": "grok-imagine-image",
    "prompt": "Ajoutez un chapeau rouge au personnage",
    "image": {
        "url": "https://exemple.com/photo-personnage.jpg"
    }
}

response = requests.post(
    "https://api.x.ai/v1/images/edits",
    headers=headers,
    json=payload
)

result = response.json()
edited_url = result["data"][0]["url"]

Pourquoi utiliser requests au lieu du SDK OpenAI ?

L’endpoint d’édition xAI utilise un format JSON, tandis que la méthode images.edit() du SDK OpenAI envoie les données en multipart/form-data. Cette incompatibilité de content-type signifie que vous devez utiliser directement l’API REST avec la bibliothèque requests pour les éditions.

# NE FONCTIONNE PAS avec l'API xAI
# client.images.edit(...)  # Envoie en multipart, pas en JSON

# FONCTIONNE : appel REST direct
requests.post(
    "https://api.x.ai/v1/images/edits",
    headers=headers,
    json=payload
)

Paramètres de l’endpoint d’édition

  • model (obligatoire) : grok-imagine-image ou grok-imagine-image-pro
  • prompt (obligatoire) : description de la modification à apporter
  • image : objet contenant l’URL d’une seule image source
  • images : tableau d’objets pour plusieurs images sources (mutuellement exclusif avec image)
  • mask : objet contenant l’URL du masque de zone à éditer
  • n : nombre de variantes à générer (1 à 10)
  • response_format : url ou b64_json

Types de modifications possibles

L’édition d’images permet de nombreuses transformations :

  • Ajout d’éléments : “Ajoutez des lunettes de soleil au personnage”
  • Suppression : “Retirez l’arrière-plan et remplacez-le par un fond blanc”
  • Transformation de style : “Convertissez cette photo en illustration aquarelle”
  • Modification d’ambiance : “Changez la scène du jour à la nuit”
  • Correction : “Améliorez l’éclairage et augmentez le contraste”
# Exemple : changer le style d'une image
payload = {
    "model": "grok-imagine-image",
    "prompt": "Transformez cette photo en une illustration style bande dessinée franco-belge",
    "image": {
        "url": "https://exemple.com/photo-ville.jpg"
    }
}

Mise en pratique

Essayez d’éditer une image en plusieurs étapes. Commencez par une modification simple, puis affinez :

# Étape 1 : modifier l'arrière-plan
payload_step1 = {
    "model": "grok-imagine-image",
    "prompt": "Remplacez l'arrière-plan par un coucher de soleil sur la mer",
    "image": {"url": "https://exemple.com/portrait.jpg"}
}

Points clés à retenir

  • L’endpoint d’édition est POST /v1/images/edits
  • Utilisez requests en Python, pas le SDK OpenAI (incompatibilité de format)
  • Vous pouvez fournir jusqu’à 5 images sources par requête
  • Le prompt décrit la modification souhaitée en langage naturel
  • Les deux modèles (standard et pro) sont disponibles pour l’édition