Processus de demande
Pour utiliser l’API Midjourney Imagine, vous pouvez d’abord vous rendre sur la page Midjourney Imagine API et cliquer sur le bouton « Acquire » pour obtenir les informations d’identification nécessaires à la demande :
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 vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle.
Lors de la première demande, un quota gratuit sera offert, vous permettant d’utiliser cette API gratuitement.
Utilisation de base
Ensuite, vous pouvez remplir le contenu correspondant sur l’interface, comme indiqué sur l’image :
Lors de la première utilisation de cette interface, nous devons remplir au moins deux contenus, l’un est authorization, que vous pouvez sélectionner directement dans la liste déroulante. L’autre paramètre est prompt, qui est la description de l’image que nous souhaitons générer. Il est conseillé de décrire en anglais, car l’image sera plus précise et de meilleure qualité. Ici, nous avons utilisé le contenu d’exemple Lamborghini speeds inside a volcano, représentant une Lamborghini se précipitant à l’intérieur d’un volcan.
Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, que vous pouvez copier et exécuter directement, ou cliquer sur le bouton « Try » pour effectuer un test.
Paramètres de demande principaux :
prompt: mot de description de l’image (prend en charge la traduction automatique).mode: mode de génération, optionsfast/relax/turbo, par défaut fast.timeout: temps d’attente (secondes), un dépassement de délai renverra directement.translation: si la traduction automatique des prompts non anglais est activée.split_images: si les résultats 2x2 doivent être renvoyés sous forme d’images individuelles.action/image_id: à spécifier lors de l’opération sur des images historiques.callback_url: adresse de rappel asynchrone.

task_id, l’ID de la tâche de génération de cette image, utilisé pour identifier de manière unique cette tâche de génération d’image.image_id, l’identifiant unique de l’image, qui doit être transmis lors de la prochaine opération de transformation de l’image.image_url, l’URL de la miniature, que vous pouvez ouvrir directement pour voir le résultat généré.image_width: largeur en pixels de la miniature.image_height: hauteur en pixels de la miniature.raw_image_url: l’URL de l’image originale, qui contient le même contenu que la miniature, mais est de meilleure qualité, bien que le temps de chargement soit un peu plus long.raw_image_width: largeur en pixels de l’image originale.raw_image_height: hauteur en pixels de l’image originale.actions, liste des opérations supplémentaires que vous pouvez effectuer sur l’image générée. Ici, 8 actions sont listées, oùupscalereprésente un agrandissement etvariationreprésente une transformation. Ainsi,upscale1représente l’agrandissement de la première image en haut à gauche, etvariation3représente une transformation basée sur la troisième image en bas à gauche.
image_url ou raw_image_url, vous pouvez voir comme illustré ci-dessous.
On peut voir qu’une image de prévisualisation 2x2 a été générée ici. Jusqu’à présent, le premier appel à l’API est terminé.
Agrandissement et transformation d’images
Nous allons maintenant essayer d’effectuer des opérations supplémentaires sur la photo générée, par exemple, si nous trouvons que la deuxième image en haut à droite est plutôt bonne, mais que nous souhaitons effectuer quelques ajustements, nous pouvons alors rempliraction avec variation2 et transmettre image_id :
Le résultat obtenu est le suivant :
image_url, l’image nouvellement générée est comme suit :
On peut voir que, pour l’image en haut à droite, nous avons à nouveau obtenu quatre photos similaires.
À ce moment-là, nous pouvons choisir l’une d’elles pour effectuer une opération de mise à l’échelle plus précise, par exemple, si nous choisissons la quatrième, nous pouvons transmettre action avec upscale4, en passant à nouveau l’ID de l’image actuelle via image_id.
Remarque : l’opérationLe résultat retourné est comme suit :upscaleprend moins de temps quevariationsur Midjourney.
image_url est comme montré ci-dessous :
Ainsi, nous avons réussi à obtenir une photo de Lamborghini.
Nous remarquons également que actions contient plusieurs opérations possibles, décrites comme suit :
upscale_2x: agrandit l’image de 2 fois, obtenant une image haute définition 2 fois plus grande.upscale_4x: agrandit l’image de 4 fois, obtenant une image haute définition 4 fois plus grande.zoom_out_2x: réduit l’image de deux fois (remplissage des zones environnantes).zoom_out_1_5x: réduit l’image de 1,5 fois (remplissage des zones environnantes).pan_left: déplace l’image vers la gauche.pan_right: déplace l’image vers la droite.pan_up: déplace l’image vers le haut.pan_down: déplace l’image vers le bas.
Réécriture d’image (image de fond)
Cette API prend également en charge la réécriture d’image, communément appelée image de fond. Nous pouvons entrer une URL d’image ainsi qu’un texte descriptif à réécrire, et cette API peut renvoyer l’image réécrite.Remarque : l’URL de l’image entrée doit être une image pure, ne peut pas être une image affichée dans une page web, sinon la réécriture d’image ne pourra pas être effectuée. Il est recommandé d’utiliser un hébergement d’images pour télécharger et obtenir l’URL de l’image.Par exemple, nous avons ici une image de coucher de soleil sur une route, avec quelques arbres et bâtiments à côté de la route, comme montré ci-dessous :
Maintenant, nous voulons la modifier pour qu’elle soit à côté d’une plage, avec une voiture garée sur le bord de la route. Nous pouvons donc construire le prompt suivant :
—iw 2 pour ajuster le poids de l’image.
Nous pouvons transmettre le contenu ci-dessus comme un tout au champ prompt, comme montré ci-dessous :
Le résultat de sortie est comme suit :
On peut voir que, tout en maintenant le style et la composition globaux de l’image d’origine, la scène entière est devenue à côté de la plage, tandis qu’une voiture est également apparue sur la route, c’est ce qu’on appelle le Prompt avec Image.
Fusion d’images
Cette API prend également en charge la fusion d’images, nous pouvons transmettre plusieurs images pour réaliser différents effets de fusion d’images. Par exemple, ici nous avons deux images, l’une est un ours en peluche, l’autre est une tronçonneuse, comme indiqué ci-dessous :

