🎯 Comprende el concepto central
La API de MidJourney simula interacciones de botones de Discord. A diferencia de las API REST típicas, funciona como una máquina de estados donde cada operación devuelve nuevos botones para el siguiente paso.Las 4 APIs principales
| API | Propósito | Cuándo usarla |
|---|---|---|
POST /mj/submit/imagine | Generación de texto a imagen | Punto de partida para todos los flujos de trabajo |
GET /mj/task/\{id\}/fetch | Consultar el estado de la tarea y obtener botones | Después de cada envío (consulta hasta que termine) |
POST /mj/submit/action | Hacer clic en un botón (upscale, vary, zoom, etc.) | Cuando quieras operar sobre una imagen |
POST /mj/submit/modal | Enviar entrada adicional | Solo cuando el estado es MODAL |
📊 Diagrama completo del flujo de trabajo
🔑 Concepto clave: botones y customId
Cada tarea completada con éxito devuelve un arreglobuttons. Cada botón tiene un customId que usas para activar la siguiente acción.
Ejemplo de respuesta de /mj/task/\{id\}/fetch:
customId NO es un valor fijo. Cambia en cada tarea. Obténlo siempre del arreglo buttons.
📋 Referencia de botones por etapa
Después de IMAGINE (imagen de cuadrícula 4-grid)
Estos botones se devuelven cuando se completa la generación inicial de tu imagen:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Mejorar una sola imagen | Imagen individual en alta resolución |
| V1-V4 | MJ::JOB::variation::1::xxx | Generar variaciones | Nueva cuadrícula 4-grid |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Regenerar todo | Nueva cuadrícula 4-grid |
Después de UPSCALE (imagen individual)
Después de hacer upscale, obtienes acceso a herramientas de edición:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ No |
| Upscale (Creative) / Upscale (4x) | ❌ No |
| Vary (Subtle) 🪄 | ❌ No |
| Vary (Strong) 🪄 | ❌ No |
| Vary (Region) 🖌️ | ✅ Sí (máscara) |
| Zoom Out 2x / 1.5x 🔍 | ❌ No |
| Custom Zoom 🔍 | ✅ Sí (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ No |
| Animate 🎞️ | ❌ No |
| 🔄 Reroll | ❌ No |
Nota: Las etiquetas de los botones y los formatos de⚠️ ¡El botón Inpaint (Vary Region) solo aparece después de Upscale!customIdpueden variar según la versión de MJ especificada en tu prompt (por ejemplo,--v 6.1frente a--v 5.2). Lee siempre los botones desde la respuesta de la API.
⚡ Ejemplo completo: generar y hacer upscale
Paso 1: Enviar solicitud Imagine
Paso 2: Consultar el estado de la tarea
Paso 3: Hacer clic en U1 para hacer upscale
Paso 4: Consultar la nueva tarea y obtener el resultado
⚠️ ¿Cuándo se requiere Modal?
Cuando llamas a/mj/submit/action y el estado de la tarea pasa a ser MODAL en lugar de SUCCESS, debes llamar a /mj/submit/modal para proporcionar información adicional.
Operaciones con Modal confirmadas
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (máscara PNG) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (p. ej., “your prompt —zoom 2”) |
🚀 Selección del modo de velocidad
Agrega el prefijo de velocidad a la ruta:| Modo | Prefijo de ruta | Ejemplo |
|---|---|---|
| Rápido | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (predeterminado) | /mj/submit/imagine |
🔗 Otros puntos de entrada
Estas APIs son puntos de entrada independientes que no siguen el flujo imagine → action:| API | Propósito |
|---|---|
POST /mj/submit/blend | Combina de 2 a 5 imágenes en una sola |
POST /mj/submit/describe | Genera un prompt a partir de una imagen |
POST /mj/submit/video | Convierte una imagen en video |
POST /mj/submit/edits | Edita una imagen con una máscara |
❓ Consejos de solución de problemas
Según el diseño de la API y el flujo de trabajo, estos son problemas comunes que puedes encontrar:| Problema | Causa probable | Solución |
|---|---|---|
| No se encuentra el botón Vary (Region) | Se está viendo la imagen en cuadrícula 4-grid | Primero haz upscale (haz clic en U1-U4) y luego revisa los botones |
Estado de tarea atascado en MODAL | La operación requiere entrada adicional | Llama a /mj/submit/modal con los datos requeridos |
customId no funciona | Se está usando un valor desactualizado o codificado de forma fija | Obtén siempre un customId reciente de la respuesta de /mj/task/\{id\}/fetch |
Arreglo buttons vacío | La tarea sigue en progreso | Espera a status: "SUCCESS" antes de acceder a los botones |