GPT-6 Sol & Claude Opus 5.5 kini tersediaGPT-6 Sol: setengah harga 5.6 Sol

HappyHorse 1.1 gambar ke video: panduan API dan 5 klip nyata

Satu skrip mengirim foto, memeriksa tugas, dan menyimpan MP4. Field-nya, kejutan tanda air dan trek suara, serta 5 klip yang dibuat pada 2 November 2026.

Kiki, OmniaKey COO11 menit baca
Di halaman ini

Untuk menghidupkan gambar diam dengan HappyHorse 1.1 gambar ke video, kirim foto sebagai first_frame ke https://api.omniakey.com/v1/media/tasks dengan ID model happyhorse-1.1-i2v, periksa tugasnya, lalu unduh MP4. Lima klip 5 detik kami di 720P memakan waktu 92 sampai 158 detik pada 2 November 2026. Semuanya berisi musik yang tidak kami minta, dan pengaturan bawaan menambahkan tanda air "Happy Horse".

Jawaban singkat

  • Permintaan: model happyhorse-1.1-i2v, operasi image_to_video, dan tepat satu first_frame di input.media.
  • Rasio aspek: klip mengikuti foto Anda, karena tidak ada field ratio.
  • Durasi dan ukuran: 3 sampai 15 detik di 480P, 720P, atau 1080P; kirim resolution setiap kali, karena bawaan Alibaba adalah 1080P.
  • Tanda air: aktif secara bawaan, dimatikan dengan watermark: false.
  • Suara: kelima klip punya musik, API Alibaba tidak mencantumkan sakelar audio, dan ffmpeg menghapus treknya.

Apa yang perlu disiapkan sebelum panggilan pertama HappyHorse 1.1 gambar ke video?

Tiga hal: kunci, Python 3, dan foto yang lolos aturan Alibaba.

  • Kunci di OMNIAKEY_API_KEY. Skrip mengirimnya sebagai token Bearer, jadi kunci tidak tersimpan di kode.
  • Python 3 tanpa memasang apa pun. Skrip hanya memakai pustaka standar.
  • Foto yang sesuai referensi API gambar ke video Alibaba: JPEG, JPG, PNG, atau WEBP; lebar dan tinggi minimal 300 piksel; sampai 20 MB; rasio aspek 1:2.5 sampai 2.5:1. Alibaba tidak menyebut batas maksimum piksel.

Kesulitannya ada di ukuran: gambar yang disisipkan ikut di badan permintaan, dan badan itu harus muat dalam 1 MiB termasuk Base64 (ikhtisar API media OmniaKey, diperiksa 2 November 2026). Skrip berhenti di atas 700 KB; kalau lebih besar, kecilkan foto atau berikan URL HTTPS publik. Foto 2K kami berukuran 2.254.819 byte, dan perintah macOS ini menurunkannya ke 92.212 byte:

bash
sips -s format jpeg -s formatOptions 85 -Z 1280 still.jpg --out still-small.jpg

Field apa saja yang dibawa permintaan?

Sembilan field mendefinisikan tugas: tiga di tingkat atas, dua di dalam input, dan empat di dalam parameters.

FieldNilaiCatatan
modelhappyhorse-1.1-i2vID model 1.1 gambar ke video
typevideojenis berkas yang dibuat tugas
operationimage_to_videonama tanpa awalan
input.promptteksOmniaKey mewajibkan, API Alibaba menganggap opsional; sampai 5,000 karakter non-Cina atau 2,500 karakter Cina, teks lebih panjang dipotong
input.mediatepat satu {"type": "first_frame", "url": ...}URL HTTPS publik atau data URI
parameters.resolution480P, 720P, atau 1080Pselalu kirim: bawaan Alibaba 1080P
parameters.durationdetik bulat, 3 sampai 15wajib di OmniaKey
parameters.watermarktrue (bawaan) atau falsefalse menghapus teks "Happy Horse"
parameters.seed0 sampai 2147483647seed sama juga tidak menjamin klip sama

