Processo de Solicitação
Para usar a API Midjourney Imagine, primeiro você pode acessar a página Midjourney Imagine API e clicar no botão “Acquire” para obter as credenciais necessárias para a solicitação:
Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual.
Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito dessa API.
Uso Básico
Em seguida, você pode preencher o conteúdo correspondente na interface, como mostrado na imagem:
Na primeira vez que usar essa interface, precisamos preencher pelo menos dois conteúdos: um é authorization, que pode ser selecionado diretamente na lista suspensa. O outro parâmetro é prompt, que é a descrição da imagem que queremos gerar. Recomenda-se usar descrições em inglês, pois a imagem gerada será mais precisa e de melhor qualidade. Aqui usamos o conteúdo de exemplo Lamborghini speeds inside a volcano, que representa a intenção de desenhar um Lamborghini correndo dentro de um vulcão.
Você também pode notar que à direita há um código correspondente gerado para a chamada, que você pode copiar e executar diretamente, ou pode clicar no botão “Try” para testar.
Principais parâmetros de solicitação:
prompt: descrição da imagem (suporta tradução automática).mode: modo de geração, pode serfast/relax/turbo, padrão é fast.timeout: tempo limite (segundos), o tempo limite retornará diretamente.translation: se deve traduzir automaticamente prompts não em inglês.split_images: se deve dividir os resultados 2x2 e retornar uma única imagem.action/image_id: deve ser especificado ao continuar a operação em imagens históricas.callback_url: endereço de callback assíncrono.

task_id, o ID da tarefa de geração desta imagem, usado para identificar exclusivamente esta tarefa de geração de imagem.image_id, a identificação única da imagem, que deve ser passada na próxima vez que for necessário realizar operações de transformação na imagem.image_url, a URL da miniatura, que pode ser aberta diretamente para visualizar o efeito gerado.image_width: largura em pixels da miniatura.image_height: altura em pixels da miniatura.raw_image_url: a URL da imagem original, que contém o mesmo conteúdo da miniatura, mas em maior definição, embora o tempo de carregamento seja um pouco mais lento.raw_image_width: largura em pixels da imagem original.raw_image_height: altura em pixels da imagem original.actions, uma lista de operações adicionais que podem ser realizadas na imagem gerada. Aqui estão listadas 8, ondeupscalerepresenta ampliação evariationrepresenta transformação. Portanto,upscale1representa a operação de ampliação na primeira imagem no canto superior esquerdo, evariation3representa a operação de transformação baseada na terceira imagem no canto inferior esquerdo.
image_url ou o raw_image_url, você pode descobrir como mostrado na imagem.
Pode-se ver que foi gerada uma pré-visualização 2x2. Até agora, a primeira chamada da API foi concluída.
Ampliação e Transformação de Imagens
A seguir, tentaremos realizar operações adicionais na foto gerada atualmente. Por exemplo, se acharmos que a segunda imagem no canto superior direito está boa, mas queremos fazer alguns ajustes, podemos preencheraction como variation2 e passar image_id:
Neste momento, o resultado obtido é o seguinte:
image_url, a nova imagem gerada é a seguinte:
Podemos ver que, em relação à imagem no canto superior direito, novamente obtivemos quatro fotos semelhantes.
Neste momento, podemos escolher uma delas para realizar uma operação de ampliação detalhada, por exemplo, escolhendo a quarta, podemos passar action como upscale4, e através de image_id passar novamente o ID da imagem atual.
Nota: A operaçãoO resultado retornado é o seguinte:upscaleleva menos tempo em comparação comvariationno Midjourney.
image_url é como mostrado na imagem:
Assim, conseguimos obter com sucesso uma foto de um Lamborghini.
Além disso, notamos que actions contém várias operações que podem ser realizadas, descritas a seguir:
upscale_2x: amplia a imagem em 2 vezes, resultando em uma imagem de alta definição 2x.upscale_4x: amplia a imagem em 4 vezes, resultando em uma imagem de alta definição 4x.zoom_out_2x: reduz a imagem em 2 vezes (preenchendo a área ao redor).zoom_out_1_5x: reduz a imagem em 1,5 vezes (preenchendo a área ao redor).pan_left: desloca a imagem para a esquerda.pan_right: desloca a imagem para a direita.pan_up: desloca a imagem para cima.pan_down: desloca a imagem para baixo.
Reescrita de Imagem (Imagem de Base)
Esta API também suporta reescrita de imagem, comumente chamada de imagem de base. Podemos inserir uma URL de imagem e uma descrição que precisa ser reescrita, e a API retornará a imagem reescrita.Nota: A URL da imagem inserida deve ser uma imagem pura, não pode ser uma imagem exibida dentro de uma página da web, caso contrário, a reescrita da imagem não será possível. Recomenda-se usar um serviço de hospedagem de imagens para obter a URL da imagem.Por exemplo, temos uma imagem de um pôr do sol na estrada, com algumas árvores e edifícios ao lado da estrada, como mostrado na imagem:
Agora queremos reescrevê-la para que seja ao lado de uma praia, com um carro estacionado na beira da estrada. Podemos construir o seguinte prompt:
—iw 2 para ajustar o peso da imagem.
Podemos passar o conteúdo acima como um todo para o campo prompt, como mostrado na imagem:
O resultado da saída é o seguinte:
Podemos ver que, mantendo o estilo e a composição geral da imagem original, toda a cena foi transformada em uma praia, enquanto um carro apareceu na estrada, isso é o Prompt com Imagem.
Fusão de Imagens
Esta API também suporta fusão de imagens, podemos passar várias imagens para alcançar diferentes efeitos de fusão. Por exemplo, aqui temos duas imagens, uma é um urso de pelúcia, e a outra é uma motosserra, conforme mostrado nas imagens abaixo:

