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 $ לכל שנייה ברזולוציית 1080p
- פלט
- 0.07 $ לכל שנייה ברזולוציית 480p
- פלט
- 0.14 $ לכל שנייה ברזולוציית 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 $ לכל שנייה ברזולוציית 1080p
- פלט
- 0.07 $ לכל שנייה ברזולוציית 480p
- פלט
- 0.14 $ לכל שנייה ברזולוציית 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 $ לכל שנייה ברזולוציית 1080p
- פלט
- 0.07 $ לכל שנייה ברזולוציית 480p
- פלט
- 0.14 $ לכל שנייה ברזולוציית 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