# API de Happy Horse 1.1 Referencia completa de la API para los modelos de generación de video Happy Horse 1.1 de Alibaba. ## Variantes del modelo Esta API admite tres variantes del modelo: | Modelo | ID | Descripción | | --------------------------------------- | ------------------------------------ | --------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Genera videos directamente a partir de prompts de texto | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Anima una sola imagen de primer fotograma con guía del prompt | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Genera videos guiados por hasta 9 imágenes de referencia | ## Comparación rápida | Función | Texto a video | Imagen a video | Referencia a video | | -------------- | ----------------------- | ----------------------- | ----------------------- | | Entrada | Prompt de texto | Imagen de primer fotograma + prompt | Imágenes de referencia + prompt | | Rango de duración | 3-15 segundos | 3-15 segundos | 3-15 segundos | | Resolución | 720p, 1080p (predeterminado 1080p) | 720p, 1080p (predeterminado 1080p) | 720p, 1080p (predeterminado 1080p) | | Relación de aspecto | 9 relaciones admitidas (predeterminado 16:9) | No admitida (sigue la imagen de entrada) | 9 relaciones admitidas (predeterminado 16:9) | | Seed | Opcional | Opcional | Opcional | ### Relaciones de aspecto admitidas (Texto a video y Referencia a video) | Relación | Descripción | | -------- | --------------------- | | `16:9` | Horizontal (panorámica) | | `9:16` | Vertical | | `3:4` | Vertical estándar | | `4:3` | Horizontal estándar | | `4:5` | Vertical | | `5:4` | Horizontal | | `1:1` | Cuadrada | | `9:21` | Vertical ultraalta | | `21:9` | Horizontal ultraancha | ## Happy Horse 1.1 Text to Video ### Punto de conexión ``` POST /api/v1/video/task ``` ### Parámetros de la solicitud #### Obligatorios | Parámetro | Tipo | Descripción | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | Debe ser `"happyhorse-1.1-text-to-video"` | | `prompt` | string | Prompt de generación de video | | `duration` | number | Duración del video en segundos (3-15) | | `resolution` | string | Resolución de salida: `"720p"` o `"1080p"` (predeterminado `"1080p"`) | | `aspect_ratio` | string | Relación de aspecto del video (consulta la tabla anterior; predeterminado `"16:9"`) | #### Opcionales | Parámetro | Tipo | Descripción | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatoria para generaciones reproducibles, entero en el rango de `0` a `2147483647` | ### Solicitud de ejemplo ```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 de la solicitud #### Obligatorios | Parámetro | Tipo | Descripción | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | Debe ser `"happyhorse-1.1-image-to-video"` | | `prompt` | string | Prompt de generación de video | | `duration` | number | Duración del video en segundos (3-15) | | `resolution` | string | Resolución de salida: `"720p"` o `"1080p"` (predeterminado `"1080p"`) | | `image_url` | string | URL de la imagen de primer fotograma (solo primer fotograma) | #### Opcionales | Parámetro | Tipo | Descripción | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatoria para generaciones reproducibles, entero en el rango de `0` a `2147483647` | > **Nota:** `aspect_ratio` no se admite para image-to-video. El encuadre de salida sigue la imagen de primer fotograma cargada. ### Solicitud de ejemplo ```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 de la solicitud #### Obligatorios | Parámetro | Tipo | Descripción | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | Debe ser `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | Prompt de generación de video. Escribe un prompt estándar sin marcadores de posición o utiliza opcionalmente la función de referencia @ (AT) con `<<>>` para referenciar explícitamente elementos del array `images` | | `duration` | number | Duración del video en segundos (3-15) | | `resolution` | string | Resolución de salida: `"720p"` o `"1080p"` (predeterminado `"1080p"`) | | `aspect_ratio` | string | Relación de aspecto del video (consulta la tabla anterior; predeterminado `"16:9"`) | | `images` | string[] | URL de imágenes de referencia (1-9 imágenes) | #### Marcadores de referencia @ (AT) La función de referencia @ (AT) vincula las imágenes de referencia al prompt mediante marcadores `<<>>` numerados. La numeración comienza en `1` y sigue el orden del array `images`. | Marcador | Valor referenciado | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Opcionales | Parámetro | Tipo | Descripción | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aleatoria para generaciones reproducibles, entero en el rango de `0` a `2147483647` | ### Requisitos de las imágenes de referencia - Formatos admitidos: `JPEG`, `JPG`, `PNG`, `WEBP` - Tamaño máximo de archivo: 20 MB por imagen - Lado corto mínimo: 400 px - Cantidad: al menos 1, hasta 9 imágenes ### Solicitud de ejemplo ```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; ``` ### Ejemplo de solicitud Reference-to-Video con @ (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 de respuesta ### Respuesta 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" } } ``` ### Respuesta de consulta Consulta `GET /api/v1/video/{taskId}` para comprobar el estado: ```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 estado - `submitted`: Tarea aceptada y en espera de procesamiento - `processing`: Generación de video en curso - `succeed`: Generación de video completada - `failed`: Error en la generación de video ## Tiempo de procesamiento Tiempo de procesamiento típico: 2-5 minutos según la duración y la carga de la cola. ## Buenas prácticas 1. **Describe el movimiento con claridad**: añade movimiento del sujeto, movimiento de cámara y progresión de la escena para mejorar la dinámica del video. 2. **Usa primero iteraciones cortas**: comienza con generaciones de 3-5 segundos para validar la dirección del prompt antes de ejecutar clips más largos. 3. **Elige la imagen de entrada adecuada**: para image-to-video, usa una imagen de primer fotograma clara y bien iluminada con un enfoque marcado en el sujeto. 4. **Selecciona cuidadosamente las imágenes de referencia**: para reference-to-video, proporciona imágenes de referencia coherentes y de alta calidad que representen claramente el sujeto o el estilo que quieres preservar. 5. **Reutiliza seeds para variantes**: conserva el mismo `seed` al probar refinamientos del prompt para comparar las salidas de forma más consistente. 6. **Ajusta la relación al canal de entrega**: usa `16:9` para video horizontal, `9:16` para shorts y reels, y `1:1` para ubicaciones cuadradas.