HappyHorse 1.0
HappyHorse 1.0: видео 720p–1080p из текста или кадра, до 15 секунд.
Первый запрос
import time, requests
BASE, KEY = "https://api.altrouter.ai/v1", "ar-..."
h = {"Authorization": f"Bearer {KEY}"}
# 1. запускаем рендер - ответ приходит сразу, со статусом queued
job = requests.post(f"{BASE}/videos", headers=h, json={
"model": "happyhorse-1.0",
"prompt": "a drone shot over a coastline",
}).json()
# 2. опрашиваем, пока не готово (рендер занимает минуты)
while job["status"] in ("queued", "in_progress"):
time.sleep(10)
job = requests.get(f"{BASE}/videos/{job['id']}", headers=h).json()
print(job["url"])// Видео асинхронное: создать рендер, затем опрашивать статус.
const BASE = "https://api.altrouter.ai/v1";
const h = { Authorization: `Bearer ${process.env.ALTROUTER_API_KEY}`, "Content-Type": "application/json" };
let job = await fetch(`${BASE}/videos`, {
method: "POST",
headers: h,
body: JSON.stringify({ model: "happyhorse-1.0", prompt: "a drone shot over a coastline" }),
}).then((r) => r.json());
while (job.status === "queued" || job.status === "in_progress") {
await new Promise((r) => setTimeout(r, 10_000));
job = await fetch(`${BASE}/videos/${job.id}`, { headers: h }).then((r) => r.json());
}
console.log(job.url);curl https://api.altrouter.ai/v1/videos \
-H "Authorization: Bearer ar-..." \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.0",
"prompt": "a drone shot over a coastline"
}'
# → { "id": "vid_...", "status": "queued" } - готовность опрашивается
# через GET https://api.altrouter.ai/v1/videos/{id}Интерфейс OpenAI-совместимый: в готовом коде меняются только base_url, ключ и идентификатор модели — остальное трогать не нужно.
HappyHorse 1.0 и соседи по цене
| Модель | Цена | Единица | Скидка | |
|---|---|---|---|---|
| Wan 3.0 PrimeAlibaba | $0.14 | секунда | — | Открыть |
| Vidu Q3Vidu | $0.16 | секунда | — | Открыть |
| HappyHorse 1.0эта модельAlibaba | $0.17 | секунда | — | |
| FLUX 3 VideoBlack Forest | $0.18 | секунда | — | Открыть |
| Veo 3.1 FastGoogle | $0.97 | ролик | −19% | Открыть |
Цены и параметры — из того же каталога, что и прайс выше; это не бенчмарк, а сопоставимые условия оплаты.
Лимиты
Рендер асинхронный: POST /v1/videos возвращается сразу со статусом queued, готовность опрашивается через GET /v1/videos/{id}. Деньги удерживаются при создании задачи и списываются только за удавшийся рендер — за failed вы не платите. Цена $0.17 за секунду, то есть длительность прямо умножает счёт.
Подписки нет: деньги списываются за каждый успешный запрос по цене выше, а неудавшийся не оплачивается. Наценки сверх официальной цены вендора нет. Отдельного аккаунта у Alibaba для этого не нужно, и VPN тоже: запрос уходит на api.altrouter.ai, а до вендора ходим мы.
Ограничение частоты общее для всех моделей и считается на ключ: 600 запросов в минуту по умолчанию, при превышении — 429 с заголовком retry-after: 60. Для отдельного ключа лимит и потолок трат за день, неделю, месяц или всё время настраиваются в кабинете.
Когда выбирать HappyHorse 1.0, а когда соседнюю
Дешевле рядом — Vidu Q3: $0.16 за секунду видео против $0.17 у HappyHorse 1.0. На одном и том же объёме счёт выходит в 1,1 раза меньше. Это разумный выбор там, где задача типовая и её много: разметка, классификация, короткие ответы по шаблону — то есть там, где качество упирается не в модель, а в промпт.
Дороже рядом — FLUX 3 Video: $0.18 за секунду видео, то есть в 1,1 раза дороже. По параметрам каталога — тот же набор возможностей и тот же порядок контекста, поэтому переплата оправдана только если HappyHorse 1.0 на вашей задаче не справляется.
Проверять догадки здесь дешевле, чем рассуждать: сравнение выше — это цены и параметры, а не бенчмарк, и оно не скажет, какая модель лучше именно на вашем промпте. Переключение стоит одной строки — меняется идентификатор модели в запросе, base_url и ключ остаются те же, — так что прогнать обе на своих данных занимает минуты.
Асинхронный эндпоинт: запрос возвращается сразу со статусом queued, готовность опрашивается через GET /v1/videos/{id}. Готовый mp4 лежит на нашем CDN, деньги списываются только за удавшийся рендер.
/v1/videosТот же объект возвращает и опрос GET /v1/videos/{id}; за готовым файлом можно сразу идти на GET /v1/videos/{id}/content.