> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Luma API de Geração de Vídeo - Instruções de Integração

> Luma Video Generation 集成指南 - XHuoAPI

Com a ampliação do uso da IA, diversos programas de IA têm se tornado cada vez mais comuns. A IA tem se infiltrado em todos os aspectos da vida e do trabalho das pessoas. E os setores envolvidos com a IA estão se expandindo, desde a escrita inicial, passando pela educação médica, até agora, com vídeos.

Luma é uma plataforma profissional de geração de vídeos de alta qualidade, onde os usuários podem simplesmente fazer o upload de materiais e gerar automaticamente vídeos de alta qualidade com base em diferentes estilos e efeitos. Este gerador de vídeo AI foi desenvolvido por membros de uma equipe de uma conhecida empresa de tecnologia, com o objetivo de permitir que todos possam facilmente criar vídeos impressionantes, sem a necessidade de ferramentas de edição complexas.

No entanto, a Luma não fornece uma API oficial, e a XHuoAPI oferece um conjunto de APIs da Luma, simulando a integração com a oficial da Suno, permitindo gerar vídeos desejados de forma rápida e conveniente.

## Solicitação e Uso

Para usar a API de Vídeos da Luma, primeiro você pode acessar a página [Luma Videos Generation API](https://api.xhuoapi.ai/documents/5bd3597d-1ff8-44ad-a580-b66b48393e7f) e clicar no botão "Acquire" para obter as credenciais necessárias para a solicitação:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

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 da API.

## Uso Básico

Para gerar um vídeo, você pode inserir qualquer texto, por exemplo, se eu quiser gerar um vídeo sobre astronautas se deslocando entre o espaço e um vulcão, posso inserir `Astronauts shuttle from space to volcano`, como mostrado na imagem:

<p>
  <img src="https://cdn.xhuoapi.ai/yub02j.png" width="500" className="m-auto" />
</p>

O código gerado é o seguinte:

<p>
  <img src="https://cdn.xhuoapi.ai/ieq7yn.png" width="500" className="m-auto" />
</p>

Principais parâmetros de solicitação:

* `prompt`: a palavra-chave para gerar o vídeo.
* `aspect_ratio`: a proporção largura-altura do vídeo, padrão 16:9.
* `end_image_url`: opcional, especifica o quadro final.
* `enhancement`: opcional, interruptor de aumento de clareza.
* `loop`: se deve gerar um vídeo em loop, padrão false.
* `timeout`: opcional, número de segundos para timeout.
* `callback_url`: endereço de callback assíncrono.

Você pode clicar no botão "Try" para testar a API diretamente, aguarde 1-2 minutos, e o resultado será o seguinte:

```json theme={null}
{
  "success": true,
  "task_id": "e4018a99-1522-4f24-9330-62c2a9b50b59",
  "video_id": "155838f8-7f1e-44d8-b387-192f3b4b509d",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://storage.cdn-luma.com/dream_machine/af94e7ca-da35-4b5f-a636-2d7254184d0d/watermarked_video0585de3737db946e5a0ac895384ecd180.mp4",
  "video_height": 752,
  "video_width": 1360,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/e4018a99-1522-4f24-9330-62c2a9b50b59.jpg",
  "thumbnail_width": 1360,
  "thumbnail_height": 752
}
```

Podemos ver que agora temos as informações relacionadas a este vídeo, incluindo ID do vídeo, link do vídeo, capa do vídeo, entre outros.

As descrições dos campos são as seguintes:

* success: se a geração foi bem-sucedida, se sim, será `true`, caso contrário, `false`
* task\_id: ID único da tarefa de geração de vídeo
* video\_id: ID único do vídeo gerado pela tarefa de geração de vídeo
* prompt: palavra-chave da tarefa de geração de vídeo
* video\_url: link do vídeo resultante da tarefa de geração de vídeo
* video\_height: altura da imagem da capa do vídeo gerado
* video\_width: largura da imagem da capa do vídeo gerado
* state: estado da tarefa de geração de vídeo, se a tarefa estiver concluída, será `completed`.
* thumbnail\_url: link da imagem da capa do vídeo gerado
* thumbnail\_width: largura da imagem da capa do vídeo gerado
* thumbnail\_height: altura da imagem da capa do vídeo gerado

## Geração de Quadros Personalizados

Se você deseja gerar um vídeo através de quadros personalizados, pode inserir os links das imagens dos quadros inicial e final:

Neste caso, o campo `start_image_url` pode receber a seguinte imagem como o quadro inicial do vídeo:

![Quadro Inicial](https://cdn.xhuoapi.ai/r9vsv9.png)

Em seguida, para personalizar a geração do vídeo com base nos quadros inicial e final, você pode especificar o seguinte conteúdo:

* action: a ação da tarefa de geração de vídeo, geralmente é geração normal `generate` e geração expandida `extend`, padrão é `generate`.
* start\_image\_url: especifica o quadro inicial do vídeo gerado.
* end\_image\_url: especifica o quadro final do vídeo gerado.
* prompt: conteúdo da palavra-chave para gerar o vídeo.

Um exemplo de preenchimento é o seguinte:

<p>
  <img src="https://cdn.xhuoapi.ai/zvzydx.png" width="500" className="m-auto" />
</p>

Após o preenchimento, o código gerado é o seguinte:

<p>
  <img src="https://cdn.xhuoapi.ai/tx80pu.png" width="500" className="m-auto" />
</p>

O código correspondente:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/luma/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "start_image_url": "https://cdn.xhuoapi.ai/r9vsv9.png",
    "action": "generate",
    "prompt": "Astronauts shuttle from space to volcano"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

O resultado obtido é o seguinte:

```json theme={null}
{
  "success": true,
  "task_id": "12a18694-fd4b-47e7-9c50-34f30862cff6",
  "video_id": "0105c090-03a5-425a-8026-523341cd575b",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://platform.cdn.xhuoapi.ai/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
```

O resultado final é semelhante ao anterior, o quadro inicial do vídeo gerado contém a imagem que fornecemos. Claro, também é possível fornecer links de imagens para os quadros inicial e final para gerar o vídeo, basta adicionar uma imagem de quadro final ao que foi mencionado anteriormente, as informações da imagem do quadro final são as seguintes:

![Quadro Final](https://cdn.xhuoapi.ai/0iad3k.png)

Um exemplo de preenchimento é o seguinte:

<p>
  <img src="https://cdn.xhuoapi.ai/20igwi.png" width="500" className="m-auto" />
</p>

O resultado final será o seguinte:

```json theme={null}
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.xhuoapi.ai/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
```

Os resultados são semelhantes ao texto acima, o vídeo gerado contém simultaneamente a imagem do primeiro e do último quadro, completando assim a personalização do primeiro e do último quadro para gerar o vídeo.

## Funcionalidade de Extensão de Vídeo

Se você deseja continuar gerando o vídeo criado, pode definir o parâmetro `action` como `extend` e inserir o ID do vídeo ou o link do vídeo que precisa ser continuado. O ID do vídeo e o link do vídeo podem ser obtidos com base no uso básico, conforme mostrado na imagem abaixo:

<p>
  <img src="https://cdn.xhuoapi.ai/fwknj4.png" width="500" className="m-auto" />
</p>

Neste momento, você pode ver que o ID do vídeo é:

```
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.xhuoapi.ai/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
```

> Nota: Aqui, o `video_id` e o `video_url` do vídeo são o ID e o link do vídeo gerado. Se você não souber como gerar um vídeo, pode consultar o uso básico mencionado acima.

Para continuar gerando o vídeo, é necessário enviar o link do vídeo ou o ID do vídeo. Abaixo, demonstramos como usar o ID do vídeo para fazer a extensão. Em seguida, devemos preencher as palavras-chave para personalizar a geração do vídeo, podendo especificar o seguinte conteúdo:

* action: neste caso, a ação de extensão do vídeo, que deve ser `extend`.
* prompt: as palavras-chave para a extensão do vídeo.
* video\_url: o link do vídeo que precisa ser estendido.
* video\_id: o ID único do vídeo que precisa ser estendido.
* end\_image\_url: o link da imagem do último quadro que pode ser especificado, parâmetro opcional.

Um exemplo de preenchimento é mostrado abaixo:

<p>
  <img src="https://cdn.xhuoapi.ai/vv0rxk.png" width="500" className="m-auto" />
</p>

Após o preenchimento, o código gerado automaticamente é o seguinte:

<p>
  <img src="https://cdn.xhuoapi.ai/woapxi.png" width="500" className="m-auto" />
</p>

Código correspondente em Python:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/luma/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "video_id": "0105c090-03a5-425a-8026-523341cd575b",
    "prompt": "Astronautas se deslocam do espaço para o vulcão"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Ao clicar em executar, você pode notar que um resultado é obtido, conforme abaixo:

```json theme={null}
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.xhuoapi.ai/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
```

Pode-se observar que o vídeo foi estendido com base no vídeo que precisava ser ampliado, e o conteúdo do resultado é consistente com o texto acima, o que também realiza a função de continuação da geração da música.

Claro, também podemos especificar o link do vídeo para realizar a extensão, preenchendo as informações a seguir:

<p>
  <img src="https://cdn.xhuoapi.ai/0cv0hg.png" width="500" className="m-auto" />
</p>

Após a execução, obtemos o seguinte resultado:

```json theme={null}
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.xhuoapi.ai/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
```

Com base no resultado, pode-se observar que a funcionalidade de extensão do vídeo também pode ser realizada com base no link do vídeo.

Por fim, também podemos especificar uma imagem do último quadro no vídeo estendido para realizar a extensão. Abaixo estão as informações da imagem do último quadro:

![Último Quadro](https://cdn.xhuoapi.ai/0iad3k.png)

Em seguida, adicionamos as informações da imagem do último quadro com base no que foi mencionado acima, conforme mostrado abaixo:

<p>
  <img src="https://cdn.xhuoapi.ai/9p1vrj.png" width="500" className="m-auto" />
</p>

Ao clicar em executar, obtemos as seguintes informações:

```json theme={null}
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.xhuoapi.ai/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
```

Pode-se observar que, com base na extensão do vídeo mencionada acima, também é possível especificar uma imagem do último quadro para realizar a extensão.

## Callback Assíncrono

Como o tempo para gerar vídeos no Luma é relativamente longo, cerca de 1 a 2 minutos, se a API não responder por um longo período, a solicitação HTTP manterá a conexão, resultando em um consumo adicional de recursos do sistema. Portanto, esta API também oferece suporte a callbacks assíncronos.
整体流程是：o cliente inicia a solicitação, especificando um campo adicional `callback_url`. Após o cliente fazer a solicitação da API, a API retornará imediatamente um resultado, contendo um campo de informação `task_id`, que representa o ID da tarefa atual. Quando a tarefa for concluída, o resultado da música será enviado ao `callback_url` especificado pelo cliente no formato POST JSON, que também incluirá o campo `task_id`, assim o resultado da tarefa pode ser associado pelo ID.

Abaixo, vamos entender como operar isso através de um exemplo.

Primeiro, o callback Webhook é um serviço que pode receber solicitações HTTP, e os desenvolvedores devem substituí-lo pela URL do servidor HTTP que construíram. Aqui, para facilitar a demonstração, usamos um site de exemplo de Webhook público [https://webhook.site/](https://webhook.site/), ao abrir este site, você obterá uma URL de Webhook, como mostrado na imagem:

<p>
  <img src="https://cdn.xhuoapi.ai/q78okf.png" width="500" className="m-auto" />
</p>

Copie esta URL e você pode usá-la como Webhook, o exemplo aqui é [https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13](https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13).

Em seguida, podemos definir o campo `callback_url` para a URL do Webhook acima, enquanto preenchemos `prompt`, como mostrado na imagem:

<p>
  <img src="https://cdn.xhuoapi.ai/n2fjvi.png" width="500" className="m-auto" />
</p>

Clique em executar, e você verá que receberá imediatamente um resultado, como abaixo:

```json theme={null}
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
```

Após alguns instantes, podemos observar o resultado da música gerada em [https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13](https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13), como mostrado na imagem:

![](https://cdn.xhuoapi.ai/1hwm5m.png)

O conteúdo é o seguinte:

```json theme={null}
{
    "success": true,
    "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6",
    "video_id": "4d8013c3-5de0-41aa-966e-0b1a51d1c633",
    "prompt": "Astronautas se deslocam do espaço para o vulcão",
    "video_url": "https://platform.cdn.xhuoapi.ai/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.mp4",
    "video_height": 752,
    "video_width": 1360,
    "state": "completed",
    "thumbnail_url": "https://platform.cdn.xhuoapi.ai/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.jpg",
    "thumbnail_width": 1360,
    "thumbnail_height": 752
}
```

Pode-se ver que o resultado contém um campo `task_id`, e os outros campos são semelhantes aos mencionados acima, permitindo a associação da tarefa através deste campo.
