🎯 Entenda o Conceito Central
A API do MidJourney simula interações de botões do Discord. Diferentemente das APIs REST típicas, ela funciona como uma máquina de estados, em que cada operação retorna novos botões para a próxima etapa.As 4 APIs Principais
| API | Finalidade | Quando usar |
|---|---|---|
POST /mj/submit/imagine | Geração de texto para imagem | Ponto de partida para todos os fluxos |
GET /mj/task/\{id\}/fetch | Consultar status da tarefa e obter botões | Após cada envio (consulte até concluir) |
POST /mj/submit/action | Clicar em um botão (upscale, vary, zoom etc.) | Quando quiser operar em uma imagem |
POST /mj/submit/modal | Enviar entrada adicional | Somente quando o status for MODAL |
📊 Diagrama Completo do Fluxo
🔑 Conceito-chave: Botões e customId
Toda tarefa bem-sucedida retorna um arraybuttons. Cada botão tem um customId que você usa para acionar a próxima ação.
Exemplo de resposta de /mj/task/\{id\}/fetch:
customId NÃO é um valor fixo. Ele muda a cada tarefa. Sempre obtenha-o a partir do array buttons.
📋 Referência de Botões por Etapa
Após IMAGINE (imagem em grade 4x)
Estes botões são retornados quando sua geração inicial de imagem é concluída:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Ampliar imagem única | Imagem única em alta resolução |
| V1-V4 | MJ::JOB::variation::1::xxx | Gerar variações | Nova grade 4x |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Regenerar tudo | Nova grade 4x |
Após UPSCALE (imagem única)
Após o upscaling, você passa a ter acesso às ferramentas de edição:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Não |
| Upscale (Creative) / Upscale (4x) | ❌ Não |
| Vary (Subtle) 🪄 | ❌ Não |
| Vary (Strong) 🪄 | ❌ Não |
| Vary (Region) 🖌️ | ✅ Sim (máscara) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Não |
| Custom Zoom 🔍 | ✅ Sim (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Não |
| Animate 🎞️ | ❌ Não |
| 🔄 Reroll | ❌ Não |
Nota: Os rótulos dos botões e os formatos de⚠️ O botão Inpaint (Vary Region) só aparece após Upscale!customIdpodem variar dependendo da versão do MJ especificada no seu prompt (por exemplo,--v 6.1vs--v 5.2). Sempre leia os botões a partir da resposta da API.
⚡ Exemplo Completo: Gerar & Ampliar
Etapa 1: Enviar requisição Imagine
Etapa 2: Consultar o status da tarefa
Etapa 3: Clicar em U1 para ampliar
Etapa 4: Consultar a nova tarefa e obter o resultado
⚠️ Quando o Modal é necessário?
Quando você chama/mj/submit/action e o status da tarefa se torna MODAL em vez de SUCCESS, você deve chamar /mj/submit/modal para fornecer entrada adicional.
Operações com Modal confirmadas
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (máscara PNG) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (por exemplo, “your prompt —zoom 2”) |
🚀 Seleção do Modo de Velocidade
Adicione o prefixo de velocidade ao caminho:| Modo | Prefixo do Caminho | Exemplo |
|---|---|---|
| Rápido | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (padrão) | /mj/submit/imagine |
🔗 Outros Pontos de Entrada
Estas APIs são pontos de entrada independentes que não seguem o fluxo imagine → action:| API | Finalidade |
|---|---|
POST /mj/submit/blend | Mescla de 2 a 5 imagens em uma |
POST /mj/submit/describe | Gera um prompt a partir de uma imagem |
POST /mj/submit/video | Converte imagem em vídeo |
POST /mj/submit/edits | Edita imagem com máscara |
❓ Dicas de Solução de Problemas
Com base no design da API e no fluxo de trabalho, aqui estão alguns problemas comuns que você pode encontrar:| Problema | Causa Provável | Solução |
|---|---|---|
| Não consegue encontrar o botão Vary (Region) | Visualizando uma imagem em grade 4 | Faça o upscale primeiro (clique em U1-U4) e depois verifique os botões |
Status da tarefa travado em MODAL | A operação requer entrada adicional | Chame /mj/submit/modal com os dados necessários |
customId não funciona | Uso de valor desatualizado ou fixo no código | Sempre obtenha um customId novo na resposta de /mj/task/\{id\}/fetch |
Array buttons vazio | A tarefa ainda está em andamento | Aguarde status: "SUCCESS" antes de acessar os botões |