واجهة برمجة تطبيقات Seedance 2.0

قم بدمج إنشاء الفيديو في منتجك من خلال إنشاء المهام غير المتزامنة، واستقصاء الحالة، وخطافات الويب (webhooks)، والفوترة المدركة للرصيد.

عنوان URL الأساسي
https://api.seedance2.ai
في هذه الصفحة

مقدمة

تتيح لك واجهة برمجة التطبيقات إرسال مهام إنشاء الفيديو Seedance 2.0 برمجيًا. عملية الإنشاء غير متزامنة: قم بإنشاء مهمة، واستلم معرّف المهمة على الفور، ثم احصل على الفيديو النهائي عن طريق استقصاء نقطة نهاية المهمة أو عن طريق استلام webhook.

مهام غير متزامنة

يعمل الاستقصاء بشكل جيد للتطوير وعمليات التكامل البسيطة.

جاهز لخطافات الويب (Webhook ready)

يوصى باستخدام خطافات الويب (webhooks) للإنتاج لأنها تتجنب الاستقصاء المفرط وتُعلم خدمتك عندما تصل المهمة إلى حالة نهائية.

مدرك للائتمان

يتم حجز الأرصدة عند الإرسال. يتم خصم المهام الناجحة من هذا الحجز؛ ويتم رد الأموال للمهام الفاشلة أو التي انتهت مهلتها تلقائيًا.

المصادقة

أنشئ مفتاح API في لوحة التحكم وأرسله كرمز مميز من نوع Bearer في كل طلب. يظهر المفتاح بالكامل مرة واحدة فقط وقت الإنشاء.

Authorization: Bearer sk_live_xxxxxxxx
sk_live_

استخدم مفاتيح sk_live_ لحركة المرور الإنتاجية.

sk_test_

استخدم مفاتيح sk_test_ لاختبار التكامل في بيئة الاختبار المعزولة بنفس عقد API.

401

المفاتيح المفقودة أو غير الصالحة أو الملغاة تُرجع invalid_api_key مع رمز HTTP 401.

البدء السريع

أرسل مهمة أولاً. بعد قبول المهمة، اختر طريقة واحدة لتوصيل النتيجة: استقصاء نقطة نهاية المهمة، أو استلام النتيجة النهائية عبر webhook.

إرسال مهمة

أنشئ مهمة فيديو غير متزامنة واستلم معرّف المهمة على الفور.

curl https://api.seedance2.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cat surfing on a neon wave, cinematic lighting",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false,
      "seed": -1
    }
  }'
خيار النتيجة: الاستقصاء

جلب نقطة نهاية حالة المهمة عندما يفضل التكامل الخاص بك الاستقصاء الصريح.

curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"
خيار النتيجة: Webhook

إرسال callback_url عند إرسال المهمة، ثم استلام ردود الاتصال الخاصة بالانتهاء أو الفشل وتحديث سجل مهمتك الخاص.

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrl = callbackData.data.results[0];
    // Save the video URL or update your own task record here.
  }

  if (callbackData.status === "failed") {
    const errorMessage = callbackData.data.failed_reason;
    // Mark your own task record as failed here.
  }

  return new Response(null, { status: 200 });
}

إنشاء مهمة فيديو

أنشئ مهمة فيديو باستخدام POST /v1/videos/generations. يحتوي نص الطلب على نموذج على مستوى أعلى، و callback_url اختياري، وكائن إدخال يحتوي على إعدادات الموجه والإنشاء.

POST
/v1/videos/generations
curl https://api.seedance2.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cat surfing on a neon wave, cinematic lighting",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false,
      "seed": -1
    }
  }'

أوضاع الإنشاء

يتحكم generation_type في مدخلات الوسائط المقبولة وكيف يفسر النموذج هذه المدخلات.

الوضعالوسائط المطلوبةالوسائط الاختياريةملاحظات
text-to-videoالمطالبة (prompt)المدة، نسبة العرض إلى الارتفاع، الدقة، البذورمطالبة نصية فقط. image_urls، video_urls، و audio_urls غير مطلوبة.
image-to-videoمطالبة (prompt) + مصفوفة image_urls (1-2 عنوان URL للصورة)المدة، نسبة العرض إلى الارتفاع، الدقة، البذوريجب أن تكون image_urls مصفوفة. قم بتوفير عنوان URL واحد للصورة للإطار الأول، أو عنواني URL للصورة للإطارين الأول والأخير. يتم تجاهل الفيديو والصوت.
reference-to-videoمطالبة (prompt) + صورة واحدة على الأقل أو فيديوصور، مقاطع فيديو، وصوت ضمن حدود الموادلا يمكن استخدام الصوت بمفرده مع النص. أضف صورة واحدة على الأقل أو مقطع فيديو عند توفير الصوت.
text-to-video