prompt, o resultado da execução é o seguinte:
Podemos ver que conseguimos realizar a fusão de imagens com sucesso.
Nota: A fusão de imagens suporta no máximo 5 URLs de imagens como entrada, ou seja, suporta a fusão de até 5 imagens, o formato de entrada é o mesmo que o acima.
Transformação Local
Esta API também suporta a função de desenho local de imagens, mas apenas suporta a geração de imagens sob o conteúdo mencionado anteriormente, podemos passar um ID único da imagem gerada, o parâmetro de ação de redesenho localaction e a máscara da área a ser redesenhada, para realizar o redesenho na área da máscara.
Por exemplo, aqui temos uma imagem gerada sobre um gato:



Nota: O código Python acima descreve o processo de geração da máscara. Se você deseja integrá-lo ao seu produto, escreva o código correspondente na linguagem desejada com base em seu princípio.Através do código acima, obtivemos a máscara que precisa ser redesenhada. Abaixo, precisamos definir o parâmetro
action como variation_region, gerar o ID da imagem image_id (para obter esse parâmetro, consulte o conteúdo acima) e passar a máscara correspondente mask. As outras informações dos parâmetros são as seguintes:
action: A ação a ser realizada na imagem, neste caso,variation_region, que indica que a imagem será redesenhada parcialmente.prompt: A descrição da redecoracão da imagem (parâmetro opcional).image_id: O identificador único da imagem, facilitando o redesenho parcial da imagem.mask: A codificação base64 da área da máscara correspondente à imagem (a imagem é a especificada peloimage_idacima).
prompt é um parâmetro não obrigatório, aqui, para facilitar a comparação, definimos o prompt da área da máscara como Um gato fofo, e a configuração dos parâmetros é mostrada na imagem abaixo:

