Saltar al contenido principal
GET
/
v1
/
midjourney
/
{task_id}
curl --request GET \
  --url https://api.apimart.ai/v1/midjourney/task_01KV52C0TEJSYZMCG0NCS4YWKK \
  --header 'Authorization: Bearer <token>'
{
  "id": "task_01KV52C0TEJSYZMCG0NCS4YWKK",
  "status": "SUCCESS",
  "action": "IMAGINE",
  "progress": "100%",
  "grid_image_url": "https://cdn.apimart.ai/mj_xxxx.png",
  "image_urls": [
    "https://cdn.apimart.ai/mj_xxxx_0.png",
    "https://cdn.apimart.ai/mj_xxxx_1.png",
    "https://cdn.apimart.ai/mj_xxxx_2.png",
    "https://cdn.apimart.ai/mj_xxxx_3.png"
  ],
  "buttons": [
    {"customId": "MJ::JOB::upsample::1::abc123def456", "label": "U1"},
    {"customId": "MJ::JOB::variation::1::abc123def456", "label": "V1"}
  ],
  "prompt": "a beautiful sunset over mountains"
}
curl --request GET \
  --url https://api.apimart.ai/v1/midjourney/task_01KV52C0TEJSYZMCG0NCS4YWKK \
  --header 'Authorization: Bearer <token>'
{
  "id": "task_01KV52C0TEJSYZMCG0NCS4YWKK",
  "status": "SUCCESS",
  "action": "IMAGINE",
  "progress": "100%",
  "grid_image_url": "https://cdn.apimart.ai/mj_xxxx.png",
  "image_urls": [
    "https://cdn.apimart.ai/mj_xxxx_0.png",
    "https://cdn.apimart.ai/mj_xxxx_1.png",
    "https://cdn.apimart.ai/mj_xxxx_2.png",
    "https://cdn.apimart.ai/mj_xxxx_3.png"
  ],
  "buttons": [
    {"customId": "MJ::JOB::upsample::1::abc123def456", "label": "U1"},
    {"customId": "MJ::JOB::variation::1::abc123def456", "label": "V1"}
  ],
  "prompt": "a beautiful sunset over mountains"
}
Endpoint de sondeo recomendado:
GET /v1/tasks/{task_id}
Los estados unificados son pending / processing / completed / failed; los resultados aparecen en result.images[].url. Use el endpoint estilo MJ cuando necesite buttons[].customId para acciones posteriores:
GET /v1/midjourney/{task_id}

Flujo de estado

SUBMITTED → IN_PROGRESS → SUCCESS
                        → FAILURE
                        → MODAL (ver Inpaint)

Ejemplo de respuesta

{
  "id": "task_01JWXXXX",
  "status": "SUCCESS",
  "action": "IMAGINE",
  "progress": "100%",
  "grid_image_url": "https://cdn.apimart.ai/mj_xxxx.png",
  "image_urls": [
    "https://cdn.apimart.ai/mj_xxxx_0.png",
    "https://cdn.apimart.ai/mj_xxxx_1.png",
    "https://cdn.apimart.ai/mj_xxxx_2.png",
    "https://cdn.apimart.ai/mj_xxxx_3.png"
  ],
  "buttons": [
    {"customId": "MJ::JOB::upsample::1::abc123def456", "label": "U1"},
    {"customId": "MJ::JOB::variation::1::abc123def456", "label": "V1"}
  ],
  "prompt": "a beautiful sunset over mountains"
}
grid_image_url es la imagen 2x2; image_urls son las cuatro URLs de imágenes individuales recortadas.
Diferencias de campos
  • /v1/tasks/{task_id} devuelve estados unificados pending / processing / completed / failed.
  • /v1/midjourney/{task_id} devuelve campos estilo MJ como grid_image_url, image_urls, buttons.
Sobre buttons: Para la mayoría de las acciones, pase index, direction o zoom_ratio y el servicio encuentra el customId correspondiente. Si el auto-matching falla, pase custom_id directamente.

Resumen de estados

statusSignificadoTerminal
NOT_STARTFila creada, aún no confirmada por el sistema (transitorio)No
SUBMITTEDEl sistema acepta, en colaNo
IN_PROGRESSEl sistema procesandoNo
MODALEsperando parámetros de /modal (ver Inpaint)No
SUCCESSHecho
FAILUREFallida → reembolso automático (quota → 0, fail_reason con la causa)

Notas de consulta

  • El endpoint de consulta no se factura por separado, pero mantenga una frecuencia razonable (sondeo de 3–5s recomendado).
  • Un usuario normal solo puede consultar sus propias tareas; consultar las de otros devuelve 403.
  • Las tareas se conservan 3 días por defecto; después, las consultas devuelven 404, pero las URLs de imagen / video generadas siguen accesibles.

Avanzado: usar custom_id directamente

Tras leer buttons[].customId, puede pasarlo directamente al campo custom_id de las acciones posteriores, evitando el auto-matching:
{
  "task_id": "task_01JWXXXX",
  "custom_id": "MJ::JOB::upsample::1::abc123def456"
}