# API Happy Horse 1.1 Полный справочник API для моделей генерации видео Happy Horse 1.1 от Alibaba. ## Варианты моделей Этот API поддерживает три варианта модели: | Модель | ID | Описание | | --------------------------------------- | ------------------------------------ | ---------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Генерирует видео напрямую из текстовых промптов | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Анимирует одно изображение первого кадра с учетом промпта | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Генерирует видео на основе до 9 референсных изображений | ## Краткое сравнение | Функция | Text to Video | Image to Video | Reference to Video | | -------------- | ------------------------- | ------------------------- | ------------------------- | | Ввод | Текстовый промпт | Изображение первого кадра + промпт | Референсные изображения + промпт | | Диапазон длительности | 3-15 секунд | 3-15 секунд | 3-15 секунд | | Разрешение | 720p, 1080p (по умолчанию 1080p) | 720p, 1080p (по умолчанию 1080p) | 720p, 1080p (по умолчанию 1080p) | | Соотношение сторон | 9 поддерживаемых соотношений (по умолчанию 16:9) | Не поддерживается (следует входному изображению) | 9 поддерживаемых соотношений (по умолчанию 16:9) | | Seed | Необязательно | Необязательно | Необязательно | ### Поддерживаемые соотношения сторон (Text to Video и Reference to Video) | Соотношение | Описание | | ------ | ---------------------- | | `16:9` | Альбомное (широкоформатное) | | `9:16` | Портретное (вертикальное) | | `3:4` | Стандартное портретное | | `4:3` | Стандартное альбомное | | `4:5` | Портретное | | `5:4` | Альбомное | | `1:1` | Квадратное | | `9:21` | Очень высокое портретное | | `21:9` | Сверхширокое альбомное | ## Happy Horse 1.1 Text to Video ### Конечная точка ``` POST /api/v1/video/task ``` ### Параметры запроса #### Обязательные | Параметр | Тип | Описание | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | Должно быть `"happyhorse-1.1-text-to-video"` | | `prompt` | string | Промпт для генерации видео | | `duration` | number | Длительность видео в секундах (3-15) | | `resolution` | string | Выходное разрешение: `"720p"` или `"1080p"` (по умолчанию `"1080p"`) | | `aspect_ratio` | string | Соотношение сторон видео (см. таблицу выше; по умолчанию `"16:9"`) | #### Необязательные | Параметр | Тип | Описание | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Случайный seed для воспроизводимой генерации, целое число в диапазоне от `0` до `2147483647` | ### Пример запроса ```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 ### Параметры запроса #### Обязательные | Параметр | Тип | Описание | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | Должно быть `"happyhorse-1.1-image-to-video"` | | `prompt` | string | Промпт для генерации видео | | `duration` | number | Длительность видео в секундах (3-15) | | `resolution` | string | Выходное разрешение: `"720p"` или `"1080p"` (по умолчанию `"1080p"`) | | `image_url` | string | URL изображения первого кадра (только первый кадр) | #### Необязательные | Параметр | Тип | Описание | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Случайный seed для воспроизводимой генерации, целое число в диапазоне от `0` до `2147483647` | > **Примечание:** `aspect_ratio` не поддерживается для image-to-video. Кадрирование результата следует загруженному изображению первого кадра. ### Пример запроса ```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 ### Параметры запроса #### Обязательные | Параметр | Тип | Описание | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | Должно быть `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | Промпт для генерации видео. Укажите обычный промпт без заполнителей или при необходимости используйте функцию ссылок @ (AT) с `<<>>`, чтобы явно ссылаться на элементы массива `images` | | `duration` | number | Длительность видео в секундах (3-15) | | `resolution` | string | Выходное разрешение: `"720p"` или `"1080p"` (по умолчанию `"1080p"`) | | `aspect_ratio` | string | Соотношение сторон видео (см. таблицу выше; по умолчанию `"16:9"`) | | `images` | string[] | URL референсных изображений (1-9 изображений) | #### Заполнители ссылок @ (AT) Функция ссылок @ (AT) связывает референсные изображения с промптом с помощью нумерованных заполнителей `<<>>`. Нумерация начинается с `1` и соответствует порядку элементов в массиве `images`. | Заполнитель | Значение ссылки | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Необязательные | Параметр | Тип | Описание | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Случайный seed для воспроизводимой генерации, целое число в диапазоне от `0` до `2147483647` | ### Требования к референсным изображениям - Поддерживаемые форматы: `JPEG`, `JPG`, `PNG`, `WEBP` - Максимальный размер файла: 20 MB на изображение - Минимальная короткая сторона: 400 px - Количество: минимум 1, до 9 изображений ### Пример запроса ```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; ``` ### Пример запроса Reference-to-Video с @ (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; ``` ## Формат ответа ### Начальный ответ ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### Ответ при опросе Опросите `GET /api/v1/video/{taskId}`, чтобы проверить статус: ```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" } ] } } } ``` ### Значения статуса - `submitted`: Задача принята и ожидает обработки - `processing`: Генерация видео выполняется - `succeed`: Генерация видео завершена - `failed`: Генерация видео завершилась ошибкой ## Время обработки Обычное время обработки: 2-5 минут, в зависимости от длительности и нагрузки очереди. ## Рекомендации 1. **Четко описывайте движение**: Добавляйте движение объекта, движение камеры и развитие сцены, чтобы улучшить динамику видео. 2. **Сначала используйте короткие итерации**: Начинайте с генерации 3-5 секунд, чтобы проверить направление промпта перед созданием более длинных клипов. 3. **Выберите подходящее входное изображение**: Для image-to-video используйте четкое, хорошо освещенное изображение первого кадра с выраженным фокусом на объекте. 4. **Отбирайте референсные изображения**: Для reference-to-video предоставляйте согласованные, качественные референсные изображения, которые ясно представляют объект или стиль, который нужно сохранить. 5. **Повторно используйте seed для вариантов**: Сохраняйте тот же `seed` при тестировании уточнений промпта, чтобы более последовательно сравнивать результаты. 6. **Подбирайте соотношение под канал публикации**: Используйте `16:9` для альбомного видео, `9:16` для shorts и reels, а `1:1` для квадратных размещений.