88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Image

Format d'image de mi-parcours (Midjourney Proxy/Midjourney Proxy Plus)

Veuillez noter

Cette interface n'est pas une interface officielle de Midjourney, mais plutôt un Interface proxy Midjourney implémentée sur la base du projet open source midjourney-proxy by author novicezk.

Ce projet est divisé en deux versions, toutes deux adaptées par 88API:

Nous sommes très reconnaissants pour la contribution de l'auteur, qui nous permet d'utiliser facilement les puissantes fonctionnalités de Midjourney. Si vous avez le temps, merci de donner une étoile à l'auteur. Si vous en avez la possibilité, nous vous recommandons de prendre en charge la version payante de l'auteur, qui prend en charge plus de fonctionnalités.

Catégorie de fonctionnalitésOuvertVersion payante
Fonctionnalités de base
Imaginez les commandes et les actions associées
Prise en charge du remplissage d'image
Mélange (Mélange d'images)
Décrire (image en texte)
Progression des tâches en temps réel
Traduction invite chinoise
Détection rapide des mots sensibles
Connexion WSS avec jeton utilisateur
Configuration multi-comptes
Fonctionnalités avancées
Raccourcir (analyse rapide)
Mouvement de mise au point (Pan)
Zoom d'image (Zoom)
Redessinage local (varier la région)
Actions des boutons associés et mode Remix
Obtenir la valeur de départ de l'image
Gestion de compte
Persistance du pool de comptes
Prise en charge de plusieurs stockages (Redis/MySQL)
Récupération et paramètres des informations du compte
Fonction d'annulation de tâche
Backend de gestion intégré
Fonctionnalités intelligentes
Prise en charge de MJ V6.0
Surveillance automatique de l'état du compte
Changement de mode automatique
Niji・voyage Bot support
Service de visage InsightFace
Sécurité et performances
Prise en charge de la configuration dynamique
Correction du problème de déconnexion du jeton
Fonction de vérification automatique
Appel automatique de mot interdit

📝Présentation

Midjourney est un puissant modèle de génération et de traitement d'images capable de créer, d'éditer et de modifier des images basées sur des descriptions en langage naturel. En fournissant différentes interfaces, diverses tâches de génération et de traitement d'images peuvent être mises en œuvre.

🔄 Diagramme de flux de processus

graph TD
    A[Start] --> B{Select Task Type}

    %% Imagine Flow
    B -->|Text to Image| C[Submit Imagine Task]
    C --> D[Get Initial Image]
    D --> E{Select Operation}

    %% Basic Operation Branches
    E -->|U1-U4| F[Upscale]
    E -->|V1-V4| G[Variation]

    %% Blend Flow
    B -->|Image Mixing| H[Submit Blend Task]
    H --> D

    %% Describe Flow
    B -->|Image to Text| I[Submit Describe Task]
    I --> J[Get Image Description]

    %% Action & Modal Flow
    F --> K[Submit Action]
    G --> K
    K -->|Modal Required| L[Submit Modal]
    K -->|Direct Execution| M[Execution Complete]
    L --> M

    %% Face Swap Flow
    B -->|Face Replacement| N[Submit Swap Face Task]
    N --> M

    %% Query Related
    M --> O{Subsequent Operations}
    O -->|Query Progress| P[Get Task Details]
    O -->|Get Seed| Q[Get Image Seed]
    O -->|Save Image| R[Upload to Discord]

    %% Style Definitions
    classDef process fill:#f9f,stroke:#333,stroke-width:2px
    classDef decision fill:#bbf,stroke:#333,stroke-width:2px
    classDef endpoint fill:#bfb,stroke:#333,stroke-width:2px

    class A,M,J,R endpoint
    class B,E,O decision
    class C,D,F,G,H,I,K,L,N,P,Q process

Description du flux

  1. Tâches initiales
  • Imagine: génération de texte en image
  • Mélange: mélange multi-images
  • Décrire: description de l'image
  • Swap Face: remplacement du visage
  1. Traitement des images
  • U1-U4 : Opérations haut de gamme
  • V1-V4 : Génération de variations
  • Pan: traduction d'images
  • Zoom: mise à l'échelle de l'image
  1. Flux spéciaux
  • Action + Modal : Opérations nécessitant une confirmation modale
  • Exécution d'actions directes: Opérations ne nécessitant pas de modalité
  1. Gestion des tâches
  • Obtenir les détails de la tâche
  • Obtenez une graine d'image
  • Télécharger sur Discord

💡 Exemples de requêtes

Soumettre la tâche Imagine ✅

curl --location --request POST 'https://88api.ai/mj/submit/imagine' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "prompt": "Cat",
  "base64Array": [],
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

Response Example:

{
  "code": 1,
  "description": "Submitted successfully",
  "properties": {},
  "result": 1320098173412546
}

Soumettre une tâche de fusion ✅

curl --location --request POST 'https://88api.ai/mj/submit/blend' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "base64Array": [
    "data:image/png;base64,xxx1",
    "data:image/png;base64,xxx2"
  ],
  "dimensions": "SQUARE",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

Response Example:

{
  "code": 1,
  "description": "Submitted successfully",
  "properties": {},
  "result": 1320098173412546
}

Soumettre Décrire la tâche ✅

curl --location --request POST 'https://88api.ai/mj/submit/describe' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "base64": "data:image/png;base64,xxx",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

Response Example:

{
  "code": 1,
  "description": "Submitted successfully",
  "properties": {},
  "result": 1320098173412546
}

Soumettre le modal ✅

curl --location --request POST 'https://88api.ai/mj/submit/modal' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "maskBase64": "",
  "prompt": "",
  "taskId": "14001934816969359"
}'