prompt, le résultat est le suivant :
On peut voir que nous avons réussi à réaliser la fusion d’images.
Remarque : la fusion d’images peut prendre en charge jusqu’à 5 URL d’images en entrée, c’est-à-dire qu’elle prend en charge la fusion de jusqu’à 5 images, le format d’entrée est le même que ci-dessus.
Transformation locale
Cette API prend également en charge la fonction de dessin local d’images, mais ne prend en charge que la génération d’images sous le contenu mentionné ci-dessus, nous pouvons transmettre l’ID unique d’une image générée, le paramètre d’action de redessin localaction ainsi que le masque de la zone à redessiner pour réaliser le redessin dans la zone de ce masque.
Par exemple, ici nous avons une image générée d’un chat :



Remarque : Le code Python ci-dessus décrit le processus de génération du masque. Si vous souhaitez l’intégrer à votre produit, veuillez écrire le code correspondant dans le langage de votre choix en fonction de son principe.Avec le code ci-dessus, nous avons obtenu le masque à redessiner. Ensuite, nous devons définir le paramètre
action sur variation_region, générer l’ID de l’image image_id (pour obtenir ce paramètre, référez-vous au contenu ci-dessus), et passer le masque correspondant mask. Les autres informations de paramètre sont les suivantes :
action: le comportement à effectuer sur l’image, icivariation_region, indiquant un redessin partiel de l’image.prompt: le terme descriptif pour le redessin partiel de l’image (paramètre optionnel).image_id: l’identifiant unique de l’image, facilitant le redessin partiel de l’image.mask: l’encodage base64 de la zone de masque correspondante à l’image (l’image est celle spécifiée par l’image_idci-dessus).
prompt est un paramètre non obligatoire. Ici, pour faciliter la comparaison, le prompt de la zone de masque est défini sur Un chat mignon, les paramètres sont configurés comme indiqué ci-dessous :

