Midjourney V8.2 API : envoyer et suivre une tâche d'image
Envoyez une tâche Midjourney V8.2, gardez son ID et suivez ses résultats en Python. Comprenez les paramètres, les actions et les tarifs actuels.
Lire en MarkdownUne intégration Midjourney V8.2 API nécessite une version explicite, une requête d'image valide et un moyen de récupérer la tâche terminée. Avec SeedRouter, envoyez la requête à /v1/images/generations, conservez l'ID de tâche renvoyé et interrogez /v1/tasks/{id}. Un envoi réussi confirme la réception de la tâche ; les images arrivent dans le résultat final.
Ce guide suit le contrat de requête SeedRouter. Un test payant du 18 octobre 2026 a terminé une requête V8.2 Fast et livré quatre images de 1024 × 1024. Le portrait ci-dessous en fait partie. La page du modèle contient le Playground et les tarifs actuels ; la référence API distingue les entrées prises en charge des combinaisons restant à vérifier. [1]

Commencez par une requête Midjourney V8.2 API explicite
Utilisez l'ID complet du modèle, midjourney-v8.2. SeedRouter exige un modèle explicite : ne l'abrégez pas en midjourney et ne le déduisez pas d'un réglage de compte dans une autre interface. Enregistrez le modèle avec la requête envoyée. [1]
Préparez une clé API côté serveur et un prompt court dont le résultat sera facile à examiner. Commencez sans références ni actions sur une image parente pour tester le parcours de base. La requête ci-dessous a produit la série de portraits illustrée. Elle choisit Fast et active le contrôle supplémentaire du contenu :
{
"model": "midjourney-v8.2",
"prompt": "Cinematic portrait of a young woman with freckles and wind-swept auburn hair, wearing a cream cable-knit sweater, laughing on a coastal cliff at golden hour, warm rim light, shallow depth of field, 85mm film photograph",
"speed": "fast",
"nsfw_check": true
}La requête minimale nécessite seulement model et prompt ; si la vitesse est omise, Fast s'applique par défaut. Si vous ajoutez size, utilisez un rapport d'aspect comme "16:9", pas une instruction de dimensions en pixels WIDTHxHEIGHT. Un préréglage générique qui envoie 1024x1024, quality: "high" ou une valeur arbitraire de n ne respecte pas le contrat de ce modèle. Adaptez le corps à partir du tableau des champs Midjourney plutôt que de reprendre les réglages d'un autre modèle sans modification.
Envoyez une fois, puis interrogez l'ID de tâche enregistré
L'exemple Python téléchargeable utilise la bibliothèque standard, conserve la clé dans une variable d'environnement et écrit l'ID de tâche accepté dans un fichier local. Il sépare les commandes d'envoi et de suivi. Vous pouvez ainsi reprendre la lecture sans créer une nouvelle génération d'images.
export SEEDROUTER_API_KEY='your-server-side-key'
python3 midjourney-v8-2.py submit request.json --state mj-task.json
python3 midjourney-v8-2.py poll --state mj-task.jsonEnregistrez la requête JSON ci-dessus dans request.json. Remplacez la clé d'exemple par votre secret dans votre environnement local ; ne l'intégrez pas à un bundle de navigateur et ne l'enregistrez pas dans un dépôt. Pour tester un déploiement local, définissez SEEDROUTER_BASE_URL sur l'URL de base /v1 de ce déploiement.
L'exemple refuse d'écraser un fichier d'état existant pendant l'envoi. Il ne répète pas non plus automatiquement un POST après une rupture de connexion. Si la réponse est perdue, l'application peut ignorer si la tâche a été acceptée. Consultez l'historique des tâches avant de décider d'envoyer à nouveau.
Le suivi périodique est différent : il lit une tâche qui existe déjà. L'exemple s'arrête lorsque la tâche est terminée ou échouée, et signale une attente limitée si elle reste en traitement. Une limite d'attente est une observation côté client, pas la preuve qu'il faut régénérer l'image.
Lisez la structure de résultat propre à l'opération
Une opération d'image terminée renvoie ses URL dans output.data. Parcourez ce tableau sans supposer qu'il contient toujours quatre entrées. La génération, la sélection d'une image, sa description et une étape de saisie pour retouche peuvent renvoyer des types de résultat différents.
| Champ du résultat | Traitement à prévoir dans votre application |
|---|---|
status | Distinguer les tâches en traitement, terminées et échouées |
output.data[].url | Afficher ou enregistrer chaque image livrée |
output.grid | Identifier une grille comme telle ; un fichier peut contenir plusieurs choix d'image |
output.text | Afficher le texte renvoyé sans supposer quatre suggestions ni un contenu en anglais |
output.seed | L'enregistrer s'il est présent ; ne pas l'exiger dans chaque résultat |
output.awaiting_input | Poursuivre la procédure documentée de saisie pour retouche |
Traitez une tâche échouée comme un échec dans votre application, même si la requête HTTP utilisée pour la lire a réussi. Le succès HTTP signifie que la consultation du statut a été servie ; il ne signifie pas que l'image demandée a été générée.
Lorsque output.grid vaut true, une seule URL contient la grille. N'inventez pas quatre URL individuelles à partir de ce fichier. Une sélection ultérieure utilise la position de l'image dans la grille, à partir de un ; le nombre d'URL n'est pas le nombre de choix disponibles.
L'exemple affiche la sortie terminée en JSON. Votre application peut ajouter du stockage, des miniatures et des commandes de sélection autour des images renvoyées. Conservez l'ID de tâche avec ces résultats pour qu'une action ultérieure puisse désigner le bon parent.
Convertissez les paramètres natifs sans masquer les conflits
L'intégration accepte les champs structurés et les paramètres natifs de prompt pris en charge. L'ordre de priorité est champs structurés, puis extra, puis paramètres dans prompt. Les valeurs explicites zéro et false sont conservées.
Par exemple, un prompt contenant --stylize 700 associé à "stylize": 0 utilise la valeur zéro explicite. C'est utile lorsqu'une interface envoie un réglage distinct, mais cela peut surprendre une application qui assemble prompts et JSON à des endroits différents. Préférez une seule source pour chaque réglage.
Pour les requêtes SeedRouter V8.2, quality accepte 0.25, 0.5, 1 ou 2 dans les combinaisons compatibles. La qualité et hd sont indépendants : régler la qualité ne sélectionne pas HD. Vérifiez les limites actuelles des combinaisons avant de les associer ou d'ajouter d'autres références ; une entrée documentée ne prouve pas son effet sur toutes les versions. Raw est distinct des deux ; le guide Raw explique cette différence. [1]
Les champs JSON inconnus sont ignorés par cette intégration, tandis que les paramètres natifs inconnus sont rejetés. Une requête acceptée ne prouve pas qu'un champ JSON supplémentaire sans rapport a modifié la sortie. Vérifiez les noms de champs documentés et conservez le corps exact envoyé dans votre compte rendu de test.
Gardez les actions sur une image parente liées à leur tâche
Utilisez votre parent_task_id SeedRouter pour une action ultérieure. Une action dépendante reste attachée au contexte d'exécution d'origine. Si ce contexte est indisponible, elle échoue au lieu de créer un autre parent ailleurs. Le parent doit appartenir au même compte, utiliser le même modèle et rester disponible pour l'opération demandée. Les indices publics des images commencent à un.
Sélectionner une image et effectuer un agrandissement créatif sont deux opérations différentes. Un résultat select ne doit pas être présenté comme une amélioration de résolution. De même, une variation, un remix et l'Edit Model officiel de V8.2 sont des fonctions distinctes, soumises à des exigences différentes.
L'intégration actuelle ne propose pas le nouvel Edit Model comme opération API vérifiée. Ne remplacez pas cette fonction par une ancienne requête inpaint en supposant un comportement équivalent. Le guide de retouche explique les solutions disponibles et une séquence de retouche masquée V6.1 vérifiée ; la référence API consigne les limites des opérations implémentées.
Estimez les tâches plutôt que de compter les miniatures
Une génération terminée compte comme une tâche selon le contrat tarifaire de cette intégration. Sélectionner une image existante dans une grille ne crée pas une nouvelle génération facturable. Ouvrir l'étape de saisie d'une retouche n'ajoute pas une seconde génération ; l'opération modal finale est l'étape facturable. Une génération de quatre images n'équivaut pas automatiquement à quatre tâches facturées séparément. Le test V8.2 Draft du 18 octobre a renvoyé 24 images dans une seule tâche ; le nombre d'images renvoyées n'est pas une formule tarifaire fiable.
Utilisez le tarif actuel pour la version, l'opération, la vitesse et le mode sélectionnés. Les opérations sur une image parente peuvent hériter de paramètres ; leur prix doit donc provenir de la requête effective plutôt que de valeurs par défaut supposées. La page du modèle lit les tarifs configurés, au lieu de figer un montant en dollars dans ce tutoriel.
Pour votre test de validation, consignez la requête, l'ID de tâche, le statut final, le nombre de sorties et le montant réellement débité du compte. Une compilation réussie ou un test HTTP simulé ne permet pas d'établir ces faits d'exécution. Les requêtes échouées ne sont pas facturées par SeedRouter.
Questions fréquentes
Puis-je utiliser la même clé API dans le JavaScript du navigateur ?
Conservez-la sur votre serveur. Faites appeler par le navigateur un point d'accès authentifié de votre application, qui envoie la requête avec la clé côté serveur.
Un ID de tâche signifie-t-il que l'image est prête ?
Non. Lisez la tâche jusqu'à ce qu'elle indique une fin ou un échec, puis traitez le résultat correspondant. Enregistrez l'ID avant de commencer cette boucle de suivi.
Un délai d'attente dépassé doit-il déclencher une nouvelle génération ?
Pas automatiquement. Conservez tout ID de tâche connu et examinez la tâche existante. Un délai de connexion ou d'attente côté client ne prouve pas que l'envoi initial a été rejeté.
Puis-je changer de version pour une action sur une image parente ?
Cette intégration exige le même modèle que celui du parent. Lancez une génération distincte pour évaluer une autre version.
Commencez votre intégration Midjourney V8.2 API par une requête explicite et un ID de tâche enregistré. Vérifiez la sortie livrée et la facturation avant d'ajouter des références ou une chaîne d'actions sur les images.
Sources
Contrat et preuves d'exécution vérifiés le 18 octobre 2026. Les images présentées proviennent de tests d'intégration payants, pas d'un benchmark général du modèle.
