happyhorse-1.1-i2v
Model untuk menghidupkan gambar: gambar sumber menjadi bingkai pertama, sedangkan deskripsi mengarahkan gerakan selanjutnya. Menghasilkan video pendek dengan opsi audio pengiring.
- Ailoot · Pemrosesan video
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · Pemrosesan video
POST /v1/videos/generationshappyhorse-i2v - Ailoot · Pemrosesan video
POST /v1/videos/generationshappyhorse-i2v-latest
Tentang model
Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.
HappyHorse-1.1-I2V adalah model Alibaba yang memulai adegan video dari gambar yang sudah ada. Gambar menjadi bingkai pertama, sedangkan teks dapat menentukan tindakan berikutnya: gerakan tokoh, perubahan adegan, dan arah kamera. Cocok untuk menghidupkan ilustrasi, foto produk, atau konsep visual yang telah disiapkan.
Deskripsi teks bersifat opsional. Jika tidak diberikan, model menyimpulkan gerakan yang mungkin dari isi gambar awal. Saat deskripsi diberikan secara eksplisit, gambar sumber menentukan komposisi dan penampilan objek, sedangkan kata-kata mengarahkan perkembangan adegan dari waktu ke waktu.
Dari bingkai pertama ke gerakan
Alibaba menyoroti pelestarian tampilan karakter, keselarasan visual, gerakan yang halus, serta perpaduan gambar dan suara. Sasaran yang diklaim juga mencakup kestabilan tulisan dan tekstur. Sifat-sifat ini menjelaskan tujuan rancangan model dan tidak berarti setiap piksel akan dipertahankan secara persis pada semua bingkai yang dihasilkan.
Mode ini menggunakan satu gambar awal. Gambar tersebut menentukan adegan awal, bukan sekumpulan contoh terpisah untuk komposisi baru. Kemampuan menentukan bingkai akhir secara terpisah tidak dinyatakan untuk versi ini.
JPEG, JPG, PNG, dan WEBP diterima. Setiap sisi gambar input harus minimal 300 piksel; rasio aspek yang diizinkan dari 1:2,5 hingga 2,5:1, ukuran file hingga 20 MB. Rasio aspek video hasil mengikuti bingkai pertama.
Parameter video
Durasi dipilih sebagai bilangan bulat dari 3 hingga 15 detik. Tersedia resolusi 480P, 720P, dan 1080P; format output MP4 dengan 24 bingkai per detik. Pembuatan audio pengiring bersama video didukung.
Deskripsi dapat menggunakan bahasa apa pun dan memuat hingga 5000 karakter non-Tionghoa atau 2500 karakter Tionghoa. Jika batas terlampaui, bagian berlebih dibuang, jadi tindakan penting dan detail gerakan sebaiknya dijelaskan dalam batas tersebut. Nilai seed acak awal yang sama dapat menghasilkan video yang mirip, tetapi tidak menjamin kecocokan bingkai demi bingkai.
Ailoot · Pemrosesan video POST /v1/videos/generations happyhorse-1.1-i2v
happyhorse-1.1-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Mulai
Model untuk menghidupkan gambar: gambar sumber menjadi bingkai pertama, sedangkan deskripsi mengarahkan gerakan selanjutnya. Menghasilkan video pendek dengan opsi audio pengiring.
- Masukan yang diterima
- Teks · Gambar
- Hasil
- Video
Tersedia di Ailoot · masukan & metode
Ailoot · Pemrosesan video POST /v1/videos/generations
- Masukan
text,image- Keluaran
video- Format keluaran
- mp4
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan happyhorse-1.1-i2v | Bawaan— |
Kolomprompt | Jenisstring | PersyaratanOpsional | Nilai & batasan Panjang minimum: 1 | Bawaan— |
Kolomduration | Jenisinteger | PersyaratanOpsional | Nilai & batasan Minimum: 3 Maksimum: 15 Satuan: detik | Bawaan5 |
Kolomresolution | Jenisstring | PersyaratanOpsional | Nilai & batasan 480P, 720P, 1080P | Bawaan720P |
Kolomratio | Jenisstring | PersyaratanTidak didukung | Nilai & batasan | Bawaan— |
Kolomimage_urls | Jenishttps_url|data_image_url[] | PersyaratanWajib | Nilai & batasan Item minimum: 1 Item maksimum: 1 Byte terdekode maksimum: 20.971.520 Jenis MIME: image/jpeg, image/png, image/webp | Bawaan— |
Kombinasi bahan masukan
first_frame_to_video · Wajib: image_urls
Parameter metode dan siklus hidup
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, image_urls |
Parametermaterial_types | Kontraktext, image |
Parameteroptional | Kontrakduration, resolution, ratio, prompt |
Parameterduration_integer_range | Kontrak3, 15 |
Parameterdefault_duration | Kontrak5 |
Parameterresolution | Kontrak480P, 720P, 1080P |
Parameterdefault_resolution | Kontrak720P |
Parameterratio | Kontrak |
Parameterratio_must_omit | Kontraktrue |
Parameterimage_urls | Kontrak{"min_count":1,"max_count":1,"schemes":["https","data raster dalam base64"],"max_data_image_bytes":20971520} |
Siklus hidup: 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
Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.
Paket
Tarif metode Ailoot
POST /v1/videos/generations- Keluaran
- US$0,18 per detik pada 1080p
- Keluaran
- US$0,07 per detik pada 480p
- Keluaran
- US$0,14 per detik pada 720p
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Contoh permintaan
Ailoot · Pemrosesan video
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
Terima dan simpan hasil
Ailoot · Pemrosesan video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Periksa status tugas
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
Simpan semua aset yang selesai
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
Pembacaan konten lain
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
Simpan semua hasil yang selesai
Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.
Pertahankan setiap item data/indeks keluaran yang dikembalikan. content_url hanya menunjuk yang pertama; ambil setiap jalur konten/aset aktual. GET content tanpa index tidak mencakup semua keluaran.
Jika respons asli perlu diperiksa
Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomid | Jenisstring |
Kolomobject | Jenisstring |
Kolommodel | Jenisstring |
Kolomstatus | Jenisstring |
Kolomcontent_url | Jenissigned URL |
Kolomdata[] | Jenissigned URL |
Kolomusage | Jenisobject |
Kolomresult_pending_check | Jenisboolean |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |
Respons409 · video_not_ready | KondisiKonten hasil awal belum tersedia | Langkah berikutnyaPeriksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After. |
Responsserver_error | KondisiRespons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa | Langkah berikutnyaSimpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan. |
Alias
Alias model
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
Ailoot · Pemrosesan video POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Mulai
Model untuk menghidupkan gambar: gambar sumber menjadi bingkai pertama, sedangkan deskripsi mengarahkan gerakan selanjutnya. Menghasilkan video pendek dengan opsi audio pengiring.
- Masukan yang diterima
- Teks · Gambar
- Hasil
- Video
Tersedia di Ailoot · masukan & metode
Ailoot · Pemrosesan video POST /v1/videos/generations
- Masukan
text,image- Keluaran
video- Format keluaran
- mp4
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan happyhorse-i2v | Bawaan— |
Kolomprompt | Jenisstring | PersyaratanOpsional | Nilai & batasan Panjang minimum: 1 | Bawaan— |
Kolomduration | Jenisinteger | PersyaratanOpsional | Nilai & batasan Minimum: 3 Maksimum: 15 Satuan: detik | Bawaan5 |
Kolomresolution | Jenisstring | PersyaratanOpsional | Nilai & batasan 480P, 720P, 1080P | Bawaan720P |
Kolomratio | Jenisstring | PersyaratanTidak didukung | Nilai & batasan | Bawaan— |
Kolomimage_urls | Jenishttps_url|data_image_url[] | PersyaratanWajib | Nilai & batasan Item minimum: 1 Item maksimum: 1 Byte terdekode maksimum: 20.971.520 Jenis MIME: image/jpeg, image/png, image/webp | Bawaan— |
Kombinasi bahan masukan
first_frame_to_video · Wajib: image_urls
Parameter metode dan siklus hidup
| Parameter | Kontrak |
|---|---|
Parametermaterial_types | Kontraktext, image |
Parameterrequired | Kontraknull |
Parameteroptional_controls | Kontraknull |
Siklus hidup: 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
Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.
Paket
Tarif metode Ailoot
POST /v1/videos/generations- Keluaran
- US$0,18 per detik pada 1080p
- Keluaran
- US$0,07 per detik pada 480p
- Keluaran
- US$0,14 per detik pada 720p
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Contoh permintaan
Ailoot · Pemrosesan video
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
Terima dan simpan hasil
Ailoot · Pemrosesan video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Periksa status tugas
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
Simpan semua aset yang selesai
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
Pembacaan konten lain
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
Simpan semua hasil yang selesai
Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.
Pertahankan setiap item data/indeks keluaran yang dikembalikan. content_url hanya menunjuk yang pertama; ambil setiap jalur konten/aset aktual. GET content tanpa index tidak mencakup semua keluaran.
Jika respons asli perlu diperiksa
Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomid | Jenisstring |
Kolomobject | Jenisstring |
Kolommodel | Jenisstring |
Kolomstatus | Jenisstring |
Kolomcontent_url | Jenissigned URL |
Kolomdata[] | Jenissigned URL |
Kolomusage | Jenisobject |
Kolomresult_pending_check | Jenisboolean |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |
Respons409 · video_not_ready | KondisiKonten hasil awal belum tersedia | Langkah berikutnyaPeriksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After. |
Responsserver_error | KondisiRespons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa | Langkah berikutnyaSimpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan. |
Alias
Alias model
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
Ailoot · Pemrosesan video POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Mulai
Model untuk menghidupkan gambar: gambar sumber menjadi bingkai pertama, sedangkan deskripsi mengarahkan gerakan selanjutnya. Menghasilkan video pendek dengan opsi audio pengiring.
- Masukan yang diterima
- Teks · Gambar
- Hasil
- Video
Tersedia di Ailoot · masukan & metode
Ailoot · Pemrosesan video POST /v1/videos/generations
- Masukan
text,image- Keluaran
video- Format keluaran
- mp4
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan happyhorse-i2v-latest | Bawaan— |
Kolomprompt | Jenisstring | PersyaratanOpsional | Nilai & batasan Panjang minimum: 1 | Bawaan— |
Kolomduration | Jenisinteger | PersyaratanOpsional | Nilai & batasan Minimum: 3 Maksimum: 15 Satuan: detik | Bawaan5 |
Kolomresolution | Jenisstring | PersyaratanOpsional | Nilai & batasan 480P, 720P, 1080P | Bawaan720P |
Kolomratio | Jenisstring | PersyaratanTidak didukung | Nilai & batasan | Bawaan— |
Kolomimage_urls | Jenishttps_url|data_image_url[] | PersyaratanWajib | Nilai & batasan Item minimum: 1 Item maksimum: 1 Byte terdekode maksimum: 20.971.520 Jenis MIME: image/jpeg, image/png, image/webp | Bawaan— |
Kombinasi bahan masukan
first_frame_to_video · Wajib: image_urls
Parameter metode dan siklus hidup
| Parameter | Kontrak |
|---|---|
Parametermaterial_types | Kontraktext, image |
Parameterrequired | Kontraknull |
Parameteroptional_controls | Kontraknull |
Siklus hidup: 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
Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.
Paket
Tarif metode Ailoot
POST /v1/videos/generations- Keluaran
- US$0,18 per detik pada 1080p
- Keluaran
- US$0,07 per detik pada 480p
- Keluaran
- US$0,14 per detik pada 720p
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Contoh permintaan
Ailoot · Pemrosesan video
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
Terima dan simpan hasil
Ailoot · Pemrosesan video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Periksa status tugas
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
Simpan semua aset yang selesai
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
Pembacaan konten lain
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
Simpan semua hasil yang selesai
Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.
Pertahankan setiap item data/indeks keluaran yang dikembalikan. content_url hanya menunjuk yang pertama; ambil setiap jalur konten/aset aktual. GET content tanpa index tidak mencakup semua keluaran.
Jika respons asli perlu diperiksa
Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomid | Jenisstring |
Kolomobject | Jenisstring |
Kolommodel | Jenisstring |
Kolomstatus | Jenisstring |
Kolomcontent_url | Jenissigned URL |
Kolomdata[] | Jenissigned URL |
Kolomusage | Jenisobject |
Kolomresult_pending_check | Jenisboolean |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |
Respons409 · video_not_ready | KondisiKonten hasil awal belum tersedia | Langkah berikutnyaPeriksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After. |
Responsserver_error | KondisiRespons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa | Langkah berikutnyaSimpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan. |
Alias
Alias model
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
FAQ · happyhorse-1.1-i2v
- Input dan hasil apa yang tersedia?
POST /v1/videos/generations·happyhorse-1.1-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v-latest:text,image→video- Kolom apa yang digunakan permintaan?
POST /v1/videos/generations·happyhorse-1.1-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v-latest:model,prompt,duration,resolution,image_urls- Batasan apa yang berlaku?
POST /v1/videos/generations·happyhorse-1.1-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v-latest:duration.minimum:3;duration.maximum:15