happyhorse-1.1-i2v
نموذج لتحريك الصور: تحدد الصورة الأصلية الإطار الأول، بينما يوجّه الوصف الحركة اللاحقة. ينشئ فيديو قصيرًا مع إمكانية إرفاق صوت.
- Ailoot · فيديو
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · فيديو
POST /v1/videos/generationshappyhorse-i2v - Ailoot · فيديو
POST /v1/videos/generationshappyhorse-i2v-latest
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في 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-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-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
بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.
الباقات
تعرفات طرائق Ailoot
POST /v1/videos/generations- الإخراج
- 0.18 US$ لكل ثانية بدقة 1080p
- الإخراج
- 0.07 US$ لكل ثانية بدقة 480p
- الإخراج
- 0.14 US$ لكل ثانية بدقة 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}/contentGET /v1/videos/generations/{request_id}/content
التحقق من حالة المهمة
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
حفظ جميع الأصول المكتملة
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
عمليات أخرى لقراءة المحتوى
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 الخاص به الذي تم إرجاعه فعليًا.
احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير 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 | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
الاستجابةserver_error | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
Ailoot · فيديو POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-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
بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.
الباقات
تعرفات طرائق Ailoot
POST /v1/videos/generations- الإخراج
- 0.18 US$ لكل ثانية بدقة 1080p
- الإخراج
- 0.07 US$ لكل ثانية بدقة 480p
- الإخراج
- 0.14 US$ لكل ثانية بدقة 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}/contentGET /v1/videos/generations/{request_id}/content
التحقق من حالة المهمة
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
حفظ جميع الأصول المكتملة
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
عمليات أخرى لقراءة المحتوى
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 الخاص به الذي تم إرجاعه فعليًا.
احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير 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 | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
الاستجابةserver_error | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
Ailoot · فيديو POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-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
بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.
الباقات
تعرفات طرائق Ailoot
POST /v1/videos/generations- الإخراج
- 0.18 US$ لكل ثانية بدقة 1080p
- الإخراج
- 0.07 US$ لكل ثانية بدقة 480p
- الإخراج
- 0.14 US$ لكل ثانية بدقة 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}/contentGET /v1/videos/generations/{request_id}/content
التحقق من حالة المهمة
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
حفظ جميع الأصول المكتملة
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
عمليات أخرى لقراءة المحتوى
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 الخاص به الذي تم إرجاعه فعليًا.
احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير 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 | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
الاستجابةserver_error | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
FAQ · happyhorse-1.1-i2v
- ما المدخلات والنتائج المتاحة؟
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- ما الحقول التي يستخدمها الطلب؟
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- ما الحدود المطبقة؟
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