models

happyhorse-1.1-i2v

Markdown · JSON

happyhorse-1.1-i2v

Модель оживления изображения: исходная картинка задаёт первый кадр, а описание направляет дальнейшее движение. Создаёт короткий видеоролик с возможностью звукового сопровождения.

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

HappyHorse-1.1-I2V — модель Alibaba, которая начинает видеосцену с готового изображения. Картинка становится первым кадром, а текст может определить последующее действие: движение героя, изменения в сцене и направление камеры. Это подходит для оживления иллюстрации, предметной фотографии или заранее подготовленного визуального концепта.

Текстовое описание необязательно. Если его нет, модель сама выводит возможное движение из содержимого начальной картинки. При явном задании исходное изображение определяет композицию и внешность объектов, а слова направляют развитие сцены во времени.

От первого кадра к движению

Alibaba выделяет сохранение внешности персонажа, визуальную согласованность, плавность движения и сочетание изображения со звуком. В числе заявленных направлений также устойчивость надписей и фактур. Эти свойства относятся к замыслу модели и не означают буквального сохранения каждого пикселя во всех сгенерированных кадрах.

Для этого режима используется одно начальное изображение. Оно задаёт исходную сцену, а не набор независимых образцов для новой композиции. Возможность назначить отдельный завершающий кадр для этой конкретной версии не заявлена.

Принимаются JPEG, JPG, PNG и WEBP. Каждая сторона входного изображения должна быть не меньше 300 пикселей; допустимое соотношение сторон — от 1:2,5 до 2,5:1, размер файла — до 20 МБ. Соотношение сторон готового видео следует первому кадру.

Параметры ролика

Длительность выбирается целым числом от 3 до 15 секунд. Доступны уровни разрешения 480P, 720P и 1080P; выходной формат — MP4, частота — 24 кадра в секунду. Поддерживается создание звукового сопровождения вместе с видеорядом.

Описание допускает любой язык и содержит до 5000 некитайских либо 2500 китайских символов. Если предел превышен, лишняя часть отбрасывается, поэтому важные действия и особенности движения стоит формулировать в пределах задания. Одинаковое начальное зерно случайности может дать похожие ролики, но не гарантирует их покадровое совпадение.

Ailoot · Видео POST /v1/videos/generations happyhorse-1.1-i2v

happyhorse-1.1-i2v

Alibaba /happyhorse-1.1-i2v
ID модели
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Начало

Модель оживления изображения: исходная картинка задаёт первый кадр, а описание направляет дальнейшее движение. Создаёт короткий видеоролик с возможностью звукового сопровождения.

Допустимые входные данные
Текст · Картинки
Результаты
Видео

Доступно в Ailoot · входные данные и методы

Ailoot · Видео POST /v1/videos/generations
Входные данные
text, image
Результат
video
Выходной формат
mp4
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
happyhorse-1.1-i2v
По умолчанию—
ПолеpromptТипstringТребованиеНеобязательноЗначения и ограничения
Минимальная длина: 1
По умолчанию—
ПолеdurationТипintegerТребованиеНеобязательноЗначения и ограничения
Минимум: 3
Максимум: 15
Единица: секунды
По умолчанию5
ПолеresolutionТипstringТребованиеНеобязательноЗначения и ограничения
480P, 720P, 1080P
По умолчанию720P
ПолеratioТипstringТребованиеНе поддерживаетсяЗначения и ограниченияПо умолчанию—
Полеimage_urlsТипhttps_url|data_image_url[]ТребованиеОбязательноЗначения и ограничения
Минимум элементов: 1
Максимум элементов: 1
Максимум декодированных байтов: 20 971 520
Типы MIME: image/jpeg, image/png, image/webp
По умолчанию—
Сочетания входных материалов

first_frame_to_video · Обязательно: image_urls

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, image_urls
Параметрmaterial_typesКонтрактtext, image
ПараметрoptionalКонтрактduration, resolution, ratio, prompt
Параметрduration_integer_rangeКонтракт3, 15
Параметрdefault_durationКонтракт5
ПараметрresolutionКонтракт480P, 720P, 1080P
Параметрdefault_resolutionКонтракт720P
ПараметрratioКонтракт
Параметрratio_must_omitКонтрактtrue
Параметрimage_urlsКонтракт{"min_count":1,"max_count":1,"schemes":["https","растровые данные в base64"],"max_data_image_bytes":20971520}

Жизненный цикл: 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 указаны точно; возможности поставщика рассматриваются отдельно от допуска.

Тарифы

Ставки методов Ailoot

Ailoot ВидеоPOST /v1/videos/generations
Выход
0,18 $ за секунду в 1080p
Выход
0,07 $ за секунду в 480p
Выход
0,14 $ за секунду в 720p

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot · Видео

Изображение-референс
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT

Получить и сохранить результаты

Ailoot · Видео

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Проверить статус задачи
GET статус
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
    for x in r.get("data",[]):print(x)