Exemple de code
On peut constater qu’à droite de la page, divers langages de code ont déjà été générés automatiquement, comme le montre l’image :
Exemple de réponse
Après un succès de la requête, l’API renverra des informations sur le résultat de l’image de fond d’échange. Par exemple :
Nous avons réussi à réaliser un redessin partiel de la zone personnalisée de l’image générée.
CURL
Callback asynchrone
Étant donné que la génération d’images par Midjourney nécessite d’attendre un certain temps, cette API est également conçue par défaut pour un mode d’attente prolongée. Cependant, dans certains scénarios, une attente prolongée peut entraîner des coûts supplémentaires en ressources, c’est pourquoi cette API propose également un moyen de rappel Webhook asynchrone. Lorsque la génération d’images réussit ou échoue, le résultat est envoyé à l’URL de rappel Webhook spécifiée via une requête HTTP. Une fois que l’URL de rappel reçoit le résultat, elle peut procéder à un traitement supplémentaire. Voici une démonstration du processus d’appel spécifique. 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, un site Web d’exemple Webhook public https://webhook.site/ est utilisé, en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous :
Copiez cette URL, vous pouvez l’utiliser comme Webhook, l’exemple ici est https://webhook.site/995d0a91-d737-40a7-a3b9-5baf68ed924c.
Ensuite, nous pouvons définir le champ callback_url sur l’URL Webhook ci-dessus, tout en remplissant prompt, comme illustré ci-dessous :
Après avoir cliqué sur tester, vous recevrez immédiatement une réponse task_id, qui sert à identifier l’ID de la tâche de génération actuelle, comme illustré ci-dessous :

Le résultat est celui de la tâche actuelle, le contenu est le suivant :
success indique si la tâche a été exécutée avec succès. Si elle a été exécutée avec succès, il y aura également les mêmes champs actions, image_id, image_url, et le résultat de retour est identique à celui décrit précédemment, de plus, il y a task_id pour identifier la tâche, afin de relier le résultat du Webhook à la demande API initiale.
Si la génération d’images échoue, l’URL Webhook recevra un contenu similaire à celui-ci :
success sera false, et il y aura également les champs error.code et error.message décrivant les détails de l’erreur de la tâche, le serveur Webhook peut traiter en fonction des résultats correspondants.
Sortie en continu
Midjourney a un processus de génération d’images avec une progression. Au début, il s’agit d’une photo floue, puis après plusieurs itérations, l’image devient progressivement claire, et enfin, une image complète est obtenue. Ainsi, le processus de génération d’une image peut être divisé en trois étapes : « Envoi de la commande » -> « Début de la génération d’images (itérations multiples pour devenir progressivement clair) » -> « Génération d’images terminée ». Sans sortie en continu activée, cette API, depuis l’envoi de la demande jusqu’au retour du résultat, couvre en réalité tout le processus de « Envoi de la commande » -> « Génération d’images terminée », le processus de génération d’images est également inclus, et comme Midjourney lui-même génère des images lentement, l’ensemble du processus nécessite environ une minute ou plus. Ainsi, pour une meilleure expérience utilisateur, cette API prend en charge la sortie en continu, c’est-à-dire qu’au moment où « la génération d’images commence », elle commence à renvoyer des résultats, chaque fois que le progrès du dessin change, les résultats seront diffusés jusqu’à la fin de la génération d’images. Si vous souhaitez renvoyer des réponses en continu, vous pouvez modifier le paramètreaccept dans l’en-tête de la requête, en le changeant en application/x-ndjson, mais le code d’appel doit également être modifié pour prendre en charge la réponse en continu.
Exemple de code Python :
Remarque : lorsque la génération n’est pas complètement terminée, le champ actions est vide, ce qui signifie qu’aucune opération de traitement supplémentaire ne peut être effectuée sur l’image intermédiaire. Une fois la génération terminée, l’URL de l’image générée pendant le processus sera détruite.
De plus, vous pouvez combiner les résultats en continu avec un rappel asynchrone en spécifiant l’en-tête accept=application/x-ndjson et le corps de la requête callback_url, puis callback_url peut recevoir plusieurs requêtes POST de résultats en continu.
