Envío de tareas y sondeo
Todos los endpoints de envío son tareas asíncronas: tras el envío devuelven untask_id, luego se consulta periódicamente GET /v1/midjourney/{task_id} para obtener el estado, hasta SUCCESS / FAILURE.
- Ritmo de sondeo: se recomienda una vez cada 3–5 s; una frecuencia mayor no aporta nada y desperdicia cuota.
- No bloquee de forma síncrona dentro de una petición web esperando a que la tarea termine: tras el envío devuelva de inmediato el
task_idy deje que el frontend sondee de forma asíncrona.
Diseño de prompts
Un buen prompt:- El sujeto primero: primero el sujeto, luego la descripción de la escena y al final los modificadores.
- Parámetros estructurados explícitos: usar
--ar/--v/--s(o los campos del body correspondientes) es más controlable que depender de los valores por defecto. - Evite palabras ambiguas:
photorealistices más preciso querealistic.
niji: true + version: "7"; la plataforma lo normaliza a --niji 7 y la facturación va por midjourney@imagine-niji7.
Buenas prácticas de generación guiada por imagen
| Origen | Práctica recomendada | Nota |
|---|---|---|
| Subida de usuario | Guarde primero en su propio OSS / CDN y envíe esa URL | No envíe base64 directamente (desperdicia ancho de banda) |
| URL pública | Envíela directamente | Atención al SSRF (debe ser accesible públicamente) y al límite de 12 MiB |
| Terceros / otros artefactos | Guárdelo primero en su propio OSS | Las URLs de terceros pueden caducar |
- Comprima a < 5 MiB: el límite de la plataforma es 12 MiB, pero las imágenes pequeñas se transmiten y procesan más rápido.
- Se aceptan los formatos PNG / JPG / WebP; se recomienda JPG de alta calidad.
- Una resolución de 1024–2048 px es suficiente; más es desperdicio.
- Peso de imagen
iw(0–3, por defecto 1): >1 se ajusta más a la imagen original, <1 da más libertad.
Manejo de errores y estrategia de reintentos
| code | Significado | Estrategia de reintento |
|---|---|---|
1 / 200 | Éxito | ✅ |
4 VALIDATION_ERROR | Parámetro incorrecto | ❌ No reintentar, corrija el parámetro |
3 NOT_FOUND | Sin instancia disponible / task_id inexistente | Si la instancia no está disponible, reintente más tarde; si el task_id no existe, no reintente |
9 FAILURE | Rechazo del servicio / error interno | ⏳ Reintentable, con retroceso exponencial (1s, 4s, 16s) |
21 MODAL | Estado no terminal | ✅ Continúe llamando a /modal |
24 BANNED_PROMPT | Palabra sensible | ❌ No reintentar, cambie el prompt; el reembolso es automático |
429 | Límite de tasa | ⏳ Retroceso exponencial + jitter |
5xx / error de red | Servidor / red | ⏳ Retroceso exponencial; ante error de red puede reintentar 1 vez de inmediato |
Flujo de operaciones secundarias
⚠️ Tras entrar en MODAL, inpaint debe llamar a /modal en un plazo de 30 minutos, de lo contrario el backend hace CANCEL automático + reembolso.
Control de facturación de video
- Un solo segmento:
batch_size: 1→ descuenta 1 ×midjourney@video - Lote de 4 segmentos:
batch_size: 4→ descuenta 4 ×midjourney@video - Un segmento en alta definición:
video_type: "vid_1.1_i2v_720"+batch_size: 1→ descuenta 1 ×midjourney@video-720p
batch_size=1; reserve 4 únicamente para comparar borradores en lote, no lo deje en 4 por defecto (multiplica el coste por N).
Concurrencia y rendimiento
- La plataforma impone un límite de envíos por minuto; al superarlo devuelve
429y hay que reintentar con retroceso. - La concurrencia real de generación la determina la capacidad del sistema; lo que la supere se pone en cola. Si una tarea permanece mucho tiempo en
SUBMITTED, normalmente está en cola. - El sondeo debe incluir siempre un
sleep; no haga un bucle infinito sin sleep.
Recomendaciones de monitorización
| Métrica | Umbral de referencia | Significado |
|---|---|---|
| Tasa de SUCCESS (última 1h) | > 95% | Si es baja indica anomalía del servicio / red |
| Tiempo medio de finalización | < 90s | Si es alto indica cola |
| Número de tareas detenidas en MODAL | Cercano a 0 | Si es alto indica que el cliente no llamó a /modal |
Proporción de code=24 | < 5% | Si es alta indica que el prompt activa palabras sensibles con frecuencia |
Lista de resolución de problemas
| Síntoma | Dirección de diagnóstico |
|---|---|
Tarea mucho tiempo en SUBMITTED | En cola en el sistema, consulte más tarde |
Tarea mucho tiempo en NOT_START | La plataforma la agotará y reembolsará automáticamente más tarde; no requiere intervención manual |
Tarea MODAL más de 30 minutos | El cliente no llamó a /modal; ya fue CANCELada automáticamente + reembolsada |
Campo prompt vacío | El resultado de texto de una tarea describe está en el campo description |
Falta una imagen en image_urls | La revisión del sistema bloqueó parte de las imágenes; revise fail_reason |
| Facturación por encima de lo esperado | Revise el campo quota; en video recuerde × batch_size |