PY_STATUS
Сохраните все готовые материалы
GET все готовые материалы
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
    if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
    u=urljoin("https://api.ailoot.ai",x)
    z=urlsplit(u)
    if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
    urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" \
    -H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
  index=$((index + 1))
done < asset-urls.txt
Чтение другого содержимого
GET содержимое
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Сохраняйте все готовые результаты

Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.

Сохраните каждый возвращённый элемент data и индекс результата. content_url относится только к первому результату; получите данные по каждому фактическому пути содержимого или ресурсу. GET содержимого без index не возвращает все результаты.

Если нужно проверить исходный ответ

Проверяйте существующую исходную задачу; никогда не повторяйте отправку с неизвестным исходом.

Поля ответа
ПолеТип
ПолеidТипstring
ПолеobjectТипstring
ПолеmodelТипstring
ПолеstatusТипstring
Полеcontent_urlТипsigned URL
Полеdata[]Типsigned URL
ПолеusageТипobject
Полеresult_pending_checkТипboolean
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответ409 · video_not_readyУсловиеСодержимое исходного результата пока недоступноСледующий шагПроверяйте исходный возвращённый ID и соблюдайте Retry-After.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.

Псевдонимы

Псевдонимы моделей

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Псевдонимы путей метода

Используйте пути методов, указанные выше.

Связанные ID для вызова

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Ailoot · Видео POST /v1/videos/generations happyhorse-i2v

happyhorse-i2v

Alibaba /happyhorse-i2v
ID модели
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Начало

Модель оживления изображения: исходная картинка задаёт первый кадр, а описание направляет дальнейшее движение. Создаёт короткий видеоролик с возможностью звукового сопровождения.

Допустимые входные данные
Текст · Картинки
Результаты
Видео

Доступно в Ailoot · входные данные и методы

Ailoot · Видео POST /v1/videos/generations
Входные данные
text, image
Результат
video
Выходной формат
mp4
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
happyhorse-i2v
По умолчанию—
ПолеpromptТипstringТребованиеНеобязательноЗначения и ограничения
Минимальная длина: 1
По умолчанию—
ПолеdurationТипintegerТребованиеНеобязательноЗначения и ограничения
Минимум: 3
Максимум: 15
Единица: секунды
По умолчанию5
ПолеresolutionТипstringТребованиеНеобязательноЗначения и ограничения
480P, 720P, 1080P
По умолчанию720P
ПолеratioТипstringТребованиеНе поддерживаетсяЗначения и ограниченияПо умолчанию—
Полеimage_urlsТипhttps_url|data_image_url[]ТребованиеОбязательноЗначения и ограничения
Минимум элементов: 1
Максимум элементов: 1
Максимум декодированных байтов: 20 971 520
Типы MIME: image/jpeg, image/png, image/webp
По умолчанию—
Сочетания входных материалов

first_frame_to_video · Обязательно: image_urls

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрmaterial_typesКонтрактtext, image
ПараметрrequiredКонтрактnull
Параметрoptional_controlsКонтрактnull

Жизненный цикл: 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 указаны точно; возможности поставщика рассматриваются отдельно от допуска.

Тарифы

Ставки методов Ailoot

Ailoot ВидеоPOST /v1/videos/generations
Выход
0,18 $ за секунду в 1080p
Выход
0,07 $ за секунду в 480p
Выход
0,14 $ за секунду в 720p

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot · Видео

Изображение-референс
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT

Получить и сохранить результаты

Ailoot · Видео

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Проверить статус задачи
GET статус
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
    for x in r.get("data",[]):print(x)
PY_STATUS
Сохраните все готовые материалы
GET все готовые материалы
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
    if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
    u=urljoin("https://api.ailoot.ai",x)
    z=urlsplit(u)
    if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
    urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" \
    -H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
  index=$((index + 1))
done < asset-urls.txt
Чтение другого содержимого
GET содержимое
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Сохраняйте все готовые результаты

Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.

Сохраните каждый возвращённый элемент data и индекс результата. content_url относится только к первому результату; получите данные по каждому фактическому пути содержимого или ресурсу. GET содержимого без index не возвращает все результаты.

Если нужно проверить исходный ответ

Проверяйте существующую исходную задачу; никогда не повторяйте отправку с неизвестным исходом.

Поля ответа
ПолеТип
ПолеidТипstring
ПолеobjectТипstring
ПолеmodelТипstring
ПолеstatusТипstring
Полеcontent_urlТипsigned URL
Полеdata[]Типsigned URL
ПолеusageТипobject
Полеresult_pending_checkТипboolean
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответ409 · video_not_readyУсловиеСодержимое исходного результата пока недоступноСледующий шагПроверяйте исходный возвращённый ID и соблюдайте Retry-After.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.

Псевдонимы

Псевдонимы моделей

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Псевдонимы путей метода

Используйте пути методов, указанные выше.

Связанные ID для вызова

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Ailoot · Видео POST /v1/videos/generations happyhorse-i2v-latest

happyhorse-i2v-latest

Alibaba /happyhorse-i2v-latest
ID модели
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Начало

