# API do Happy Horse 1.1 Referência completa da API para os modelos de geração de vídeo Happy Horse 1.1 da Alibaba. ## Variantes do Modelo Esta API oferece suporte a três variantes de modelo: | Modelo | ID | Descrição | | --------------------------------------- | ------------------------------------ | ---------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Gere vídeos diretamente a partir de prompts de texto | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Anime uma única imagem de primeiro quadro com orientação do prompt | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Gere vídeos guiados por até 9 imagens de referência | ## Comparação Rápida | Recurso | Texto para Vídeo | Imagem para Vídeo | Referência para Vídeo | | -------------- | ------------------------- | ------------------------- | ------------------------- | | Entrada | Prompt de texto | Imagem de primeiro quadro + prompt | Imagens de referência + prompt | | Intervalo de Duração | 3-15 segundos | 3-15 segundos | 3-15 segundos | | Resolução | 720p, 1080p (padrão 1080p) | 720p, 1080p (padrão 1080p) | 720p, 1080p (padrão 1080p) | | Proporção | 9 proporções suportadas (padrão 16:9) | Não suportada (segue a imagem de entrada) | 9 proporções suportadas (padrão 16:9) | | Seed | Opcional | Opcional | Opcional | ### Proporções Suportadas (Texto para Vídeo e Referência para Vídeo) | Proporção | Descrição | | ------ | ---------------------- | | `16:9` | Paisagem (widescreen) | | `9:16` | Retrato (vertical) | | `3:4` | Retrato padrão | | `4:3` | Paisagem padrão | | `4:5` | Retrato | | `5:4` | Paisagem | | `1:1` | Quadrado | | `9:21` | Retrato ultra-alto | | `21:9` | Paisagem ultra-ampla | ## Happy Horse 1.1 Text to Video ### Ponto de extremidade ``` POST /api/v1/video/task ``` ### Parâmetros da Requisição #### Obrigatórios | Parâmetro | Tipo | Descrição | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | Deve ser `"happyhorse-1.1-text-to-video"` | | `prompt` | string | Prompt de geração de vídeo | | `duration` | number | Duração do vídeo em segundos (3-15) | | `resolution` | string | Resolução de saída: `"720p"` ou `"1080p"` (padrão `"1080p"`) | | `aspect_ratio` | string | Proporção do vídeo (veja a tabela acima; padrão `"16:9"`) | #### Opcionais | Parâmetro | Tipo | Descrição | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatória para gerações reproduzíveis, inteiro no intervalo de `0` a `2147483647` | ### Exemplo de Requisição ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-text-to-video', prompt: 'A cat playing with a ball of yarn on a sunny windowsill', duration: 5, resolution: '1080p', aspect_ratio: '16:9', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Image to Video ### Parâmetros da Requisição #### Obrigatórios | Parâmetro | Tipo | Descrição | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | Deve ser `"happyhorse-1.1-image-to-video"` | | `prompt` | string | Prompt de geração de vídeo | | `duration` | number | Duração do vídeo em segundos (3-15) | | `resolution` | string | Resolução de saída: `"720p"` ou `"1080p"` (padrão `"1080p"`) | | `image_url` | string | URL da imagem de primeiro quadro (somente o primeiro quadro) | #### Opcionais | Parâmetro | Tipo | Descrição | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatória para gerações reproduzíveis, inteiro no intervalo de `0` a `2147483647` | > **Observação:** `aspect_ratio` não é suportado para image-to-video. O enquadramento de saída segue a imagem de primeiro quadro enviada. ### Exemplo de Requisição ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-image-to-video', image_url: 'https://example.com/first-frame.jpg', prompt: 'Gentle motion; cinematic lighting', duration: 5, resolution: '1080p', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Reference to Video ### Parâmetros da Requisição #### Obrigatórios | Parâmetro | Tipo | Descrição | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | Deve ser `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | Prompt de geração de vídeo. Escreva um prompt padrão sem placeholders ou use opcionalmente o recurso de referência @ (AT) com `<<>>` para referenciar explicitamente itens do array `images` | | `duration` | number | Duração do vídeo em segundos (3-15) | | `resolution` | string | Resolução de saída: `"720p"` ou `"1080p"` (padrão `"1080p"`) | | `aspect_ratio` | string | Proporção do vídeo (veja a tabela acima; padrão `"16:9"`) | | `images` | string[] | URLs das imagens de referência (1-9 imagens) | #### Placeholders de referência @ (AT) O recurso de referência @ (AT) vincula as imagens de referência ao prompt por meio de placeholders `<<>>` numerados. A numeração começa em `1` e segue a ordem do array `images`. | Placeholder | Valor referenciado | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Opcionais | Parâmetro | Tipo | Descrição | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatória para gerações reproduzíveis, inteiro no intervalo de `0` a `2147483647` | ### Requisitos das Imagens de Referência - Formatos suportados: `JPEG`, `JPG`, `PNG`, `WEBP` - Tamanho máximo do arquivo: 20 MB por imagem - Menor lado mínimo: 400 px - Quantidade: pelo menos 1, até 9 imagens ### Exemplo de Requisição ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Subject moves naturally while preserving reference style and appearance', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/ref-1.jpg', 'https://example.com/ref-2.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ### Exemplo de solicitação Reference-to-Video com @ (AT) ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Show the person from <<>> walking beside the bicycle from <<>> through the street in <<>>, preserving all reference details', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/person-reference.jpg', 'https://example.com/bicycle-reference.jpg', 'https://example.com/street-reference.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Formato da Resposta ### Resposta Inicial ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### Resposta de Polling Consulte `GET /api/v1/video/{taskId}` para verificar o status: ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "succeed", "task_status_msg": null, "task_result": { "credit": 0.2, "videos": [ { "url": "https://example.com/generated-video.mp4" } ] } } } ``` ### Valores de Status - `submitted`: Tarefa aceita e aguardando processamento - `processing`: Geração de vídeo em andamento - `succeed`: Geração de vídeo concluída - `failed`: Falha na geração de vídeo ## Tempo de Processamento Tempo típico de processamento: 2-5 minutos, dependendo da duração e da carga da fila. ## Boas Práticas 1. **Descreva o Movimento com Clareza**: Adicione movimento do sujeito, movimento da câmera e progressão da cena para melhorar a dinâmica do vídeo. 2. **Use Iterações Curtas Primeiro**: Comece com gerações de 3-5 segundos para validar a direção do prompt antes de executar clipes mais longos. 3. **Escolha a Imagem de Entrada Certa**: Para image-to-video, use uma imagem de primeiro quadro clara, bem iluminada e com forte foco no sujeito. 4. **Faça Curadoria das Imagens de Referência**: Para reference-to-video, forneça imagens de referência consistentes e de alta qualidade que representem claramente o sujeito ou o estilo que você deseja preservar. 5. **Reutilize Seeds para Variantes**: Mantenha o mesmo `seed` ao testar refinamentos de prompt para comparar as saídas de forma mais consistente. 6. **Combine a Proporção com o Canal de Entrega**: Use `16:9` para vídeo em paisagem, `9:16` para shorts e reels, e `1:1` para posicionamentos quadrados.