Response Example:

{
  "code": 1,
  "description": "Submitted successfully",
  "properties": {},
  "result": 1320098173412546
}

Soumettre la tâche swap_face ✅

curl --location --request POST 'https://88api.ai/mj/insight-face/swap' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "sourceBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RDnYdriP1wsS81kwU8OVs/R3xu8s6bX7+zYnOH8coSqpmRSBjqerjcBlr2OB/lbAf/2Q==",
  "targetBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD849k="
}'

Response Example:

{
  "code": 0,
  "description": "string",
  "result": "string"
}

Exécuter l'action ✅

curl --location --request POST 'https://88api.ai/mj/submit/action' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "chooseSameChannel": true,
  "customId": "MJ::JOB::upsample::1::82c51c9d-bc33-4c07-a471-36c3dcb1a6f0",
  "taskId": "1728781324658687",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

Response Example:

{
  "code": 1,
  "description": "Submitted successfully",
  "properties": {},
  "result": 1320098173412546
}

Téléchargez des fichiers sur Discord ✅

curl --location --request POST 'https://88api.ai/mj/submit/upload-discord-images' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "base64Array": [],
  "filter": {
    "channelId": "",
    "instanceId": "",
    "remark": ""
  }
}'

Response Example:

{
  "code": 0,
  "description": "string",
  "result": ["string"]
}

Tâches de requête par liste d'ID ✅

curl --location --request POST 'https://88api.ai/mj/task/list-by-condition' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "ids": []
}'

Response Example:

[
  {
    "action": "IMAGINE",
    "buttons": [
      {
        "customId": "string",
        "emoji": "string",
        "label": "string",
        "style": 0,
        "type": 0
      }
    ],
    "description": "string",
    "failReason": "string",
    "finishTime": 0,
    "id": "string",
    "imageUrl": "string",
    "progress": "string",
    "prompt": "string",
    "promptEn": "string",
    "properties": {},
    "startTime": 0,
    "state": "string",
    "status": "NOT_START",
    "submitTime": 0
  }
]

Obtenir la tâche par ID spécifique ✅

curl --location --request GET 'https://88api.ai/mj/task/{id}/fetch' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json'

Response Example:

{
  "action": "IMAGINE",
  "buttons": [
    {
      "customId": "string",
      "emoji": "string",
      "label": "string",
      "style": 0,
      "type": 0
    }
  ],
  "description": "string",
  "failReason": "string",
  "finishTime": 0,
  "id": "string",
  "imageUrl": "string",
  "progress": "string",
  "prompt": "string",
  "promptEn": "string",
  "properties": {},
  "startTime": 0,
  "state": "string",
  "status": "NOT_START",
  "submitTime": 0
}

Obtenez une graine d'image de tâche ✅

curl --location --request GET 'https://88api.ai/mj/task/{id}/image-seed' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json'

Response Example:

{
  "code": 0,
  "description": "string",
  "result": "string"
}

📮 Demande

Points de terminaison

Soumettre la tâche Imagine

POST /mj/submit/imagine

Créez des images basées sur des invites textuelles.

Soumettre la tâche de fusion

POST /mj/submit/blend

Générez de nouvelles images en mélangeant plusieurs images d’entrée.

Soumettre Décrire la tâche

POST /mj/submit/describe

Générez des descriptions de texte basées sur les images d'entrée.

Soumettre le modal

POST /mj/submit/modal

Soumettez des informations modales pour ajuster les détails de génération d’image.

Soumettre la tâche swap_face

POST /mj/insight-face/swap

Effectuez un échange de visage en fonction des images source et cible.

Exécuter l'action

POST /mj/submit/action

Effectuez les opérations ultérieures sur les images générées, telles que la mise à l'échelle, les ajustements, etc.

Télécharger des fichiers sur Discord

POST /mj/submit/upload-discord-images

Téléchargez des images sur la plateforme Discord.

Tâches de requête par liste d'ID

POST /mj/task/list-by-condition

Interrogez les détails de la tâche en fonction de la liste d’ID de tâche spécifiée.

Obtenir la tâche par ID spécifique

GET /mj/task/{id}/fetch

Obtenez les détails de la tâche par ID de tâche.

Obtenir la graine de l'image de la tâche

GET /mj/task/{id}/image-seed

Obtenez la valeur de départ de l'image générée par la tâche spécifiée.

Méthode d'authentification

Incluez les éléments suivants dans l'en-tête de la demande pour l'authentification par clé API:

Authorization: Bearer $API_KEY

$API_KEY est votre clé API.

Paramètres du corps de la requête

Soumettre la tâche Imagine

botType
  • Type: chaîne d'énumération
  • Obligatoire: Non
  • Par défaut: MID_JOURNEY -Options:
  • MID_JOURNEY: Modèle à mi-parcours
  • NIJI_JOURNEY: modèle Niji Journey
  • Description: Sélectionnez le type de bot à utiliser
prompt
  • Type : Chaîne
  • Obligatoire : Oui
  • Description: invite de texte pour la génération d'images
  • Conseils:
  • Utiliser des descriptions claires et précises
  • Peut inclure un style artistique, une composition et d'autres détails
  • Prend en charge la saisie en anglais et en chinois
base64Array
  • Type: Tableau de chaînes
  • Obligatoire: Non
  • Description: tableau codé en base64 pour le remplissage d'image
  • Format: chaque élément doit être une chaîne d'image complète en base64 avec un préfixe de type MIME
accountFilter
  • Type : Objet
  • Obligatoire: Non
  • Propriétés:
  • channelId: ID de chaîne
  • instanceId: ID d'instance de compte
  • modes: tableau du mode compte, options: RELAX, FAST, TURBO
  • remark: Contenu inclus dans les remarques
  • remix: indique si le compte prend en charge le remix
  • remixAutoConsidered: paramètres de soumission automatique du remix
notifyHook
  • Type : Chaîne
  • Obligatoire: Non
  • Description: adresse de rappel une fois la tâche terminée, utilise notifyHook global lorsqu'elle est vide
state
  • Type : Chaîne
  • Obligatoire: Non
  • Description: paramètre d'état personnalisé pour le suivi des demandes

Soumettre la tâche de fusion

base64Array
  • Type: Tableau de chaînes
  • Obligatoire : Oui
  • Description: Tableau d'images encodé en Base64 à mélanger
  • Format: doit inclure 2 à 5 chaînes d'images en base64
dimensions
  • Type: chaîne d'énumération
  • Obligatoire: Non -Options:
  • PORTRAIT: rapport 2:3
  • SQUARE: rapport 1:1
  • rapport LANDSCAPE: 3:2
  • Description: paramètres du rapport hauteur/largeur de l'image de sortie

Soumettre Décrire la tâche

base64
  • Type : Chaîne
  • Obligatoire : Oui
  • Description : Encodage Base64 de l'image à décrire
  • Format: Chaîne complète en base64 avec préfixe de type MIME

Soumettre une tâche modale

maskBase64
  • Type : Chaîne
  • Obligatoire: Non
  • Description: Encodage Base64 de l'image du masque pour redessiner localement