استخدم تحويل النص إلى فيديو عندما يكون الموجه هو المدخل الإبداعي الوحيد. (text-to-video)

curl https://api.seedance2.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false,
      "seed": -1
    }
  }'
image-to-video

استخدم تحويل الصورة إلى فيديو عندما تكون input.image_urls مصفوفة تحتوي على عنواني URL للصورة 1-2: عنوان URL واحد يحدد الإطار الأول، وعنوانا URL يحددان الإطارين الأول والأخير. يتم تجاهل مراجع الفيديو والصوت في هذا الوضع. (image-to-video)

curl https://api.seedance2.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "input": {
      "prompt": "the subject turns toward camera, soft studio motion",
      "generation_type": "image-to-video",
      "image_urls": ["https://your.cdn.com/first-frame.jpg"],
      "duration": 5,
      "resolution": "720p"
    }
  }'
reference-to-video

استخدم تحويل المرجع إلى فيديو للحصول على توجيه أغنى باستخدام الصور ومقاطع الفيديو والصوت المرجعية. لا يمكن استخدام الصوت بمفرده مع النص؛ قم بتضمين صورة واحدة على الأقل أو مقطع فيديو عند توفير الصوت. (reference-to-video)

حدود المواد

  • حتى 9 صور مرجعية
  • حتى 3 مقاطع فيديو مرجعية، إجمالي المدة <= 15 ثانية
  • حتى 3 ملفات صوتية مرجعية، إجمالي المدة <= 15 ثانية
  • 12 مادة بحد أقصى في المجموع عبر جميع الأنواع

مجموعات المدخلات المدعومة

نص + صورة
نص + فيديو
نص + صورة + فيديو
نص + صورة + صوت
نص + فيديو + صوت
نص + صورة + فيديو + صوت
curl https://api.seedance2.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "input": {
      "prompt": "use the product from image 1 and the camera motion from the reference video",
      "generation_type": "reference-to-video",
      "image_urls": ["https://your.cdn.com/product.jpg"],
      "video_urls": ["https://your.cdn.com/camera-motion.mp4"],
      "audio_urls": [],
      "duration": 8,
      "resolution": "1080p"
    }
  }'

معلمات الطلب

أسماء المعلمات، وقيم التعداد، ومسارات نقطة النهاية، والأمثلة هي جزء من عقد واجهة برمجة التطبيقات. تشرح الأوصاف أدناه كيفية تصرف كل حقل.

الرؤوس

الرأسمطلوبالوصفمثال
Authorizationنعممفتاح API من نوع Bearer المستخدم لمصادقة الطلب.Bearer sk_live_xxx
Content-Typeنعمجميع طلبات الكتابة تستخدم JSON.application/json

الحقول على المستوى العلوي

الحقلالنوعمطلوبالافتراضيالنطاق / التعدادالأوضاعمثال
model

نموذج المتغير المستخدم للإنشاء.

stringنعم-seedance-2-0 | seedance-2-0-fastالكلseedance-2-0
callback_url

نقطة نهاية HTTPS التي تتلقى ردود اتصال إتمام المهمة وفشلها.

stringلا-عنوان URL لبروتوكول HTTPS، لا توجد شبكات خاصةالكلhttps://your-domain.com/hook
input

إعدادات الإنشاء ومراجع الوسائط.

objectنعم--الكل-

input.* الحقول

الحقلالنوعمطلوبالافتراضيالنطاق / التعدادالأوضاعمثال
input.prompt

موجه نصي يصف الفيديو المراد إنشاؤه.

stringنعم-نص غير فارغالكلa cat surfing
input.generation_type

وضع الإنشاء. الافتراضي هو النص إلى فيديو. (text-to-video)

stringلاtext-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

عناوين URL للصور التي يمكن الوصول إليها بشكل عام. لتحويل الصورة إلى فيديو، أرسل صورة واحدة للإطار الأول أو صورتين للإطارين الأول والأخير. لتحويل المرجع إلى فيديو، أرسل ما يصل إلى 9 صور كمراجع بصرية. (image-to-video) (reference-to-video)