Empat detail mudah terlewat.

  • Tidak ada field ratio: klip mempertahankan rasio aspek foto Anda (referensi API gambar ke video Alibaba, diperiksa 2 November 2026).
  • Halaman Alibaba tidak menampilkan field prompt negatif.
  • Setiap panggilan pembuatan butuh header Idempotency-Key. Mengulang dengan badan yang sama mengembalikan tugas asli dan tidak pernah menagih dua kali; dengan badan lain muncul 409 idempotency_key_reused (dokumentasi API video OmniaKey, diperiksa 2 November 2026).
  • Ukuran keluaran berubah: di dokumentasi OmniaKey, foto 1200×630 di 720P kembali sebagai 1324×696.

Skrip Python

Ini berkas yang persis kami jalankan, hanya dengan pustaka standar.

python
"""Animate one still with HappyHorse 1.1 image-to-video through the OmniaKey media API.

Usage:
    export OMNIAKEY_API_KEY="your-omniakey-api-key"
    python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4

The still can be a local JPEG or PNG (sent inline as a data URL) or a public https:// URL.
"""
import base64
import json
import mimetypes
import os
import sys
import time
import urllib.error
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
HEADERS = {
    "Authorization": "Bearer " + os.environ["OMNIAKEY_API_KEY"],
    "Content-Type": "application/json",
    "User-Agent": "happyhorse-i2v-example/1.0",
}
POLL_SECONDS = 10
GIVE_UP_AFTER = 15 * 60  # most clips finish in 1-5 minutes


def call(method, url, body=None, extra_headers=None):
    data = json.dumps(body).encode() if body is not None else None
    req = urllib.request.Request(url, data=data, method=method, headers={**HEADERS, **(extra_headers or {})})
    for attempt in range(3):
        try:
            with urllib.request.urlopen(req, timeout=60) as resp:
                return json.load(resp)
        except urllib.error.HTTPError as err:
            sys.exit(f"HTTP {err.code}: {err.read().decode(errors='replace')}")
        except (urllib.error.URLError, TimeoutError, ConnectionError) as err:
            if attempt == 2:
                raise
            print("network error, retrying:", err)  # a retried POST keeps its Idempotency-Key
            time.sleep(5)


def first_frame_url(image):
    if image.startswith("https://"):
        return image
    raw = open(image, "rb").read()
    if len(raw) > 700_000:  # Base64 adds a third, and the whole request must stay under 1 MiB
        sys.exit("The still is over 700 KB. Resize it or pass a public https:// URL instead.")
    mime = mimetypes.guess_type(image)[0] or "image/jpeg"
    return f"data:{mime};base64,{base64.b64encode(raw).decode()}"


def main(image, prompt, out_path):
    task = call("POST", API, {
        "model": "happyhorse-1.1-i2v",
        "type": "video",
        "operation": "image_to_video",
        "input": {"prompt": prompt, "media": [{"type": "first_frame", "url": first_frame_url(image)}]},
        "parameters": {"resolution": "720P", "duration": 5, "watermark": False},  # watermark is on by default
    }, {"Idempotency-Key": str(uuid.uuid4())})
    print("task", task["id"], task["status"])

    start = time.time()
    while task["status"] in ("queued", "processing"):
        if time.time() - start > GIVE_UP_AFTER:
            sys.exit(f"Still {task['status']} after 15 minutes. Do not submit it again; "
                     f"check it later with GET {API}/{task['id']}")
        time.sleep(POLL_SECONDS)
        task = call("GET", f"{API}/{task['id']}")
    print(task["status"], "after", round(time.time() - start), "s")
    if task["status"] != "succeeded":
        sys.exit(json.dumps(task.get("error") or task))

    # The signed download URL is short-lived, so save the file right away.
    req = urllib.request.Request(task["assets"][0]["url"], headers={"User-Agent": HEADERS["User-Agent"]})
    with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    print("saved", out_path)