prompt
  • Type : Chaîne
  • Obligatoire: Non
  • Description: invite de texte pour la zone de redessinage
taskId
  • Type : Chaîne
  • Obligatoire : Oui
  • Description: ID de la tâche d'origine

Soumettre la tâche d'échange de visage

sourceBase64
  • Type : Chaîne
  • Obligatoire : Oui
  • Description: Encodage Base64 de l'image source du visage
  • Exigences: L'image doit contenir un visage clair
targetBase64
  • Type : Chaîne
  • Obligatoire : Oui
  • Description : Encodage Base64 de l'image cible
  • Exigences: L'image doit contenir le visage à remplacer

Exécuter l'action

chooseSameChannel
  • Type: Booléen
  • Obligatoire: Non
  • Par défaut: faux
  • Description: s'il faut sélectionner des comptes dans le même canal
customId
  • Type : Chaîne
  • Obligatoire : Oui
  • Description: Identifiant de l'action
  • Format: chaîne de format spécifique, telle que "MJ::JOB::upsample::1::xxx"
taskId
  • Type : Chaîne
  • Obligatoire : Oui
  • Description: ID de tâche pour l'action à exécuter

Télécharger des fichiers sur Discord

base64Array
  • Type: Tableau de chaînes
  • Obligatoire : Oui
  • Description: Tableau d'images encodé en Base64 à télécharger
filter
  • Type : Objet
  • Obligatoire: Non
  • Propriétés:
  • channelId: ID du canal cible
  • instanceId: ID d'instance de compte
  • remark: Informations sur les remarques

Tâches de requête par liste d'ID

ids
  • Type: Tableau de chaînes
  • Obligatoire : Oui
  • Description: Liste des ID de tâches à interroger

Format de réponse commun

Toutes les interfaces renvoient des structures de réponse similaires:

code
  • Type : Entier
  • Description: Code d'état
Code d'étatDescriptif
1Soumis avec succès
22Tâche en file d'attente
21Erreur de paramètre
23Erreur système
24Compte indisponible
25Solde insuffisant
description
  • Type : Chaîne
  • Description: informations de description de la réponse
properties
  • Type : Objet
  • Description: Propriétés étendues
result
  • Type : Chaîne ou tableau
  • Description: résultat renvoyé, peut être l'ID de la tâche ou d'autres données

📥 Réponse

Réponse réussie

action

  • Type: chaîne d'énumération
  • Description: Type de tâche
Valeur de chaîneDescriptif
IMAGINECréer une image
UPSCALEImage haut de gamme
VARIATIONGénérer des variations
ZOOMAgrandir l'image
PANImage panoramique
DESCRIBEDescription des images
BLENDMélange d'images
SHORTENRaccourcir l'invite
SWAP_FACERemplacement du visage

buttons

  • Type: Tableau d'objets
  • Description: Boutons de commande exécutables
Propriétés du tableauDescriptif
customIdIdentificateur d'action
emojiIcône du bouton
labelTexte du bouton
styleStyle (2=Primaire, 3=Vert)
typeType utilisé en interne par le système

description

  • Type : Chaîne
  • Description: informations sur la description de la tâche

failReason

  • Type : Chaîne
  • Description: Raison de l'échec de la tâche

finishTime

  • Type : Entier
  • Description: horodatage d'achèvement de la tâche

id

  • Type : Chaîne
  • Description: Identifiant unique de la tâche

imageUrl

  • Type : Chaîne
  • Description : URL de l'image générée

progress

  • Type : Chaîne
  • Description: informations sur la progression de la tâche

prompt

  • Type : Chaîne
  • Description: invite originale

promptEn

  • Type : Chaîne
  • Description: invite en anglais

status

  • Type: chaîne d'énumération
  • Description: Statut de la tâche
Valeur de chaîneDescriptif
NOT_STARTPas démarré
SUBMITTEDSoumis
MODALOpération modale en cours
IN_PROGRESSEn cours
FAILUREÉchec
SUCCESSRéussi
CANCELAnnulé

submitTime

  • Type : Entier
  • Description: horodatage de soumission de la tâche

startTime

  • Type : Entier
  • Description: Horodatage de début d'exécution de la tâche

Réponse d'erreur

En cas de problèmes avec la requête, l'API renvoie une réponse d'erreur:

