dall-e-2, gpt-image-1, le dernier gpt-image-2, ainsi que les modèles de la série nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro accessibles via la même interface.
Ce document présente principalement le processus d’utilisation de l’API OpenAI Images Edits, qui nous permet d’utiliser facilement les fonctionnalités d’édition d’images officielles d’OpenAI.
Processus de Demande
Pour utiliser l’API OpenAI Images Edits, commencez par obtenir votre API Token sur le tableau de bord Ace Data Cloud pour le garder en réserve.
Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter, après quoi vous serez automatiquement renvoyé à la page actuelle.
Un seul API Token suffit pour accéder à tous les services de la plateforme, sans avoir besoin de faire une demande séparée pour chaque service. La première demande vous donnera un quota gratuit pour une expérience sans frais ; lorsque le quota est insuffisant, vous pouvez recharger le solde général dans le tableau de bord.
📘 Documentation complète : OpenAI Images Edits API →
Modèle GPT-Image-2
gpt-image-2 présente des améliorations significatives par rapport à gpt-image-1 dans le contexte de l’édition d’images :
- La structure est plus stable : changer de peau, de palette de couleurs ou de fond ne déforme presque jamais la mise en page et la composition de l’image d’origine.
- La conservation du texte est plus précise : les images contenant du texte, comme les infographies, les affiches et les menus, conservent un texte clair et lisible après l’édition.
- Support de l’envoi direct d’URL : en plus du téléchargement de fichiers traditionnel
multipart/form-data,gpt-image-2supporte également l’envoi d’URL d’images au format JSON, sans avoir besoin de télécharger d’abord l’image sur votre appareil, ce qui est idéal pour l’intégration dans des pipelines côté serveur. - Support de l’envoi direct en base64 : conformément à l’official, le champ
imagepeut également accepter directement du base64 (data:image/png;base64,...ou base64 brut), permettant d’éditer des images locales sans avoir à les télécharger sur un hébergement d’images. - Support de la redéfinition en haute résolution : vous pouvez envoyer une image d’origine de 1K et demander une sortie en 2K / 4K via le paramètre
size, le modèle effectuera également un agrandissement pendant le processus d’édition.
Intermédiaire Officiel / Variantes Inversées (:official / :reverse)
gpt-image-2 utilise par défaut la ligne inverse. Vous pouvez explicitement choisir la ligne via le suffixe du nom du modèle :
gpt-image-2:official: ligne de transfert officielle. Supporten > 1(retour de plusieurs images à la fois) et des véritables 2K / 4K, facturé par image, au prix de 2 fois le tarif par défaut degpt-image-2. Actuellement, cela n’est fourni que par le canal openai-hk, et si la ligne n’est pas disponible, une erreur sera directement renvoyée, sans rétrogradation vers la ligne inverse.gpt-image-2:reverse: équivalent complet àgpt-image-2par défaut (ligne inverse), sans changement de prix.
Les restrictions concernant le paramètre “n” ci-dessous ne s’appliquent qu’à la ligne par défaut / inverse ;gpt-image-2:officialsupporten > 1et est facturé par image.
Valeurs supportées pour size
Les contraintes de l’interface d’édition pour size sont identiques à celles de l’interface de génération — gpt-image-2 nécessite que size soit auto, vide, ou conforme au format WIDTHxHEIGHT, toute autre forme renverra une erreur 400. Tous les formats (1K / 2K / 4K / personnalisé) sont facturés de manière uniforme par image, indépendamment de la résolution de l’image d’origine et de la valeur demandée pour size.
Les contraintes strictes pour les dimensions personnalisées s’appliquent également : la largeur et la hauteur doivent être des multiples de 16, la longueur maximale ≤ 3840, et le nombre total de pixels ≤ 8,294,400.
Par exemple : si l’image d’origine est1024x1024, lorsquesizeest2048x2048, le modèle redessinera selon les instructions d’édition et produira une image 2K ; sisizeest3840x2160, il produira une image 4K en mode paysage ; siautoest transmis ou omis, le modèle choisira lui-même. Les trois options sont facturées de manière identique.
Concernant le paramètreVoici deux exemples réels sous différents angles pour apprécier les capacités d’édition denL’interface d’édition degpt-image-2ne supporte actuellement pasn > 1: ce paramètre sera silencieusement ignoré, que vous transmettiezn=1oun=10, une seule image sera renvoyée par demande, et la facturation ne sera que pour une image. Si vous avez besoin d’obtenir plusieurs résultats d’édition candidats en une seule fois, veuillez initier plusieurs demandes en parallèle. Cette restriction s’applique également àgpt-image-1/gpt-image-1.5, ainsi qu’aux sériesnano-banana/nano-banana-2-lite/nano-banana-2/nano-banana-pro.dall-e-2est actuellement le seul modèle d’édition à supporter nativementn > 1.
gpt-image-2.
Méthode d’appel 1 : JSON + URL d’image (recommandé)
Envoyez directement la demande au formatapplication/json, en remplissant le champ image avec l’URL d’une image, le modèle ira chercher cette image et l’éditera selon le prompt.
Par exemple, l’image d’origine ci-dessous a été générée avec gpt-image-2 pour un guide de vulgarisation scientifique :


