HappyHorse 1.0 to model wideo Alibaby, który tworzy klipy 3-15 sekund w 720P lub 1080P (domyślnie 1080P). Generuje z tekstu, z jednego zdjęcia jako pierwszej klatki albo z 1-9 obrazów referencyjnych. Ma też tryb edycji: przerabia styl filmu źródłowego (3-60 s, przetwarzane do 15 s) na podstawie maksymalnie 5 obrazów stylu. Producent pozwala też wybrać, czy zachować oryginalny dźwięk, ale w Jantarisie tej opcji jeszcze nie ma - zostaje ustawienie domyślne producenta. Stawka zależy tylko od rozdzielczości i długości, nie od trybu. Nowsza wersja to HappyHorse 1.1.
Do czego się nadaje
- Przerobienie nagrania z telefonu na animację lub inny styl wizualny
- Teledysk, w którym fragmenty klipu dostają nowy wygląd
- Rolki w 4:5 i 5:4, formatach wygodnych na feed
- Animacja postaci z kilku obrazów referencyjnych
Jak pisać prompty
- Przy edycji wideo opisz docelowy styl, a nie treść - akcja zostaje z oryginału.
- Obrazy stylu dobieraj spójne: ta sama paleta i technika na wszystkich pięciu.
- W trybie ze zdjęciem prompt jest opcjonalny, ale krótki opis ruchu pomaga.
- Proporcje ustawiasz tylko w trybie tekstowym i referencyjnym, w pozostałych są pomijane.
FAQ
Ile kosztuje HappyHorse 1.0?
Stawka to od 1,86 zł za sekundę, z VAT, i zależy wyłącznie od rozdzielczości i długości. Za nieudane generacje nie płacisz.
Jak długi film mogę przerobić?
Źródło może mieć 3-60 sekund, ale model przetwarza pierwsze 15 sekund. Długość wyniku wynika z nagrania, parametr duration jest wtedy pomijany.
Jak włączyć tryb edycji?
Wyślij adres filmu w video_url, a obrazy stylu w image_urls (do 5). Opis pól znajdziesz w dokumentacji.
Jak wywołać HappyHorse 1.0 przez API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "happyhorse-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "happyhorse-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parametry
| Parametr | Typ | Dozwolone | Domyślnie |
|---|---|---|---|
prompt | string | ≤ 2500 znaków | |
aspect_ratio | string | 16:9 9:16 1:1 4:3 3:4 4:5 5:4 | 16:9 |
resolution | string | 720P 1080P | 1080P |
duration | integer | 3-15 | 5 |
image_url | string | ||
image_urls | array | maks. 9 | |
video_url | string | ||
seed | integer |
Ten sam schemat zwraca GET /v1/models/happyhorse-1.0.