Codes d'état HTTP

  • 400 Bad Request: Paramètres de requête invalides
  • 401 Unauthorized: Clé API invalide ou manquante
  • 403 Forbidden: autorisations insuffisantes
  • 404 Not Found: Ressource non trouvée
  • 429 Too Many Requests: Limite de fréquence de requête dépassée
  • 500 Internal Server Error: Erreur interne du serveur

Format de réponse d'erreur

{
  "code": `<error_code>`,
  "description": "Error description information",
  "result": null
}

💡 Bonnes pratiques

Suggestions d'écriture rapides

  1. Utilisez un langage clair et concis pour décrire le contenu de l'image attendu
  2. Peut se référer à divers paramètres pris en charge par Midjourney pour contrôler le style de l'image
  3. Utilisez de manière appropriée les descriptions négatives pour exclure les éléments indésirables
  4. Peut utiliser les URL d'images comme références pour guider la génération

Processus de génération d'images

  1. Soumettez la tâche Imagine pour obtenir les premières images
  2. Optimisez davantage via Blend, Modal et d'autres tâches selon les besoins
  3. Exécuter des opérations d'action pour le réglage fin de l'image
  4. Téléchargez et enregistrez des images de résultats satisfaisantes

Exigences relatives au format d'image

  1. Formats d'images pris en charge: -JPEG/JPG -PNG
  • GIF (statique)
  • WEBP
  1. Limites de taille d'image:
  • Taille du fichier: 4 Mo maximum
  • Résolution: 1024x1024 recommandé ou supérieur
  • Rapport hauteur/largeur: prend en charge 1:1, 2:3, 3:2

Suggestions d'optimisation des performances

  1. Encodage Base64:
  • Utiliser le format d'encodage standard Base64
  • Inclure le préfixe de type MIME correct
  • Compresser les images pour réduire la transmission de données
  1. Traitement des tâches:
  • Utilisez le webhook pour recevoir des notifications d'achèvement de tâches
  • Définir des stratégies de nouvelle tentative raisonnables
  • Recommander d'utiliser des méthodes de traitement asynchrones

Gestion des erreurs

  • Implémenter des mécanismes de nouvelle tentative de requête

  • Ajouter un enregistrement du journal des erreurs

  • Définir des délais d'attente raisonnables

Sommaire

📝Présentation
🔄 Diagramme de flux de processus
Description du flux
💡 Exemples de requêtes
Soumettre la tâche Imagine ✅
Soumettre une tâche de fusion ✅
Soumettre Décrire la tâche ✅
Soumettre le modal ✅
Soumettre la tâche swap_face ✅
Exécuter l'action ✅
Téléchargez des fichiers sur Discord ✅
Tâches de requête par liste d'ID ✅
Obtenir la tâche par ID spécifique ✅
Obtenez une graine d'image de tâche ✅
📮 Demande
Points de terminaison
Soumettre la tâche Imagine
Soumettre la tâche de fusion
Soumettre Décrire la tâche
Soumettre le modal
Soumettre la tâche swap_face
Exécuter l'action
Télécharger des fichiers sur Discord
Tâches de requête par liste d'ID
Obtenir la tâche par ID spécifique
Obtenir la graine de l'image de la tâche
Méthode d'authentification
Paramètres du corps de la requête
Soumettre la tâche Imagine
botType
prompt
base64Array
accountFilter
notifyHook
state
Soumettre la tâche de fusion
base64Array
dimensions
Soumettre Décrire la tâche
base64
Soumettre une tâche modale
maskBase64
prompt
taskId
Soumettre la tâche d'échange de visage
sourceBase64
targetBase64
Exécuter l'action
chooseSameChannel
customId
taskId
Télécharger des fichiers sur Discord
base64Array
filter
Tâches de requête par liste d'ID
ids
Format de réponse commun
code
description
properties
result
📥 Réponse
Réponse réussie
action
buttons
description
failReason
finishTime
id
imageUrl
progress
prompt
promptEn
status
submitTime
startTime
Réponse d'erreur
Codes d'état HTTP
Format de réponse d'erreur
💡 Bonnes pratiques
Suggestions d'écriture rapides
Processus de génération d'images
Exigences relatives au format d'image
Suggestions d'optimisation des performances
Gestion des erreurs