if __name__ == "__main__":
    main(*sys.argv[1:4])

Simpan sebagai hh_i2v.py lalu jalankan:

bash
export OMNIAKEY_API_KEY="your-omniakey-api-key"
python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4

Jalur kami dengan watermark: false mencetak ini:

text
task task_QqK3ZdAd72vmK1DSOuOxXSytBSaJ244v queued
succeeded after 91 s
saved data/clips/c5-orbit-nowm.mp4

Lima hal di skrip ini penting.

  • Skrip memeriksa tiap 10 detik.
  • Skrip menyerah setelah 15 menit dengan pesan agar tugas tidak dikirim ulang.
  • Saat ada error jaringan, skrip mencoba lagi, dan pembuatan ulang mempertahankan Idempotency-Key, jadi Anda mendapat tugas asli, bukan tagihan kedua.
  • Skrip menyimpan berkas begitu tugas berhasil, karena URL unduhan bertanda tangan berumur pendek.
  • Skrip mengirim User-Agent di setiap permintaan: User-Agent bawaan Python mendapat HTTP 403 dengan error code: 1010 dari Cloudflare pada pengujian Kling 3.0 API kami tanggal 29 Oktober 2026.

Lima klip yang kami buat

Kami membuat empat foto dengan Nano Banana 2.1 dan menjalankan gambar headphone dua kali untuk menguji tanda air. Hasilnya lima klip, semuanya 5 detik dan 720P, pada 2 November 2026. Klip potret, danau, dan rubah keluar dengan pengaturan bawaan, jadi tanda air terlihat di bingkai itu.

Orbit headphone

prompt
The camera slowly orbits about 90 degrees to the right around the headphones while a soft band of light sweeps across the ear cups. The headphones stay perfectly still on the pedestal. Smooth, steady product-commercial camera move.
Delapan bingkai headphone hitam di alas batu. Kamera bergerak dari satu sisi ke sisi lain, dan di bingkai tengah muncul tepi melengkung latar di belakang.
Delapan bingkai klip orbit menurut waktu, dari 0.0 sampai 4.85 detik, tanda air false. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Kamera bergerak dari satu sisi headphone ke sisi lain, dan headphone tetap di alas. Di bingkai tengah, tepi melengkung latar yang tidak ada di foto muncul di belakang, dan pita cahaya yang diminta di prompt hampir tidak terlihat.

Kami menjalankan prompt yang sama pada foto yang sama dua kali, sekali dengan pengaturan bawaan dan sekali dengan watermark: false, dan sudutnya menunjukkan bedanya.

Sudut kanan bawah dua klip. Yang atas menampilkan teks putih Happy Horse, yang bawah, dengan tanda air false, bersih.
Sudut kanan bawah bingkai terakhir tiap klip orbit, diperbesar. Atas: pengaturan bawaan. Bawah: tanda air false. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Potret di tengah hujan

prompt
She slowly turns her head toward the camera and gives a small smile while light rain keeps falling. The neon signs behind her flicker softly and the camera pushes in a little.
Empat bingkai perempuan berjas hujan kuning di jalan neon yang basah. Dia memalingkan wajah dari kiri ke kamera sambil tersenyum, dan bingkai bergerak dari pinggang ke atas menjadi close-up.
Empat bingkai klip potret di tengah hujan menurut waktu, dari 0.0 sampai 4.85 detik, dengan tanda air bawaan. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Dia beralih dari menoleh ke kiri menjadi menghadap kamera dan tersenyum, sesuai urutan yang diminta prompt, dan tanda air ada di setiap bingkai. Prompt meminta dorongan kamera ringan, dan bingkai bergerak dari pinggang ke atas sampai close-up wajah.

Dorongan kamera di danau

