Video
Seedance 2.5
יצירה, עריכה והארכה של וידאו עם Seedance 2.5 דרך ה-API הרשמי של משימות ModelArk: עד 30 שניות ב-1080p, עם עד 30 ייחוסי תמונה, 10 ייחוסי וידאו ו-10 ייחוסי אודיו.
Seedance 2.5 הוא מודל יצירת הווידאו החדש ביותר של ByteDance (Dreamina Seedance 2.5). שלח את גוף המשימה הרשמי של ModelArk אל POST /v1/videos/generations, שמור את מזהה המשימה שהוחזר, וקרא את הווידאו המוכן מ-GET /v1/tasks/{id}. תמונות, סרטוני וידאו ואודיו נשלחים ב-content ככתובות URL.
מזהי מודל
| מזהה מודל | רזולוציות | אורך |
|---|---|---|
dreamina-seedance-2-5 | 480p, 720p, 1080p | 4–30 שניות, או אוטומטי |
המחירים הנוכחיים מופיעים בדף המודל.
דוגמה מהירה
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5",
"content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true
}'נקודת קצה
POST https://api.seedrouter.ai/v1/videos/generations| כותרת | ערך |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
גוף הבקשה הוא בקשת "יצירת משימת יצירת וידאו" הרשמית של ModelArk; זו אותה נקודת קצה שכל מודל וידאו של SeedRouter משתמש בה. התשובה היא המשימה החדשה (id, status: "processing"), ולא הווידאו המוכן. שמור את מפתחות ה-API בקוד שרץ בצד השרת.
פרמטרים
| שם | סוג | חובה | ברירת מחדל | הערות |
|---|---|---|---|---|
model | string | כן | — | dreamina-seedance-2-5. |
content | object[] | כן | — | ההנחיה והמדיה; ראה בהמשך. |
draft | boolean | לא | false | true יוצר טיוטה ב-480p. |
resolution | enum | לא | 480p, 720p, 1080p. ברירת המחדל היא 720p ביצירה רגילה ו-480p בטיוטה. ביצירת סרטון סופי מתוך טיוטה חובה לציין 1080p במפורש. | 480p, 720p, 1080p. |
ratio | enum | לא | adaptive | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. חייב להיות adaptive (או מושמט) כשיש פריים ראשון, וכן ב-edit וב-extend. |
duration | integer | לא | -1 | בין 4 ל-30 שניות, או -1 כדי לתת למודל לבחור. ב-edit חייב להיות -1. |
generate_audio | boolean | לא | true | יצירת סאונד יחד עם הווידאו. |
watermark | boolean | לא | false | הוספת סימן מים. |
return_last_frame | boolean | לא | false | החזרת הפריים האחרון גם ככתובת URL של תמונה. |
output_format | enum | לא | mp4 | mp4 או mov. |
omni_reference_task_type | enum | לא | auto | auto, reference, edit, extend. edit ו-extend דורשים סרטון ייחוס. |
execution_expires_after | integer | לא | 172800 | בין 3600 ל-259200 שניות. משימה שעדיין לא הסתיימה אחרי הזמן הזה משמעה עם task_expired ואינה מחויבת. |
priority | integer | לא | 0 | בין 0 ל-9. |
safety_identifier | string | לא | — | בין 1 ל-64 תווים שמזהים את משתמש הקצה שלך. אפשר להשתמש בגיבוב. |
service_tier | enum | לא | default | רק default. |
content_filter | boolean | לא | true | הרחבה של SeedRouter. false מכבה את סינון התוכן בבקשה הזו. |
פריטי content
| פריט | מבנה | תפקיד | מגבלה |
|---|---|---|---|
| טקסט | {"type": "text", "text": "..."} | — | אחד. |
| תמונה | {"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."} | first_frame, last_frame, reference_image | עד 30 תמונות ייחוס. |
| וידאו | {"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"} | reference_video | עד 10. |
| אודיו | {"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"} | reference_audio | עד 10. |
שדות לא מוכרים נדחים. לא נתמכים: seed, callback_url (תשאל את המשימה במקום זאת), tools, וכן frames ו-camera_fixed שקיימים רק ב-1.x. לא ניתן לבטל או למחוק משימות.
מצבים
המצב נקבע לפי פריטי content; אין פרמטר מצב.
| מצב | content |
|---|---|
| טקסט לווידאו | פריט טקסט אחד |
| פריים ראשון | טקסט (אופציונלי) + תמונה אחת עם התפקיד first_frame, או תמונה אחת בלי תפקיד |
| פריים ראשון ואחרון | טקסט (אופציונלי) + תמונת first_frame אחת + תמונת last_frame אחת |
| ייחוס מולטימודלי | טקסט + כל שילוב של פריטי reference_image, reference_video ו-reference_audio |
| עריכת וידאו | טקסט + reference_video אחד, עם omni_reference_task_type: "edit" |
| הארכת וידאו | טקסט + reference_video אחד, עם omni_reference_task_type: "extend" |
אי אפשר לשלב מצבי פריים ראשון עם פריטי ייחוס. כשיש כמה תמונות או מדיה מסוג אחר, לכל תמונה נדרש role.
דוגמת ייחוס
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5",
"content": [
{"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
{"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
{"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
],
"ratio": "adaptive",
"duration": 8
}'החלף את כתובות הדוגמה בקבצים שלך שניתן לגשת אליהם.
קלטי מדיה
ה-API הזה מקבל הפניות בכתובת URL בלבד. base64, כתובות data:, מזהי asset:// והעלאות multipart אינם מתקבלים. Playground מעלה את הקבצים שנבחרו לאחסון ורק אז שולח את הכתובות שלהם.
המדיה חייבת להגיע מכתובות HTTP(S) ציבוריות ולעמוד במגבלות הרשמיות של המודל:
| מדיה | פורמטים | מגבלות |
|---|---|---|
| תמונה | JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF | פחות מ-30 MB; רוחב וגובה 300–6000 px; יחס גובה-רוחב (רוחב / גובה) 0.4–2.5; 1–30 תמונות ייחוס |
| וידאו | MP4, MOV (H.264 או H.265) | 2–30 שניות כל אחד (4–30 שניות ב-edit), עד 10, לכל היותר 30 שניות בסך הכול; לכל היותר 200 MB; 24–60 FPS; רוחב וגובה 300–6000 px; יחס גובה-רוחב 0.4–2.5; 407,696–8,295,044 פיקסלים (רוחב × גובה) |
| אודיו | WAV, MP3 | 2–30 שניות כל אחד, עד 10, לכל היותר 30 שניות בסך הכול; לכל היותר 15 MB |
המודל אינו תומך בתמונות ייחוס ובסרטוני ייחוס שמופיעות בהם פנים אנושיות אמיתיות.
המדיה נבדקת כשהמשימה מתחילה, לפני כל יצירה. משימה שהמדיה שלה חורגת מאחת המגבלות האלה מסתיימת במצב failed עם invalid_request_error והודעה שמציינת את הכלל, למשל The request was rejected: content reference videos must total at most 15 seconds., ואינה מחויבת. קובץ שלא ניתן לקרוא בשלב הזה מועבר למודל, שמקבל או דוחה אותו; בכל מקרה, משימה שנכשלה אינה מחויבת.
גורמי עלות
בדוק את מדור המחירים של המודל לתעריפים הנוכחיים. Seedance 2.5 מחייב לפי טוקני וידאו, יחידת החיוב הרשמית:
video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024התעריף למיליון טוקנים תלוי ברזולוציית הפלט ובשאלה אם הבקשה כוללת סרטון ייחוס; בבקשה עם סרטון ייחוס כל הטוקנים מחויבים בתעריף נמוך יותר. קלטי טקסט, תמונה ואודיו אינם מחויבים. ביחס 16:9, שנייה אחת היא 9,607.5 טוקנים ב-480p (854×480), 21,600 ב-720p, 48,600 ב-1080p.
על בקשות עם סרטוני ייחוס חל גם סף מינימלי של טוקנים. לצורך הערכת העלות, השתמש בנוסחה במשך ייחוס של לפחות ceil(output seconds × 2 / 3) שניות, גם אם סרטוני הייחוס המקוריים קצרים יותר. הכלל הזה חל גם על משימות טיוטה וגם על משימות של סרטון סופי; סרטון הטיוטה עצמו אינו הופך לסרטון ייחוס. החיוב בפועל נקבע לפי השימוש שעליו מדווחת המשימה שהושלמה.
החיוב נקבע לפי הטוקנים שהווידאו המוכן מדווח (output.usage.completion_tokens), ולכן duration: -1 מחויב לפי האורך שנוצר בפועל. קטעים מרונדרים ארוכים מעט מהאורך המבוקש: בקשה של 5 שניות ב-720p וביחס 16:9 מרנדרת 121 פריימים ומדווחת 108,900 טוקנים ולא 108,000. את החיובים הסופיים תראה בהיסטוריית השימוש של החשבון שלך. משימות שנכשלו אינן מחויבות.
מבנה הפלט
השליחה מחזירה את המשימה החדשה:
{"id": "task_...", "model": "dreamina-seedance-2-5", "status": "processing", "created_at": 1790321515}קבלת המשימה
curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"תשאל כל 10–20 שניות עד ש-status יהיה completed או failed. פקיעת זמן ברשת במהלך התשאול אינה מעידה שהיצירה נכשלה: שמור את מזהה המשימה והמשך בבדיקה. אל תיצור משימה נוספת כדי לבדוק התקדמות.
דוגמת תשאול מלאה
הרץ זאת אחרי דוגמת השליחה ב-Python שלמעלה.
import time
deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
result = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
timeout=30,
)
result.raise_for_status()
task = result.json()
if task["status"] == "completed":
print(task["output"]["video_url"])
break
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
time.sleep(15)
else:
raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")משימה שהסתיימה
{
"id": "task_...",
"model": "dreamina-seedance-2-5",
"status": "completed",
"created_at": 1790321515,
"finished_at": 1790321652,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
"last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg",
"content": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
"last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
},
"usage": {"completion_tokens": 108900, "total_tokens": 108900},
"seed": 42,
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"framespersecond": 24,
"generate_audio": true,
"draft": false,
"output_format": "mp4",
"service_tier": "default",
"execution_expires_after": 172800,
"priority": 0
}
}| שדה | משמעות |
|---|---|
id | שמור את המזהה הזה לתשאולים הבאים. |
status | processing, completed או failed. |
output.video_url | הווידאו שנוצר. |
output.last_frame_url | הפריים האחרון, כש-return_last_frame הוא true. |
output.content | אותם כתובות בצורת ModelArk הרשמית. |
output.usage.completion_tokens | טוקני הווידאו של הווידאו המוכן; זו הכמות שמחויבת. |
output.duration, output.resolution, output.ratio, output.framespersecond, output.seed | מה שרונדר בפועל; seed הוא הערך שהמודל בחר. |
created_at, finished_at | חותמות זמן Unix בשניות. |
error | {"code", "message"} במשימה שנכשלה. |
כתובות הווידאו מאוחסנות באחסון שלנו. שמור את הקובץ באחסון שלך אם אתה צריך עותק קבוע.
שגיאות
בקשות שנדחות לפני יצירת המשימה מחזירות שגיאת HTTP יחד עם אובייקט error ואינן מחויבות. משימה שנכשלת לאחר שהתקבלה מחזירה בתשאול HTTP 200, עם status: "failed" ואובייקט error. פלט שנחסם על ידי סינון התוכן נכשל עם content_policy_violation; משימה שנמשכת מעבר ל-execution_expires_after משמעה עם task_expired.
ראה את קטלוג השגיאות המשותף לקודים, לסטטוסי HTTP ולהנחיות ניסיון חוזר.
{
"id": "task_...",
"model": "dreamina-seedance-2-5",
"status": "failed",
"error": {
"code": 60001,
"message": "The request was rejected by the content policy. Please revise the prompt or input images."
}
}אם השליחה עצמה חורגת מהזמן הקצוב, בדוק את היסטוריית המשימות שלך לפני שליחה חוזרת: ייתכן שהבקשה הראשונה כבר התקבלה.
טיפים
- תאר במשפטים מלאים את הנושא, את הפעולה, את תנועת המצלמה ואת התאורה.
- צור טיוטה ב-480p עם
durationקצר, ואז רנדר את הגרסה שבחרת ברזולוציה גבוהה יותר. - שרשר שוטים בעזרת
return_last_frame: השתמש בפריים שהוחזר כ-first_frameשל המשימה הבאה. - כדי לערוך צילומים, הגדר את
omni_reference_task_typeל-editותאר רק את מה שצריך להשתנות.
קישורים רלוונטיים
תצוגה מקדימה כטיוטה וסרטון סופי
הגדר draft: true כדי ליצור תצוגה מקדימה ב-480p. רזולוציות אחרות אינן תקינות במצב טיוטה. חישוב השימוש בטוקנים והמחיר ליחידה זהים לאלו של יצירה רגילה ב-480p.
{
"model": "dreamina-seedance-2-5",
"content": [{ "type": "text", "text": "A fox walks through a sunny garden." }],
"draft": true,
"resolution": "480p",
"duration": 4,
"ratio": "16:9"
}בדוק שוב ושוב את מזהה משימת SeedRouter שהוחזר, עד ש-status יהיה completed ו-output.draft יהיה true. בתוך 7 ימים מיצירת הטיוטה, שלח בקשה נפרדת עם המזהה הזה:
{
"model": "dreamina-seedance-2-5",
"content": [{ "type": "draft_task", "draft_task": { "id": "task_YOUR_DRAFT_ID" } }],
"resolution": "1080p"
}הטיוטה חייבת להשתייך לחשבון שלך, להסתיים בהצלחה ולהשתמש באותו מודל. content חייב להכיל פריט draft_task אחד בלבד. הגדר את resolution במפורש ל-1080p; השמט את draft או הגדר אותו ל-false. אל תשלח שוב duration, ratio, seed, generate_audio, omni_reference_task_type, טקסט או מדיה, גם אם הערכים זהים. ההגדרות האלה עוברות בירושה מהטיוטה.
במשימה החדשה אפשר להגדיר watermark, return_last_frame, output_format, execution_expires_after, priority, safety_identifier ו-service_tier: "default". אפשרויות פלט שלא צוינו משתמשות בערכי ברירת המחדל שלהן. content_filter עובר בירושה ואי אפשר לשנות אותו. יצירה מוצלחת של הסרטון הסופי מחזירה מזהה משימה חדש, output.draft: false ו-output.draft_task_id שמכיל את מזהה טיוטת SeedRouter המקורית שלך. אפשר להשתמש באותה טיוטה לכמה יצירות סופיות נפרדות לפני שפג תוקפה.
הטיוטה והסרטון הסופי מחויבים בנפרד. הסרטון הסופי משתמש בתעריף 1080p המתאים לקטגוריית הקלט של הטיוטה המקורית: אם הטיוטה השתמשה בסרטון ייחוס, גם הסרטון הסופי משתמש בתעריף הכולל סרטון ייחוס, ומשך סרטון הייחוס המקורי נכלל בחישוב השימוש בטוקנים. סרטון הטיוטה עצמו אינו נספר כסרטון קלט נוסף. כל משימה משתמשת במחיר התקף בעת שליחתה. בקשות שנכשלו אינן מחויבות.