Remarque : Le champimageprend également en charge un tableau, par exemple"image": ["url1", "url2", "url3"], permettant de transmettre jusqu’à 16 images de référence simultanément pour que le modèle prenne en compte plusieurs images lors de l’édition.
Transmission en base64 :image(et chaque élément du tableau) peut être une URL ou en base64 —data:image/png;base64,...ou base64 brut, ce qui est adapté pour les images locales que l’on ne souhaite pas d’abord télécharger sur un hébergement d’images. Par exemple :
Méthode d’appel deux : JSON + plusieurs images de référence
gpt-image-2 prend en charge la référence à plusieurs images pour générer le résultat final, par exemple en combinant plusieurs photos de produits dans un seul panier-cadeau :
Exemple de scénario : changer de style + conserver la structure
Voici un autre exemple, remplaçant une étagère en bois par une étagère flottante moderne, tout en conservant strictement le nombre et l’arrangement des livres sur chaque étagère. Image originale (étagère en bois générée avecgpt-image-2) :

task_id: e9544dba-727e-44a2-81e1-223d49869380) :

Méthode d’appel trois : multipart/form-data (compatible avec OpenAI SDK)
Si vous utilisez déjà le SDK Python officiel d’OpenAI, l’ancienne méthode de téléchargementmultipart/form-data est également applicable, il suffit de changer model en gpt-image-2 :
OPENAI_BASE_URL doit être défini sur https://api.acedata.cloud/openai, et OPENAI_API_KEY doit être défini sur le token obtenu :
Modèles de la série Nano Banana
La sérienano-banana a également intégré /openai/images/edits dans les scénarios d’édition, il suffit de changer model en l’un des modèles du tableau ci-dessous.
Important : Plage de support des paramètres Nano Banana se connecte au protocole OpenAI via une couche d’adaptation, ne prenant en charge que les paramètres suivants :model,prompt,image.
imagepeut être téléchargé viamultipart/form-data(le worker le convertira endata:<mime>;base64,...pour l’envoyer en amont), ou peut être transmis directement sous forme de chaîne d’URL d’image dans les champs de formulaire.- Les paramètres
mask,n,size,response_format, etc. ne sont pas pris en charge ; s’ils sont remplis, ils seront ignorés.- La structure de retour suit le format OpenAI (
data[].url), maiscreatedest fixé à0, etb64_jsonne sera pas retourné,revised_promptest toujours égal aupromptoriginal.
Appel via formulaire + URL d’image

Appel via formulaire + fichier local
Rappel asynchrone
Le mécanisme de rappel asynchronecallback_url est également valable pour nano-banana, le processus d’appel est identique à celui des autres modèles, voir la section Rappel asynchrone ci-dessous.
Utilisation de base
Nous pouvons maintenant utiliser le code pour faire un appel, ci-dessous un appel via CURL :authorization, que nous pouvons sélectionner directement dans la liste déroulante. Un autre paramètre est model, model est la catégorie de modèle que nous choisissons d’utiliser sur le site officiel d’OpenAI, ici nous avons principalement 1 type de modèle, les détails peuvent être consultés dans les modèles que nous fournissons. Un autre paramètre est prompt, prompt est le mot d’invite que nous entrons pour générer l’image. Le dernier paramètre est image, ce paramètre nécessite le chemin de l’image à éditer, l’image à éditer est montrée ci-dessous :

OPENAI_BASE_URL, qui peut être définie sur https://api.acedata.cloud/openai, et une variable d’authentification OPENAI_API_KEY, cette valeur est obtenue à partir de authorization, sur Mac OS, vous pouvez définir les variables d’environnement avec les commandes suivantes :
gift-basket.png est générée dans le répertoire actuel, le résultat est le suivant :

dall-e-2, gpt-image-1 et gpt-image-2, parmi lesquels gpt-image-2 est le modèle recommandé à utiliser, voir la section Modèle GPT-Image-2 ci-dessus.
Rappel asynchrone
Étant donné que l’API OpenAI Images Edits peut prendre un certain temps pour éditer les images, si l’API ne répond pas pendant longtemps, la requête HTTP maintiendra la connexion, entraînant une consommation supplémentaire de ressources système, c’est pourquoi cette API propose également un support de rappel asynchrone. Le processus global est le suivant : lorsque le client initie une demande, il spécifie un champcallback_url supplémentaire, après que le client a lancé la demande API, l’API renverra immédiatement un résultat contenant un champ task_id, représentant l’ID de la tâche actuelle. Lorsque la tâche est terminée, le résultat de l’édition de l’image sera envoyé au callback_url spécifié par le client sous forme de JSON POST, incluant également le champ task_id, permettant ainsi de lier le résultat de la tâche par ID.
Voyons comment procéder à travers un exemple.
Tout d’abord, le rappel Webhook est un service capable de recevoir des requêtes HTTP, les développeurs doivent le remplacer par l’URL de leur propre serveur HTTP. Pour des raisons de démonstration, nous utilisons un site Web de démonstration Webhook public https://webhook.site/, en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous :
Copiez cette URL, elle peut être utilisée comme Webhook, l’exemple ici est https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab.
Ensuite, nous pouvons définir le champ callback_url sur l’URL Webhook ci-dessus, tout en remplissant les paramètres correspondants, comme le montre le code suivant :
task_id dans le résultat, le champ data contient les mêmes résultats d’édition d’image que l’appel synchrone, et le champ task_id permet d’associer les tâches.
Gestion des erreurs
Lors de l’appel de l’API, si une erreur se produit, l’API renverra le code d’erreur et les informations correspondantes. Par exemple :400 token_mismatched: Mauvaise requête, probablement en raison de paramètres manquants ou invalides.400 api_not_implemented: Mauvaise requête, probablement en raison de paramètres manquants ou invalides.401 invalid_token: Non autorisé, jeton d’autorisation invalide ou manquant.429 too_many_requests: Trop de requêtes, vous avez dépassé la limite de taux.500 api_error: Erreur interne du serveur, quelque chose s’est mal passé sur le serveur.