prompt
Slow aerial push-in over the water toward the rowboat. Mist drifts across the lake, the boat rocks gently and small ripples spread from its hull, and the golden light grows a little brighter.
Delapan bingkai perahu kayuh di danau berkabut saat matahari terbit. Kamera maju sampai perahu hampir memenuhi seluruh bingkai, dan riak menyebar dari lambungnya.
Delapan bingkai klip danau menurut waktu, dari 0.0 sampai 4.85 detik, dengan tanda air bawaan. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Kamera maju ke arah perahu, seperti diminta. Di akhir, perahu hampir memenuhi seluruh bingkai, dan riak menyebar dari lambungnya.

Ilustrasi rubah

prompt
The fox turns a page of the book with its paw and its ears twitch. A few orange leaves drift down from the tree and the branches sway gently. Keep the flat illustration style.
Empat bingkai ilustrasi datar rubah yang membaca di bawah pohon musim gugur. Daun oranye berjatuhan, dan pandangan bergerak dari seluruh pohon mendekati rubah.
Empat bingkai klip rubah menurut waktu, dari 0.0 sampai 4.85 detik, dengan tanda air bawaan. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Gaya ilustrasi datar bertahan dari bingkai pertama sampai terakhir sambil daun oranye berjatuhan. Kamera bergerak dari seluruh pohon ke pandangan dekat rubah, yang tidak pernah diminta prompt; halaman buku terangkat, tetapi bingkai tidak memastikan kaki rubah membalik satu halaman.

Kiri: foto rubah yang kami kirim, dengan seluruh pohon. Kanan: bingkai terakhir klip, jauh lebih dekat ke rubah dan buku terbukanya, dengan gaya datar yang sama, bertanda air Happy Horse.
Kiri: foto yang dikirim sebagai bingkai pertama. Kanan: bingkai terakhir klip rubah. HappyHorse 1.1 lewat API OmniaKey, gambar ke video, 5 detik, 720P, dibuat 2 November 2026.

Di 2 dari 4 prompt kami, kamera bergerak lebih jauh dari yang diminta, jadi periksa framing dengan uji singkat. Klip 3 detik di 480P adalah pilihan terpendek dan terendah yang dicantumkan dokumen (referensi API gambar ke video Alibaba, diperiksa 2 November 2026).

Apa yang diukur berkasnya

KlipRasioPikselBingkaiWaktuByte
Orbit, bawaan16:91286×716123128 dtk1.486.548
Orbit, watermark: false16:91286×71612198 dtk1.320.527
Potret di tengah hujan9:16716×1286123158 dtk2.108.577
Danau16:91286×716123131 dtk2.691.558
Rubah1:1960×96012392 dtk2.405.557

Setiap berkas menyebut 5.16 detik padahal kami meminta 5: itu trek audio, sedangkan trek video berdurasi 5.13 detik pada 123 bingkai dan 5.04 detik pada 121 bingkai. Kelimanya H.264 24 fps dengan trek AAC dua kanal, dan skrip pendeteksi potongan tidak menemukan satu pun.

Klip kami memakan 92 sampai 158 detik dari kirim sampai unduh, dibanding 1–5 menit yang disebut dokumentasi Alibaba untuk tugas gambar ke video (referensi API gambar ke video Alibaba, diperiksa 2 November 2026). Kami tidak menguji 480P, 1080P, durasi lain, seed, URL gambar publik, HappyHorse 1.0, maupun titik akhir Alibaba sendiri. Untuk memilih antar model, lihat HappyHorse 1.1 lawan Seedance 2.0 dan HappyHorse 1.1 lawan Kling 3.0. Untuk mengulang klip tanpa kode, HappyHorse 1.1 ada di pembuat video AI.

Mengapa klip punya suara?

HappyHorse 1.1 menambahkan musik ke kelima klip, padahal tidak satu pun prompt kami memintanya. Tidak ada yang mendengarkan: kami meminta Gemini 3.8 Flash, lewat API OmniaKey, mendeskripsikan setiap trek.

