Alibaba: HappyHorse 1.1
Alibaba HappyHorse 1.1 генерирует короткие видео со звуком по текстовому заданию, одному изображению первого кадра или набору до девяти референсных изображений. Профили разработчика выделяют улучшенные движение, детализацию кожи и постоянство персонажей между роликами. Результат — MP4 длительностью 3–15 секунд с частотой 24 кадра/с в 480p, 720p или 1080p.
О модели
Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.
Alibaba HappyHorse 1.1 — версия генерации видео с отдельно названными профилями по тексту, первому кадру и референсам. Разработчик выделяет улучшенные визуальные детали, движение, идентичность персонажей между роликами, стабильность текста и синхронизацию изображения со звуком. Результат — короткое видео со звуком для товарного плана, анимации портрета или небольшой сцены с персонажем. Выберите режим ввода по тому, что должно определять сцену: текстовая идея, точное начальное изображение или несколько визуальных референсов.
Для генерации по тексту опишите объект, локацию, действие, кадрирование, движение камеры и звуковой замысел. Например, в короткой сцене велосипедист останавливается у кафе на набережной, пока камера плавно приближается к припаркованному велосипеду. Соразмеряйте действие с коротким роликом и опишите последний момент. Текущее текстовое руководство разработчика допускает до 5 000 некитайских или 2 500 китайских символов и обрезает лишний текст. Организуйте задание так, чтобы главный объект и действие были явными, а не терялись среди повторяющихся прилагательных.
Генерация по первому кадру использует ровно одно изображение как начало. Подготовьте объект, композицию и кадрирование, затем опишите, что должно двигаться или как меняется камера. Документированные форматы — JPEG/JPG, PNG и WEBP, до 20 МБ, обе стороны не менее 300 пикселей, соотношение от 1:2.5 до 2.5:1. Результат приблизительно соответствует выбранному уровню разрешения, сохраняя пропорции исходного изображения. Поэтому вертикальный результат начинается с подходящей вертикальной композиции, а не с несвязанного указания пропорций.
Генерация по референсам принимает от одного до девяти изображений. Промпт использует [Image 1], [Image 2] и следующие позиции, обозначая их в порядке ввода. Укажите роль каждого референса и назовите нужный предмет или человека, чтобы изображение сцены не было принято за источник персонажа. Руководство принимает JPEG/JPG, PNG или WEBP до 20 МБ, требует короткую сторону не менее 400 пикселей и рекомендует чёткие референсы 720p или выше. Избегайте сильно сжатых изображений, где узнаваемые детали уже утрачены.
Для сцены с несколькими референсами разместите человека с одного изображения в комнате с другого, сохранив пальто или товар из третьего. В том же задании опишите взаимодействие и камеру. Референсный профиль 1.1 выделяет стабильность объектов, стиля сцены и кинематографического движения; проверяйте фактический результат на нужную идентичность, маркировку товара и пространственное размещение. Несколько изображений дают заданию больше информации, но при проверке всё равно нужно установить, какие особенности перешли в видео.
Для режимов генерации 1.1 разработчик указывает 480p, 720p и 1080p, длительность, заданную целым числом секунд от трёх до пятнадцати и MP4 с частотой 24 кадра/с. Ответ API описывает кодирование H.264. Генерация по тексту и референсам предлагает в том числе 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 и 21:9; по первому кадру — следует исходному изображению. Выберите форму для размещения и оставьте место будущим субтитрам или элементам макета. Проверяйте фактическое кадрирование возвращённого видео в целевом размере показа.
Результат семейства включает звук. Ясно задайте роль исполнения или атмосферы в задании и проверяйте диалог, эффекты или фоновую дорожку вместе с картинкой. Речь должна оставаться достаточно короткой для действия и пауз; не вмещайте длинный сценарий в один короткий план. При наличии речи проверяйте движения губ, принадлежность реплик говорящим и фактические слова. Допустимый язык промпта сам по себе не задаёт гарантированное произношение или отдельный вход голосового референса.
Документированный процесс разработчика асинхронный: идентификатор задачи отслеживает обработку, а успешный результат содержит адрес видео. Для ссылки результата и запросов задач документирован срок действия двадцать четыре часа. Сохраняйте готовый клип, референсы и промпт как запись для правок. Руководства также описывают настройки seed и водяного знака. Фиксированный seed помогает сравнению, но разработчик прямо указывает отсутствие гарантии одинаковых результатов; оценивайте сам материал, не считая, что одна настройка фиксирует каждый кадр.
HappyHorse 1.0 и 1.1 — разные версии. Таблица результатов 1.1 добавляет 480p к вариантам 720p и 1080p версии 1.0; страницы моделей 1.1 описывают улучшения деталей, движения и постоянства. Отдельно названный профиль видеоредактирования HappyHorse 1.0 имеет собственные входы и ограничения и не должен незаметно считаться режимом редактирования 1.1. Проверяйте весь клип 1.1 на идентичность, движение, кадрирование, текст и звук, затем формулируйте конкретное исправление, сохраняя удачные части задания.
Ailoot Ultra · Видео POST /v1/videos alibaba/happyhorse-1.1
alibaba/happyhorse-1.1Начало
Alibaba HappyHorse 1.1 генерирует короткие видео со звуком по текстовому заданию, одному изображению первого кадра или набору до девяти референсных изображений. Профили разработчика выделяют улучшенные движение, детализацию кожи и постоянство персонажей между роликами. Результат — MP4 длительностью 3–15 секунд с частотой 24 кадра/с в 480p, 720p или 1080p.
- Допустимые входные данные
- Текст
- Результаты
- Видео
Доступно в Ailoot · входные данные и методы
Ailoot Ultra · Видео POST /v1/videos
- Входные данные
text- Результат
video- Выходной формат
- mp4
- Число результатов
- До 4 выходs
| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
|---|---|---|---|---|
Полеmodel | Типstring | ТребованиеОбязательно | Значения и ограничения alibaba/happyhorse-1.1 | По умолчанию— |
Полеprompt | Типstring | ТребованиеОбязательно | Значения и ограничения Минимальная длина: 1 Максимум байтов: 10 000 Единица: байты UTF8 | По умолчанию— |
Полеduration | Типinteger | ТребованиеОбязательно | Значения и ограничения Минимум: 3 Максимум: 15 Единица: секунды | По умолчанию— |
Полеresolution | Типstring | ТребованиеОбязательно | Значения и ограничения 720p | По умолчанию— |
Полеaspect_ratio | Типstring | ТребованиеОбязательно | Значения и ограничения 16:9 | По умолчанию— |
Сочетания входных материалов
Из текста в видео · Обязательно: prompt
Параметры и жизненный цикл метода
| Параметр | Контракт |
|---|---|
Параметрcontent_type | Контрактapplication/json |
Параметрrequired | Контрактmodel, prompt, duration, resolution, aspect_ratio |
Параметрother_options | Контрактfalse |
Параметрresolution | Контракт720p |
Параметрprompt_max_bytes | Контракт10000 |
Параметрduration_integer_range | Контракт3, 15 |
Параметрaspect_ratio | Контракт16:9 |
Параметрgenerate_audio | Контрактнужно опустить поле (не передавать false); AAC включён |
Параметрmaterial_types | Контрактtext |
Параметрadditional_properties | Контрактfalse |
Псевдонимы метода: /v1/videos/generations, /videos, /videos/generations
Жизненный цикл: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Создайте один раз и сохраните возвращённый ID.
Проверяйте исходный статус; сохраняйте каждый готовый ресурс и его длительность.
Тарифы
Как рассчитывается итоговая плата
Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.
Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.
- Быстрый режим
- Не указано При выборе быстрого режима
- Режим flex
- Не указано При выборе режима flex
- Максимальная интенсивность рассуждений
- Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)
Оценочные ставки для сравнения
Цены по конфигурациям
Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.
| Конфигурация | Шкала ставок | Прогноз количества | Расчётная единица | Условия расчёта | Плата |
|---|---|---|---|---|---|
| КонфигурацияБазовые тарифы на токены | Шкала ставокБазовая ставка | Прогноз количества— | Расчётная единица— | Условия расчёта— | Плата Вход · Входные токены · Оценка только для сравнения — / 1K токенов Выход · Выходные токены · Оценка только для сравнения — / 1K токенов Вход · Чтение кэша · Оценка только для сравнения — / 1K токенов Вход · Запись в кэш · Оценка только для сравнения — / 1K токенов Вход · Запись в кэш, 1 час · Оценка только для сравнения — / 1K токенов |
| КонфигурацияЦена видео | Шкала ставок— | Прогноз количества— | Расчётная единицаза секунду видео | Условия расчётаresolution: 1080p | Плата Выход · Цена видео · Оценка только для сравнения $0.2556 за секунду видео |
| КонфигурацияЦена видео | Шкала ставок— | Прогноз количества— | Расчётная единицаза секунду видео | Условия расчётаresolution: 720p | Плата Выход · Цена видео · Оценка только для сравнения $0.1976 за секунду видео |
| КонфигурацияОриентировочная стоимость генерации | Шкала ставок— | Прогноз количестваОценка для одной генерации | Расчётная единица— | Условия расчёта— | Плата Выход · Оценочная стоимость генерации · Оценка только для сравнения $0.5928 оценка до генерации Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации. |
Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →
Сведения о справочном тарифе
Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.
Ссылки на цены конфигураций видео
Цены по конфигурациям
Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.
| Конфигурация | Условия расчёта | Плата |
|---|---|---|
| КонфигурацияЦена видео | Условия расчётаresolution: 720p | Плата Выход · Цена видео $0.1976 за секунду видео Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации. |
| КонфигурацияЦена видео | Условия расчётаresolution: 1080p | Плата Выход · Цена видео $0.2556 за секунду видео Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации. |
Примеры запросов
Ailoot Ultra · Видео
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "alibaba/happyhorse-1.1", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 3, "resolution": "720p", "aspect_ratio": "16:9"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
Получить и сохранить результаты
Ailoot Ultra · Видео
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Проверить статус задачи
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Чтение другого содержимого
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
Сохраняйте все готовые результаты
Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.
Готовый data[] содержит все подписанные URL содержимого, принадлежащие Ailoot. Получите данные по каждому возвращённому URL либо используйте конечную точку содержимого, указав в index фактический индекс результата. Неудачная исходная задача может вернуть charge_pending_check; проверяйте её, а не создавайте заново.
Если нужно проверить исходный ответ
Проверяйте существующую исходную задачу; никогда не повторяйте отправку с неизвестным исходом.
Максимум результатов: 4.
Поля ответа
| Поле | Тип | Значение |
|---|---|---|
Полеid | Типstring | Значение— |
Полеobject | Типstring | Значение— |
Полеmodel | Типstring | Значение— |
Полеstatus | Типstring | Значение— |
Полеdata[] | Типsigned content URL | Значение— |
Полеcharge_pending_check | Типboolean | Значение— |
Полеerror.code | Типstring | Значение— |
Полеerror.message | Типstring | Значение— |
Полеoperation_id | Типstring | ЗначениеОтвет исходного статуса или содержимого HTTP503 result_pending_check: в id указан тот же исходный публичный ID видео. |
Полеerror.type | Типstring | Значениеserver_error при HTTP503 result_pending_check. |
Ошибки и дальнейшие шаги
| Ответ | Условие | Следующий шаг |
|---|---|---|
Ответ400 · invalid_request_error | УсловиеНе удалось прочитать исходное тело запроса до разбора профиля видео | Следующий шагСохраните возвращённый ответ и исправьте нечитаемое тело запроса. |
Ответ422 · price_unavailable | УсловиеНе удалось разобрать точный профиль видео либо для полностью разобранного профиля нет готовой точной тарифной карточки | Следующий шагСохраните ответ; используйте полный точный допущенный профиль и его опубликованную карточку. Эта ветвь выполняется до отправки поставщику. |
Ответ409 · video_not_ready | УсловиеСодержимое исходного результата пока недоступно | Следующий шагПроверяйте исходный возвращённый ID и соблюдайте Retry-After. |
Ответserver_error | УсловиеВозвращённый ответ указывает, что операция или результат требуют проверки | Следующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно. |
Ответ503 · result_pending_check | УсловиеGET исходного статуса или содержимого: задача не опубликована, исходная задача не имеет статуса failed/cancelled/expired, а локальное состояние — unknown либо статус исходной задачи — completed. | Следующий шагСохраните исходные id и operation_id (тот же публичный ID видео), ответ и заголовки; читайте только исходный статус или содержимое. Никогда не отправляйте новый запрос на генерацию. |
Псевдонимы
Псевдонимы моделей
Ailoot Ultra alibaba/happyhorse-1.1
Псевдонимы путей метода
/v1/videos/generations, /videos, /videos/generations
Связанные ID для вызова
FAQ · Alibaba: HappyHorse 1.1
- Какие входные данные и результаты доступны?
POST /v1/videos·alibaba/happyhorse-1.1:text→video- Какие поля использует запрос?
POST /v1/videos·alibaba/happyhorse-1.1:model,prompt,duration,resolution,aspect_ratio- Какие ограничения действуют?
POST /v1/videos·alibaba/happyhorse-1.1:duration.minimum:3;duration.maximum:15