Exemplo de código
Pode-se notar que, no lado direito da página, já foram gerados automaticamente códigos em várias linguagens, como mostrado na imagem:
Exemplo de resposta
Após o sucesso da solicitação, a API retornará informações sobre o resultado da imagem do backend de troca de rosto. Por exemplo:
Podemos ver que conseguimos realizar o redesenho parcial da área personalizada da imagem gerada.
CURL
Callback Assíncrono
Como a geração de imagens pelo Midjourney requer um tempo de espera, esta API também foi projetada por padrão para um modo de longa espera. Mas em alguns cenários, a longa espera pode trazer alguns custos adicionais de recursos, portanto, esta API também oferece a forma de callback assíncrono via Webhook, onde, quando a geração da imagem é bem-sucedida ou falha, o resultado é enviado para a URL de callback do Webhook especificada por meio de uma solicitação HTTP. Após a URL do callback receber o resultado, pode-se realizar um processamento adicional. Abaixo, demonstramos o fluxo de chamada específico. Primeiro, o callback do Webhook é um serviço que pode receber solicitações HTTP, e os desenvolvedores devem substituí-lo pela URL do servidor HTTP que construíram. Para facilitar a demonstração, usamos um site de exemplo de Webhook público https://webhook.site/, ao abrir este site, você obterá uma URL de Webhook, como mostrado na imagem:
Copie esta URL e você pode usá-la como Webhook, o exemplo aqui é https://webhook.site/995d0a91-d737-40a7-a3b9-5baf68ed924c.
Em seguida, podemos definir o campo callback_url para a URL do Webhook acima, enquanto preenchemos o prompt, como mostrado na imagem:
Após clicar em testar, você receberá imediatamente uma resposta com um task_id, que serve para identificar o ID da tarefa de geração atual, como mostrado na imagem:

O resultado é o resultado da tarefa atual, o conteúdo é o seguinte:
success indica se a tarefa foi executada com sucesso, se for bem-sucedida, haverá também os mesmos campos actions, image_id, image_url, e o resultado retornado é o mesmo que o mencionado anteriormente, além disso, há o task_id para identificar a tarefa, a fim de associar o resultado do Webhook com a solicitação API inicial.
Se a geração da imagem falhar, a URL do Webhook receberá um conteúdo semelhante ao seguinte:
success será false, e também haverá os campos error.code e error.message que descrevem os detalhes do erro da tarefa, o servidor do Webhook pode processar de acordo com o resultado correspondente.
Saída em Fluxo
O Midjourney oficial tem um progresso na geração de imagens, no início é uma foto borrada, e após várias iterações, a imagem gradualmente se torna clara, até que a imagem completa seja obtida. Portanto, o processo de geração de uma imagem pode ser dividido aproximadamente nas fases de “enviar comando” -> “começar a gerar imagem (várias iterações gradualmente mais claras)” -> “geração de imagem concluída”. Quando a saída em fluxo não está ativada, esta API, desde o início da solicitação até o retorno do resultado, na verdade, abrange todo o processo de “enviar comando” -> “geração de imagem concluída”, e o processo de geração de imagem também está totalmente incluído, devido à velocidade relativamente lenta do Midjourney na geração de imagens, todo o processo leva cerca de um minuto ou mais. Portanto, para uma melhor experiência do usuário, esta API suporta saída em fluxo, ou seja, quando “começar a gerar imagem”, os resultados começam a ser retornados, e sempre que houver uma mudança no progresso do desenho, os resultados serão enviados em fluxo até que a geração da imagem termine. Se você deseja retornar a resposta em fluxo, pode alterar o parâmetroaccept no cabeçalho da solicitação para application/x-ndjson, mas o código de chamada precisa ter as alterações correspondentes para suportar a resposta em fluxo.
Exemplo de código em Python:
Nota: Quando a geração não está completamente concluída, o campo actions está vazio, indicando que não é possível realizar operações adicionais na imagem intermediária. Após a conclusão da geração, a image_url gerada durante o processo será destruída.
Além disso, você pode combinar os resultados em fluxo com callbacks assíncronos especificando o cabeçalho accept=application/x-ndjson e o corpo da solicitação callback_url, permitindo que o callback_url receba várias solicitações POST de resultados em fluxo.