KlipDeskripsi modelKenyaringan rata-rata
Orbit, bawaan"Beat hip-hop dengan perkusi sinkop, tepukan tangan, dan akor synth lembut."−19.5 dB
Orbit, watermark: false"Musik elektronik tenang dan berirama, dengan ketukan stabil dan nada synth melodis"−20.5 dB
Potret di tengah hujan"Melodi piano lambat, melankolis, dan lembut, dengan tekstur atmosfer ringan"−22.6 dB
Danau"Melodi piano lambat, lembut, dan sentimental"−20.2 dB
Rubah"Melodi ambient tenang dan lembut yang dimainkan dengan nada lonceng halus", ditambah "langkah berderit di kerikil"−27.4 dB

Model tidak melaporkan suara manusia di klip mana pun. Prompt dan foto yang sama, dijalankan dua kali, menghasilkan dua trek berbeda.

Referensi gambar ke video Alibaba tidak mencantumkan field audio atau opsi tanpa suara, meskipun catatan versi 1.1 menyebut sinkronisasi audio dan gambar (halaman model yang baru dirilis Alibaba, diperiksa 2 November 2026). Untuk berkas tanpa suara, hapus treknya setelah unduh:

bash
ffmpeg -i clip.mp4 -an -c:v copy silent.mp4

Kami menjalankannya pada klip dengan watermark: false dan hasilnya punya trek video dan tanpa trek audio. Gambarnya tetap persis sama, karena -c:v copy menyalin trek, bukan mengodekan ulang.

Berapa lama hasil tersedia?

Di OmniaKey, tautan bertanda tangan ke MP4 Anda berlaku sekitar 1 jam, dan catatan tugas disimpan 24 jam; periksa tugas lagi untuk URL baru (ikhtisar API media OmniaKey, diperiksa 2 November 2026). Di API Alibaba sendiri, URL video dan ID tugas sama-sama berlaku 24 jam, lalu permintaan mengembalikan UNKNOWN dan berkasnya sudah hilang. Unduh begitu tugas berhasil.

Error apa yang akan Anda temui?

Tidak satu pun dari lima jalur kami gagal, jadi daftar ini berasal dari dokumentasi API video OmniaKey, diperiksa 2 November 2026.

StatusArtinyaYang dilakukan
400 invalid_requestbadan rusak, atau tugas tanpa input.promptperiksa bentuk permintaan di atas
400 model_price_errordurasi di luar rentang model, atau resolusi tanpa hargapakai durasi dan resolusi yang didukung
403 model_not_allowedkunci atau grup Anda tidak menyertakan modelperiksa akses model pada kunci
409 idempotency_key_reusedkunci yang sama sudah dikirim dengan badan lainpakai ulang kunci hanya untuk pengulangan identik
503 no_available_channelbelum ada kanal yang melayani model atau operasi inicoba lagi nanti, atau lihat dasbor

Tugas yang berakhir failed dikembalikan otomatis, jadi render yang ditolak hanya memakan waktu Anda (ikhtisar API media OmniaKey, diperiksa 2 November 2026).

Kesalahan yang perlu dihindari adalah membaca batas waktu di sisi Anda sebagai tugas gagal. Periksa ID tugas yang sama; mengirim ulang memulai tugas kedua dan tagihan kedua. Kalau memang mengirim ulang, pertahankan Idempotency-Key dan badan yang sama, dan Anda mendapat tugas asli.

Berapa biaya satu klip HappyHorse 1.1?

Klip 5 detik di 720P berbiaya $0.70 dengan harga daftar Alibaba di Singapura. Berikut harga per detik Alibaba dari halaman harga yang diperiksa 2 November 2026:

ResolusiSingapuraBeijing dan Global
480P$0.07$0.0618845
720P$0.14$0.123769
1080P$0.18$0.165026