Модель оживления изображения: исходная картинка задаёт первый кадр, а описание направляет дальнейшее движение. Создаёт короткий видеоролик с возможностью звукового сопровождения.

Допустимые входные данные
Текст · Картинки
Результаты
Видео

Доступно в Ailoot · входные данные и методы

Ailoot · Видео POST /v1/videos/generations
Входные данные
text, image
Результат
video
Выходной формат
mp4
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
happyhorse-i2v-latest
По умолчанию—
ПолеpromptТипstringТребованиеНеобязательноЗначения и ограничения
Минимальная длина: 1
По умолчанию—
ПолеdurationТипintegerТребованиеНеобязательноЗначения и ограничения
Минимум: 3
Максимум: 15
Единица: секунды
По умолчанию5
ПолеresolutionТипstringТребованиеНеобязательноЗначения и ограничения
480P, 720P, 1080P
По умолчанию720P
ПолеratioТипstringТребованиеНе поддерживаетсяЗначения и ограниченияПо умолчанию—
Полеimage_urlsТипhttps_url|data_image_url[]ТребованиеОбязательноЗначения и ограничения
Минимум элементов: 1
Максимум элементов: 1
Максимум декодированных байтов: 20 971 520
Типы MIME: image/jpeg, image/png, image/webp
По умолчанию—
Сочетания входных материалов

first_frame_to_video · Обязательно: image_urls

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрmaterial_typesКонтрактtext, image
ПараметрrequiredКонтрактnull
Параметрoptional_controlsКонтрактnull

Жизненный цикл: 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 указаны точно; возможности поставщика рассматриваются отдельно от допуска.

Тарифы

Ставки методов Ailoot

Ailoot ВидеоPOST /v1/videos/generations
Выход
0,18 $ за секунду в 1080p
Выход
0,07 $ за секунду в 480p
Выход
0,14 $ за секунду в 720p

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot · Видео

Изображение-референс
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT

Получить и сохранить результаты

Ailoot · Видео

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Проверить статус задачи
GET статус
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
    for x in r.get("data",[]):print(x)
PY_STATUS
Сохраните все готовые материалы
GET все готовые материалы
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
    if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
    u=urljoin("https://api.ailoot.ai",x)
    z=urlsplit(u)
    if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
    urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" \
    -H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
  index=$((index + 1))
done < asset-urls.txt
Чтение другого содержимого
GET содержимое
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Сохраняйте все готовые результаты

Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.

Сохраните каждый возвращённый элемент data и индекс результата. content_url относится только к первому результату; получите данные по каждому фактическому пути содержимого или ресурсу. GET содержимого без index не возвращает все результаты.

Если нужно проверить исходный ответ

Проверяйте существующую исходную задачу; никогда не повторяйте отправку с неизвестным исходом.

Поля ответа
ПолеТип
ПолеidТипstring
ПолеobjectТипstring
ПолеmodelТипstring
ПолеstatusТипstring
Полеcontent_urlТипsigned URL
Полеdata[]Типsigned URL
ПолеusageТипobject
Полеresult_pending_checkТипboolean
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответ409 · video_not_readyУсловиеСодержимое исходного результата пока недоступноСледующий шагПроверяйте исходный возвращённый ID и соблюдайте Retry-After.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.

Псевдонимы

Псевдонимы моделей

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Псевдонимы путей метода

Используйте пути методов, указанные выше.

Связанные ID для вызова

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

FAQ · happyhorse-1.1-i2v
Какие входные данные и результаты доступны?

POST /v1/videos/generations · happyhorse-1.1-i2v: text, image → video

POST /v1/videos/generations · happyhorse-i2v: text, image → video

POST /v1/videos/generations · happyhorse-i2v-latest: text, image → video

Какие поля использует запрос?

POST /v1/videos/generations · happyhorse-1.1-i2v: model, prompt, duration, resolution, image_urls

POST /v1/videos/generations · happyhorse-i2v: model, prompt, duration, resolution, image_urls

POST /v1/videos/generations · happyhorse-i2v-latest: model, prompt, duration, resolution, image_urls

Какие ограничения действуют?

POST /v1/videos/generations · happyhorse-1.1-i2v: duration.minimum: 3; duration.maximum: 15

POST /v1/videos/generations · happyhorse-i2v: duration.minimum: 3; duration.maximum: 15

POST /v1/videos/generations · happyhorse-i2v-latest: duration.minimum: 3; duration.maximum: 15

Подробнее

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка
Выберите тариф со скидкой для своих регулярных запросов.
Промокод до 50%
Введите код при покупке. Цена пересчитается с учётом действующей акции.
Расходы в истории
Модель, токены и сумма сохраняются для каждого запроса.

Выбрать подписку · Посмотреть цены моделей

Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение
Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.
Лицензия для реселлера
Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.
Документы на сайте
Оферта, лицензионный договор и политика обработки данных доступны до подключения.

Запросить реселлерскую лицензию · Оферта и лицензионный договор