string[]شرطي[]صورة إلى فيديو: 1 أو 2 صورة. مرجع إلى فيديو: حتى 9 صور. (image-to-video) (reference-to-video)image-to-video / reference-to-video["https://.../a.jpg"]
input.video_urls

مقاطع فيديو مرجعية يمكن الوصول إليها بشكل عام لتحويل المرجع إلى فيديو فقط. يمكنك إرسال ما يصل إلى 3 ملفات فيديو، ويجب أن يكون وقت التشغيل المدمج لها 15 ثانية أو أقل. (reference-to-video)

string[]لا[]حتى 3 مقاطع فيديو. يجب أن يكون طول الفيديو المجمع 15 ثانية أو أقل.reference-to-video[]
input.audio_urls

ملفات صوتية مرجعية يمكن الوصول إليها بشكل عام لتحويل المرجع إلى فيديو فقط. يمكنك إرسال ما يصل إلى 3 ملفات صوتية، ويجب أن يكون وقت التشغيل المدمج لها 15 ثانية أو أقل. (reference-to-video)

string[]لا[]حتى 3 ملفات صوتية. يجب أن يكون طول الصوت المجمع 15 ثانية أو أقل.reference-to-video[]
input.duration

طول الفيديو الناتج بالثواني.

intلا54-15 ثانيةالكل5
input.aspect_ratio

نسبة عرض إلى ارتفاع الإخراج. adaptive يسمح للخدمة باستنتاج أفضل نسبة.

stringلاadaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | تكيفيالكل16:9
input.resolution

مستوى دقة الإخراج.

stringلا720p480p | 720p | 1080pالكل720p
input.generate_audio

ما إذا كان يجب على النموذج إنشاء صوت عند دعمه.

booleanلاtrueصحيح | خطأالكلtrue
input.watermark

ما إذا كان سيتم إضافة علامة مائية.

booleanلاfalseصحيح | خطأالكلfalse
input.web_search

ما إذا كان سيسمح بتعزيز البحث عبر الويب عند دعمه.

booleanلاfalseصحيح | خطأالكلfalse
input.return_last_frame

ما إذا كان سيتم إرجاع عنوان URL للإطار الأخير عند توفره.

booleanلاfalseصحيح | خطأالكلfalse
input.seed

بذرة حتمية. استخدم -1 لبذرة عشوائية.

intلا-1-1 أو 0-4294967295الكل-1

تختلف الأرصدة حسب الدقة، والمدة، والنموذج، وما إذا كان التحويل من المرجع إلى الفيديو يتضمن مراجع فيديو. قيمة الأرصدة التي تُرجعها استجابة الإنشاء هي المبلغ الفعلي المحجوز لتلك المهمة. (reference-to-video)

عرض تسعيرة الائتمان

الاستجابة

هذه هي استجابة النجاح من POST /v1/videos/generations. وهذا يعني أنه تم قبول المهمة وتم حجز الأرصدة. استخدم taskId الذي تم إرجاعه لاستقصاء GET /v1/tasks/:id أو لمطابقة رد اتصال إكمال أو فشل.

POST /v1/videos/generations استجابة نجاح

{
  "taskId": "3f2aK9mR...",
  "credits": 60
}

الحصول على حالة المهمة

استخدم GET /v1/tasks/:id لاسترداد حالة المهمة الحالية. لا تستقصِ أكثر من مرة كل 10 ثوانٍ. بالنسبة لأنظمة الإنتاج، يفضل استخدام خطافات الويب (webhooks).

curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"

استجابة مهمة مكتملة

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-0",
  "billing_status": "charged",
  "credits": 60,
  "failed_reason": null,
  "data": {
    "results": ["https://cdn.seedance2.ai/.../x.mp4"],
    "video_expires_at": "2026-06-13T10:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

استجابة مهمة فاشلة

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-0",
  "billing_status": "refunded",
  "credits": 60,
  "failed_reason": "provider_failed"
}
القيمةالمعنى
status=queuedتم قبوله وينتظر الإرسال أو المعالجة.
status=generatingيقوم المزود بمعالجة الإنشاء.
status=completedاكتمل الفيديو وتحتوي data.results على عنوان URL للنتيجة.
status=failedفشل الإنشاء أو انتهت مهلته.
billing_status=reservedيتم حجز الأرصدة أثناء تقدم المهمة.
billing_status=chargedنجحت المهمة وتمت تسوية الحجز.
billing_status=refundedفشلت المهمة أو انتهت مهلتها وتم إرجاع الأرصدة.
billing_status=refund_failedفشلت معاملة استرداد الأموال وتحتاج إلى معالجة يدوية.