Tagihannya harga per detik dikali detik keluaran. Permintaan yang gagal tidak ditagih. Singapura juga punya kuota gratis 10 detik yang berlaku 90 hari. Di halaman harga, harga Global berlaku untuk Frankfurt, Virginia, dan Tokyo.

OmniaKey menagih per detik keluaran yang dirender dan menagih di muka saat tugas dibuat, dengan tugas gagal atau dibatalkan dikembalikan otomatis; untuk tarif terkini, lihat halaman HappyHorse 1.1.

Bisakah memanggil Alibaba Cloud langsung?

Bisa. HappyHorse dilayani di Alibaba Cloud Model Studio, dengan titik akhir regional untuk Singapura, Amerika Serikat (Virginia), Beijing, Frankfurt, dan Tokyo (referensi API gambar ke video Alibaba, diperiksa 2 November 2026). Jalur kami lewat API OmniaKey, jadi berikut ini dari dokumen Alibaba.

  • Buat dengan POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis untuk Singapura.
  • Kirim header X-DashScope-Async: enable, kalau tidak permintaan gagal dengan "current user api does not support synchronous calls".
  • Periksa GET .../api/v1/tasks/{task_id} kira-kira tiap 15 detik; statusnya melewati PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, UNKNOWN.
  • Jaga model, titik akhir, dan kunci di wilayah yang sama, karena panggilan antarwilayah gagal.
  • Satu kunci mendapat 5 permintaan per detik dan 5 tugas bersamaan (halaman batas laju Alibaba, diperiksa 2 November 2026).

Halaman harga mencantumkan Tokyo, tetapi halaman batas laju tidak mencantumkan gambar ke video 1.1 di sana, jadi Tokyo belum terkonfirmasi.

Pertanyaan umum

Apakah HappyHorse gambar ke video butuh prompt?

Di OmniaKey, ya: tugas tanpa input.prompt menerima 400 invalid_request (dokumentasi API video OmniaKey, diperiksa 2 November 2026). API Alibaba sendiri menganggap prompt opsional dan memakai bingkai pertama saja. Dalam kedua kasus, sebutkan gerakan dan arah kamera, seperti prompt kami di atas.

Bagaimana menghapus tanda air Happy Horse?

Kirim parameters.watermark: false. Bawaan true menggambar teks putih kecil "Happy Horse" di sudut kanan bawah; klip orbit kedua kami, yang dikirim dengan false, kembali bersih.

Bagaimana mengatur rasio aspek?

Pangkas fotonya. Gambar ke video tidak punya field ratio dan klip mengikuti bentuk bingkai pertama, jadi foto 16:9 kami menghasilkan klip 16:9 dan potret menghasilkan klip 9:16. Jaga pangkasan antara 1:2.5 dan 2.5:1.

Apakah ada HappyHorse 1.5?

Tidak ada yang setelah 1.1 di daftar model, tabel harga, maupun halaman daur hidup Alibaba pada 2 November 2026, dan versi terbaru di halaman itu adalah happyhorse-1.1-i2v, dirilis 16 Juni 2026. Beberapa situs memakai nama "Happy Horse 1.5".

Apakah HappyHorse 1.1 lebih baik dari 1.0 untuk gambar ke video?

Alibaba menyebut 1.1 meningkatkan kualitas gambar, penyampaian gerakan, dan konsistensi antar klip, dan halaman harganya mencantumkan tingkat 480P hanya untuk 1.1. Versi 1.1 rilis 16 Juni 2026 dan 1.0 rilis 22 April 2026. Di tarif Singapura Alibaba, 1080P berbiaya $0.18 per detik di 1.1 dan $0.24 di 1.0.

Sumber yang diperiksa

Dokumentasi OmniaKey sendiri, diperiksa 2 November 2026: API video dan ikhtisar API media.

Model di artikel ini

HappyHorse 1.1gambar ke videovideo AIAPI videoPython

Artikel terkait

Artikel terbaru

Panduan populer