Saltar para o conteúdo 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 polling recomendado:
GET /v1/tasks/{task_id}
Os status unificados são pending / processing / completed / failed; os resultados estão em result.images[].url. Use o endpoint estilo MJ quando precisar de buttons[].customId para ações de acompanhamento:
GET /v1/midjourney/{task_id}

Fluxo de status

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

Exemplo de response

{
  "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 é a imagem grid 2x2; image_urls são as quatro URLs de imagens individuais recortadas.
Diferenças de campos
  • /v1/tasks/{task_id} retorna status unificados pending / processing / completed / failed.
  • /v1/midjourney/{task_id} retorna campos estilo MJ como grid_image_url, image_urls, buttons.
Sobre buttons: Para a maioria das ações de acompanhamento, passe index, direction ou zoom_ratio e o serviço encontra o customId correspondente. Se o auto-matching falhar, passe custom_id diretamente.

Resumo de status

statusSignificadoTerminal
NOT_STARTLinha criada, ainda não confirmada pelo sistema (transitório)Não
SUBMITTEDO sistema aceita, na filaNão
IN_PROGRESSO sistema processandoNão
MODALAguardando parâmetros de /modal (ver Inpaint)Não
SUCCESSConcluído
FAILUREFalhou → reembolso automático (quota → 0, fail_reason com a causa)

Notas de consulta

  • O endpoint de consulta não é cobrado separadamente, mas mantenha uma frequência razoável (polling de 3–5s recomendado).
  • Um usuário comum só pode consultar suas próprias tarefas; consultar as de outros retorna 403.
  • As tarefas são retidas por 3 dias por padrão; depois, consultas retornam 404, mas as URLs de imagem / vídeo geradas continuam acessíveis.

Avançado: usar custom_id diretamente

Após ler buttons[].customId, você pode passá-lo diretamente no campo custom_id dos endpoints de ação de acompanhamento, ignorando o auto-matching:
{
  "task_id": "task_01JWXXXX",
  "custom_id": "MJ::JOB::upsample::1::abc123def456"
}