بعد video_expires_at، تكون data.results فارغة. قم بتنزيل وتخزين الملف قبل انتهاء فترة الصلاحية.

خطافات الويب (Webhooks)

عندما يكون callback_url موجودًا، يقوم Seedance باستدعاء نقطة النهاية الخاصة بك عند اكتمال المهمة أو فشلها، ويرسل بيانات JSON تصف النتيجة النهائية. إذا أعادت نقطة النهاية الخاصة بك استجابة غير 2xx أو لم تستجب في غضون 15 ثانية، تتم إعادة محاولة التسليم حتى 5 مرات. تستخدم عمليات إعادة المحاولة نفس معرف المهمة، لذا قم بإزالة التكرارات حسب المعرف. قم بإرجاع استجابة 200 بمجرد تسجيل بيانات رد الاتصال بأمان.

رد اتصال إتمام المهمة

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-0",
  "data": {
    "results": ["https://cdn.seedance2.ai/.../x.mp4"],
    "video_expires_at": "2026-06-13T10:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

رد اتصال فشل المهمة

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-0",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 60
  }
}
export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrl = callbackData.data.results[0];
    // Save the video URL or update your own task record here.
  }

  if (callbackData.status === "failed") {
    const errorMessage = callbackData.data.failed_reason;
    // Mark your own task record as failed here.
  }

  return new Response(null, { status: 200 });
}

تحقق من شكل بيانات رد الاتصال، أزل التكرارات حسب المعرف، حدّث سجل مهمتك الخاص، واستجب بسرعة.

يجب أن يكون callback_url HTTPS ويجب ألا يشير إلى نطاقات شبكة خاصة أو حلقة تكرار أو شبكة محلية.

الأخطاء

تُرجع POST /v1/videos/generations و GET /v1/tasks/:id هذا الشكل من الأخطاء عندما يفشل طلب API نفسه، مثل المعلمات غير الصالحة، أو مفتاح API غير الصالح، أو الأرصدة غير الكافية، أو تحديد المعدل، أو عدم العثور على المهمة. تتضمن بعض الأخطاء حقولًا إضافية مثل required، أو available، أو retry_after اعتمادًا على الموقف.

{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this task.",
    "required": 60,
    "available": 12
  }
}
الرمزHTTPالمعنىإعادة المحاولة؟
invalid_request400معلمات مفقودة أو غير صالحة.لا، قم بإصلاح الطلب.
invalid_api_key401مفتاح API مفقود أو غير صالح أو مُلغى.لا، استخدم مفتاحًا صالحًا.
insufficient_credits402أرصدة غير كافية. لم يتم قبول المهمة أو شحنها.بعد إعادة الشحن.
forbidden403مفتاح API يفتقر إلى النطاق المطلوب.لا.
not_found404المهمة غير موجودة أو لا تنتمي إلى مالك المفتاح.لا.
rate_limited429تجاوز معدل الطلب.نعم، اتبع Retry-After.
internal_error500خطأ في الخادم.نعم، أعد المحاولة لاحقًا.

حدود المعدل

يتم تطبيق حدود المعدل لكل مفتاح API مع نافذة منزلقة. الإنشاء الافتراضي هو 60 طلبًا في الدقيقة؛ تكون استعلامات الحالة أكثر تساهلاً. تتضمن استجابات HTTP 429 Retry-After.

الإنشاء

60/min

استعلامات الحالة

أكثر تساهلاً

رأس 429

Retry-After

الفواتير والأرصدة

تستخدم واجهة برمجة التطبيقات الاحتياطي عند التقديم، والشحن عند النجاح، واسترداد الأموال عند الفشل. تعرض صفحات الاستخدام في لوحة التحكم سجل أرصدة واجهة برمجة التطبيقات، وسجلات المهام، وإحصائيات الاستخدام المستندة إلى الوقت.

محجوز

يتم التحقق من الأرصدة وحجزها عند قبول المهمة.

تم الشحن

المهام المكتملة تسوي الحجز الحالي.

تم استرداد الأموال

المهام الفاشلة أو التي انتهت مهلتها تعيد الأرصدة المحجوزة تلقائيًا.

افحص الاستخدام في لوحة التحكم

عرض سجلات API، والجداول الزمنية للمهام، وسجل الائتمان، ومقاييس الاستخدام المستندة إلى الوقت.

سجلات API