طريقة استخدام Seedance API: المفتاح والطلب والاستعلام والمراجع
شرح استخدام Seedance API خطوة بخطوة: أنشئ مفتاحًا، وأرسل مهمة فيديو، واستعلم عنها لتحصل على رابط الفيديو، وأضف مراجع صور وفيديو وصوت، وسلّمها إلى وكيل.
اقرأ بصيغة Markdownلاستخدام Seedance API، أنشئ مفتاح API، وأرسل جسم مهمة الفيديو الرسمي الخاص بـ ModelArk إلى نقطة نهاية واحدة، ثم استعلم عن المهمة التي تُعاد إليك حتى يصبح رابط الفيديو جاهزًا. وتنطبق الخطوات نفسها على Seedance 2.0 وSeedance 2.0 Fast وSeedance 2.0 Mini وSeedance 2.5؛ ولا يتغيّر سوى قيمة model وبعض الحدود الخاصة بكل نموذج.
يشرح هذا الدليل كل خطوة بشفرة تعمل، ثم يوضّح كيفية إضافة المراجع، وتحرير مقطع باستخدام Seedance 2.5، وتسليم المهمة إلى وكيل برمجة.
ما الذي تحتاجه قبل الطلب الأول؟
- مفتاح API. أنشئ مفتاحًا في صفحة مفاتيح API واحتفظ به على خادمك. لا تضعه أبدًا في شفرة المتصفح.
- الرصيد. أضف رصيدًا في صفحة الفوترة. الرصيد لا تنتهي صلاحيته، والمهام الفاشلة لا تُحتسب.
- معرّف النموذج. اختر واحدًا من الجدول أدناه.
| معرّف النموذج | النموذج | الدقات | طول المقطع |
|---|---|---|---|
dreamina-seedance-2-0 | Seedance 2.0 | من 480p حتى 4K | 4–15 ثانية |
dreamina-seedance-2-0-fast | Seedance 2.0 Fast | 480p و720p | 4–15 ثانية |
dreamina-seedance-2-0-mini | Seedance 2.0 Mini | 480p و720p | 4–15 ثانية |
dreamina-seedance-2-5 | Seedance 2.5 | من 480p حتى 1080p | 4–30 ثانية |
لست متأكدًا أيها تختار؟ يقارن بينها دليل Seedance 2.0 وFast وMini ودليل Seedance 2.5 مقابل 2.0.
export SEEDROUTER_API_KEY="your-key"كيف ترسل طلب Seedance؟
أرسل المهمة بطريقة POST إلى /v1/contents/generations/tasks. الجسم هو طلب "create a video generation task" (إنشاء مهمة توليد فيديو) الرسمي في ModelArk:
curl https://api.seedrouter.ai/v1/contents/generations/tasks \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-0",
"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
}'الاستجابة معرّف مهمة، لا فيديو:
{"id": "task_..."}إذا كنت تستدعي ModelArk بالفعل، فغيّر عنوان URL الأساسي فقط إلى https://api.seedrouter.ai/v1 ومفتاح API. تُرفض الحقول غير المعروفة قبل أي احتساب، وكذلك الإعداد الذي لا يدعمه النموذج، مثل 1080p على Fast أو Mini.
كيف تحصل على الفيديو؟
استعلم عن المهمة كل 10 إلى 20 ثانية حتى تصبح قيمة status هي succeeded أو failed أو expired. ويستغرق مقطع مدته 5 ثوانٍ بدقة 720p عادةً دقيقتين إلى ثلاث دقائق. بلغة Python:
import os
import time
import requests
API = "https://api.seedrouter.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}
response = requests.post(
f"{API}/contents/generations/tasks",
headers=headers,
json={
"model": "dreamina-seedance-2-0",
"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,
},
timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]
deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
result = requests.get(f"{API}/contents/generations/tasks/{task_id}", headers=headers, timeout=30)
result.raise_for_status()
task = result.json()
if task["status"] == "succeeded":
print(task["content"]["video_url"])
break
if task["status"] in ("failed", "expired"):
raise RuntimeError(task["error"]["message"])
time.sleep(15)
else:
raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")المهمة الناجحة تحمل الفيديو في content.video_url، وتوكنات الفيديو المحتسبة في usage.completion_tokens، والإعدادات التي أُنتج بها الفيديو فعلًا، بما فيها قيمة seed التي اختارها النموذج. والفيديو مستضاف على وحدة التخزين لدينا؛ نزّله إلى وحدة تخزينك إذا كنت تحتاجه على المدى الطويل.
انتهاء المهلة أثناء الاستعلام لا يعني أن الفيديو فشل. احتفظ بمعرّف المهمة وتحقّق منها مجددًا؛ فإرسال مهمة جديدة يعني الدفع مقابل فيديو ثانٍ. ولا يوجد رابط callback، لذا فالاستعلام هو طريقة الحصول على النتيجة، ولا يمكن إلغاء مهمة أُرسلت.
كيف تضيف صورًا ومقاطع فيديو وصوتًا؟
أضف عناصر إلى content، لكل منها رابط عام وrole:
curl https://api.seedrouter.ai/v1/contents/generations/tasks \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-0",
"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
}'| الوضع | ما يوضع في content |
|---|---|
| من نص إلى فيديو | عنصر نصي واحد |
| الإطار الأول | نص مع صورة واحدة بالدور first_frame |
| الإطار الأول والأخير | نص مع صورة first_frame واحدة وصورة last_frame واحدة |
| المراجع | نص مع أي مزيج من reference_image وreference_video وreference_audio |
يقبل Seedance 2.0 ونسختاه Fast وMini ما يصل إلى 9 صور مرجعية و3 مقاطع فيديو و3 مسارات صوتية؛ ويقبل Seedance 2.5 ما يصل إلى 30 و10 و10. ويجب أن تكون الوسائط روابط URL: لا يُقبل base64 ولا رفع الملفات. ولا يدعم النموذج الصور ومقاطع الفيديو المرجعية التي تظهر فيها وجوه بشرية حقيقية. وتُفحص الوسائط عند بدء المهمة، والملف الذي يخالف أحد الحدود يُفشل المهمة قبل أي توليد، دون احتساب.
كيف تحرّر مقطعًا أو تمدّده باستخدام Seedance 2.5؟
أرسل المقطع بصفته reference_video واضبط omni_reference_task_type:
{
"model": "dreamina-seedance-2-5",
"content": [
{"type": "text", "text": "Change the jacket to red. Keep everything else the same."},
{"type": "video_url", "video_url": {"url": "https://example.com/clip.mp4"}, "role": "reference_video"}
],
"omni_reference_task_type": "edit"
}استخدم edit لتغيير ما في اللقطات، وextend لمتابعتها بعد إطارها الأخير. في edit اترك duration على قيمتها الافتراضية -1؛ وفي كليهما اترك ratio على adaptive. وتُحتسب ثواني المدخلات بالسعر المرجعي، كما يشرح دليل الأسعار.
كيف تدع وكيل برمجة يستخدم Seedance API؟
يستطيع وكيل برمجة مثل Claude Code أو Codex أو Cursor استدعاء API بأمر shell أو سكربت قصير. لا يوفّر SeedRouter خادم MCP ولا skill جاهزة ولا عقدة ComfyUI؛ هذا الموجّه هو التكامل كله. صدّر المفتاح أولًا، ثم الصق:
Use the SeedRouter API to generate a Seedance video for me.
Security: read SEEDROUTER_API_KEY from my local environment. Never ask me to paste it and never print it.
Goal: [subject, action, camera move, lighting, what the clip is for]
Model: [dreamina-seedance-2-0 | dreamina-seedance-2-0-fast | dreamina-seedance-2-0-mini | dreamina-seedance-2-5]
Resolution: [480p | 720p | 1080p | 4k] Ratio: [16:9 | 9:16 | 1:1 | adaptive] Duration: [seconds]
References: [public image, video or audio URLs with their roles, or none]
Send POST https://api.seedrouter.ai/v1/contents/generations/tasks with
{"model": "...",
"content": [{"type": "text", "text": "..."}],
"resolution": "...", "ratio": "...", "duration": 5}
Media goes in content as image_url, video_url or audio_url items with a role,
never base64. Do not add fields that are not in the API reference.
Before sending, show me the request body and wait for my approval: each
task is charged. Then poll GET https://api.seedrouter.ai/v1/contents/generations/tasks/{id}
every 15 seconds until status is succeeded, failed or expired. If polling
times out, keep checking the same task; never resubmit. Save
content.video_url into ./videos/ and tell me the file path.خطوة الموافقة مهمة: فالوكيل ينفق من رصيدك، لذا لا ينبغي أن يرسل أي مهمة من تلقاء نفسه.
الأسئلة الشائعة
كيف أحصل على مفتاح Seedance API؟
سجّل الدخول، وافتح صفحة مفاتيح API وأنشئ مفتاحًا. يعمل المفتاح نفسه مع كل نماذج Seedance ومع النماذج الأخرى على SeedRouter.
أين توثيق Seedance API؟
يسرد مرجعا API الخاصان بـ Seedance 2.0 وSeedance 2.5 كل حقل وحدّ وخطأ، مع أمثلة بـ cURL وPython وNode.js وGo، إضافة إلى ملف OpenAPI ونسخة Markdown قابلة للنسخ.
هل يمكنني توليد عدة مقاطع فيديو في وقت واحد؟
أرسل مهمة واحدة لكل فيديو واستعلم عن المهام بالتوازي. تعيد كل مهمة فيديو واحدًا وتُحتسب وحدها. ولعرض المهام الأخيرة، استدعِ GET /v1/contents/generations/tasks مع page_num وpage_size ومرشّحات مثل filter.status.
ما الأخطاء التي يجب أن أعالجها؟
يعني الرمز 400 أن الجسم خالف قاعدة ما، مثل حقل غير معروف أو دقة غير مدعومة، ولا يُحتسب شيء. والمهمة التي تنتهي بحالة failed أو expired تحمل رمز خطأ ورسالة، ولا تُحتسب هي الأخرى. ويسرد دليل الأخطاء كل رمز ومتى تعيد المحاولة.
أرسل طلبك الأول
أنشئ مفتاحًا، وأضف رصيدًا صغيرًا، وشغّل مثال Python أعلاه، أو جرّب الطلب نفسه دون أي شفرة في Playground الخاص بـ Seedance 2.0. وللمقاطع الأطول والتحرير، غيّر النموذج إلى dreamina-seedance-2-5 وراجع صفحة Seedance 2.5.



