واجهة برمجة تطبيقات Seedance
أدمج ميزة إنشاء الفيديو في منتجك باستخدام Seedance 2.5 أو Seedance 2.0، مع مهام غير متزامنة، وخطافات ويب، ونظام فوترة يراعي الرصيد.
https://api.seevio.aiفي هذه الصفحة
مقدمة
تتيح لك واجهة برمجة التطبيقات إرسال مهام إنشاء الفيديو لـ Seedance 2.5 و Seedance 2.0 برمجياً. يعد Seedance 2.5 النموذج الموصى به، وهو يدعم تحويل النص إلى فيديو، وتحويل الصورة إلى فيديو (سواء صورة الإطار الأول أو الإطار الأول والأخير)، ومراجع الفيديو متعددة الوسائط. تتم عملية الإنشاء بشكل غير متزامن: حيث تنشئ مهمة وتتلقى معرف المهمة فوراً، ثم تحصل على الفيديو النهائي من خلال الاستعلام الدوري عن نقطة نهاية المهمة أو عبر خطاف ويب.
مهام غير متزامنة
يعمل الاستعلام الدوري بشكل ممتاز لأغراض التطوير وعمليات الربط البسيطة.
جاهز لخطاف الويب
يُوصى باستخدام خطافات الويب في بيئات التشغيل الفعلي لتجنب الاستعلام الدوري المتكرر وإشعار خدمتك فور وصول المهمة إلى حالتها النهائية.
مراعاة الرصيد
يتم حجز الرصيد عند إرسال الطلب. وتُخصم التكلفة من الرصيد المحجوز للمهام الناجحة، بينما تُسترد تلقائياً للمهام الفاشلة أو التي انتهت مهلتها.
المصادقة
أنشئ مفتاح واجهة برمجة التطبيقات من لوحة التحكم وأرسله كرمز حامل (Bearer token) في ترويسة كل طلب. يظهر المفتاح كاملاً مرة واحدة فقط عند إنشائه.
Authorization: Bearer sk_live_xxxxxxxxاستخدم المفاتيح التي تبدأ بـ sk_live_ لطلبات التشغيل الفعلي.
استخدم المفاتيح التي تبدأ بـ sk_test_ لاختبار الربط في بيئة التجربة المعزولة (Sandbox) بنفس واجهة الربط.
المفاتيح المفقودة أو غير الصالحة أو الملغاة ترجع الخطأ invalid_api_key مع رمز حالة HTTP 401.
البدء السريع
أرسل المهمة أولاً. بعد قبول المهمة، اختر طريقة واحدة لتلقي النتيجة: إما الاستعلام الدوري عن نقطة نهاية حالة المهمة، أو تلقي النتيجة النهائية عبر خطاف ويب.
أنشئ مهمة فيديو غير متزامنة واحصل على معرف المهمة فوراً.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"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
}
}'استعلم عن نقطة نهاية حالة المهمة عندما يفضل نظامك الاستعلام المباشر الواضح.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"مرر 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 اختياري، وكائن مدخلات (input) يحتوي على الوصف النصي وإعدادات الإنشاء.
/v1/videos/generationscurl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"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
}
}'أنماط الإنشاء
يتحكم حقل generation_type في وسائط الإدخال المقبولة وكيفية تفسير النموذج لها.
اضبط النموذج على seedance-2-5 لإنشاء فيديو بدقة 480p أو 720p وبمدة تتراوح من 4 إلى 30 ثانية.
- تحويل النص إلى فيديو بأبعاد متجاوبة، أو أبعاد 16:9، 9:16، 1:1، 4:3، 3:4، أو 21:9
- تحويل الصورة إلى فيديو باستخدام صورة واحدة للإطار الأول، أو صورتين للإطارين الأول والأخير، ويجب أن تكون الأبعاد متجاوبة
- تحويل المراجع إلى فيديو مع دعم ما يصل إلى 30 صورة، و10 مقاطع فيديو، و10 ملفات صوتية، بحد أقصى 50 مادة إجمالاً
- يجب أن تكون مدة كل مرجع فيديو أو صوت بين 2 و30 ثانية؛ ويجب ألا تتجاوز المدة الإجمالية للفيديوهات أو الصوتيات المدمجة 30 ثانية لكل منهما
- يدعم الإدخال المرجعي للملفات الصوتية فقط وخيار return_last_frame؛ ولا يدعم حقل seed (القيمة العشوائية)
| النمط | الوسائط المطلوبة | الوسائط الاختيارية | ملاحظات |
|---|---|---|---|
text-to-video | prompt (الوصف النصي) | duration, aspect_ratio, resolution, seed | وصف نصي فقط. لا حاجة لحقول image_urls أو video_urls أو audio_urls. |
image-to-video | prompt + مصفوفة image_urls (رابط إلى رابطين للصور) | duration, aspect_ratio, resolution, seed | يجب أن يكون حقل image_urls مصفوفة. قدم رابط صورة واحداً للإطار الأول، أو رابطين للإطارين الأول والأخير. يتم تجاهل الفيديو والصوت. |
reference-to-video | prompt + مرجع واحد على الأقل (صورة أو فيديو أو صوت) | صور وفيديوهات وصوتيات ضمن حدود المواد المرجعية | يدعم Seedance 2.5 المراجع الصوتية فقط. بالنسبة لـ Seedance 2.0، يرجى إضافة صورة أو فيديو واحد على الأقل عند تزويد ملف صوتي. |
text-to-videoاستخدم نمط تحويل النص إلى فيديو عندما يكون الوصف النصي هو المدخل الإبداعي الوحيد.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"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
}
}'image-to-videoاستخدم نمط تحويل الصورة إلى فيديو عندما تحتوي مصفوفة input.image_urls على رابط أو رابطين للصور: يحدد الرابط الأول الإطار الأول، والرابط الثاني يحدد الإطار الأخير. يتم تجاهل مراجع الفيديو والصوت في هذا النمط.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"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استخدم نمط تحويل المراجع إلى فيديو لتوجيه فني غني باستخدام صور أو فيديوهات أو صوتيات مرجعية. يقبل Seedance 2.5 الصوت كنوع مرجعي وحيد؛ بينما يتطلب Seedance 2.0 صورة أو فيديو واحداً على الأقل عند إرفاق ملف صوتي.
حدود المواد المرجعية
- إصدار Seedance 2.5: ما يصل إلى 30 صورة مرجعية
- إصدار Seedance 2.5: ما يصل إلى 10 فيديوهات مرجعية، مدة كل منها 2-30 ثانية والمدة الإجمالية <= 30 ثانية
- إصدار Seedance 2.5: ما يصل إلى 10 ملفات صوت مرجعية، مدة كل منها 2-30 ثانية والمدة الإجمالية <= 30 ثانية
- إصدار Seedance 2.5: حد أقصى 50 مادة إجمالاً عبر جميع الأنواع
- تحتفظ إصدارات Seedance 2.0 بحدودها الحالية: 9 صور، و3 فيديوهات، و3 ملفات صوتية، بحد أقصى 15 ثانية لكل مجموعة فيديو/صوت
توليفات الإدخال المدعومة
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"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": "720p"
}
}'معلمات الطلب
تعد أسماء المعلمات، وقيم الـ Enum، ومسارات نقاط النهاية، والأمثلة جزءاً من عقد واجهة برمجة التطبيقات. توضح الأوصاف أدناه سلوك كل حقل.
الترويسات
| الترويسة | مطلوب | الوصف | مثال |
|---|---|---|---|
Authorization | نعم | مفتاح واجهة برمجة التطبيقات (Bearer API key) المستخدم لمصادقة الطلب. | Bearer sk_live_xxx |
Content-Type | نعم | تستخدم جميع طلبات الكتابة تنسيق JSON. | application/json |
حقول المستوى الأعلى
| الحقل | النوع | مطلوب | الافتراضي | المدى / Enum | الأنماط | مثال |
|---|---|---|---|---|---|---|
modelإصدار النموذج المستخدم للإنشاء. استخدم seedance-2-5 لـ Seedance 2.5، أو seedance-2-0 لـ Seedance 2.0، أو seedance-2-0-fast لـ Seedance 2.0 Fast، أو seedance-2-0-mini لـ Seedance 2.0 Mini. | string | نعم | - | seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-mini | الكل | seedance-2-5 |
callback_urlنقطة نهاية HTTPS التي تتلقى إشعارات اكتمال المهمة أو فشلها. | string | لا | - | رابط HTTPS، يمنع استخدام الشبكات الخاصة | الكل | https://your-domain.com/hook |
inputإعدادات الإنشاء ومراجع الوسائط. | object | نعم | - | - | الكل | - |
input.* الحقول
| الحقل | النوع | مطلوب | الافتراضي | المدى / Enum | الأنماط | مثال |
|---|---|---|---|---|---|---|
input.promptالوصف النصي الذي يصف الفيديو المراد إنشاؤه. | string | نعم | - | نص غير فارغ | الكل | a cat surfing |
input.generation_typeنمط الإنشاء. القيمة الافتراضية هي text-to-video. | string | لا | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsروابط صور يمكن الوصول إليها عاماً. لنمط تحويل الصورة إلى فيديو، أرسل صورة واحدة للإطار الأول أو صورتين للإطارين الأول والأخير. لنمط تحويل المراجع إلى فيديو، يقبل Seedance 2.5 ما يصل إلى 30 صورة ويقبل Seedance 2.0 ما يصل إلى 9 صور. | string[] | مشروط | [] | من صورة إلى فيديو: صورة واحدة أو صورتان. من مراجع إلى فيديو: ما يصل إلى 30 لـ Seedance 2.5؛ وما يصل إلى 9 لـ Seedance 2.0. | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsمقاطع فيديو مرجعية يمكن الوصول إليها عاماً لنمط تحويل المراجع إلى فيديو فقط. يقبل Seedance 2.5 ما يصل إلى 10 فيديوهات، مدة كل منها 2-30 ثانية وبإجمالي وقت تشغيل <= 30 ثانية. بينما يقبل Seedance 2.0 ما يصل إلى 3 فيديوهات وبإجمالي وقت تشغيل <= 15 ثانية. | string[] | لا | [] | إصدار Seedance 2.5: حتى 10 فيديوهات، كل منها 2-30 ثانية، والمدة الإجمالية <= 30 ثانية. إصدار Seedance 2.0: حتى 3 فيديوهات، والمدة الإجمالية <= 15 ثانية. | reference-to-video | [] |
input.audio_urlsملفات صوتية مرجعية يمكن الوصول إليها عاماً لنمط تحويل المراجع إلى فيديو فقط. يقبل Seedance 2.5 ما يصل إلى 10 ملفات صوتية، مدة كل منها 2-30 ثانية وبإجمالي وقت تشغيل <= 30 ثانية، ويسمح بالمراجع الصوتية فقط. بينما يقبل Seedance 2.0 ما يصل إلى 3 ملفات وبإجمالي وقت تشغيل <= 15 ثانية. | string[] | لا | [] | إصدار Seedance 2.5: حتى 10 ملفات صوتية، كل منها 2-30 ثانية، والمدة الإجمالية <= 30 ثانية. إصدار Seedance 2.0: حتى 3 ملفات، والمدة الإجمالية <= 15 ثانية. | reference-to-video | [] |
input.durationطول الفيديو الناتج بالثواني. | int | لا | 5 | إصدار Seedance 2.5: 4-30 ثانية. إصدار Seedance 2.0: 4-15 ثانية. | الكل | 5 |
input.aspect_ratioنسبة أبعاد الفيديو الناتج. يتيح خيار adaptive للنظام استنتاج أفضل نسبة أبعاد تلقائياً. يدعم نمط تحويل الصورة إلى فيديو في Seedance 2.5 خيار adaptive فقط. | string | لا | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive | الكل | 16:9 |
input.resolutionفئة دقة الفيديو الناتج. | string | لا | 720p | إصدار Seedance 2.5: 480p | 720p. إصدار Seedance 2.0: 480p | 720p | 1080p | 4k (حسب الإصدار الفرعي). | الكل | 720p |
input.generate_audioما إذا كان يجب على النموذج توليد صوت عندما يكون ذلك مدعوماً. | boolean | لا | true | true | false | الكل | true |
input.watermarkما إذا كان سيتم إضافة علامة مائية. | boolean | لا | false | true | false | الكل | false |
input.web_searchما إذا كان سيُسمح بتعزيز النتائج بالبحث عبر الويب عندما يكون ذلك مدعوماً. | boolean | لا | false | true | false | الكل | false |
input.return_last_frameما إذا كان سيتم إرجاع رابط الإطار الأخير عند توفره. | boolean | لا | false | true | false | الكل | false |
input.seedقيمة عشوائية محددة (Seed) لإصدارات Seedance 2.0 لضمان ثبات النتائج. لا يدعم Seedance 2.5 هذا الحقل؛ يرجى حذفه. | int | لا | -1 | -1 أو من 0 إلى 4294967295 | الكل | -1 |
تختلف التكلفة بالرصيد حسب الدقة، والمدة، والنموذج، وما إذا كان نمط تحويل المراجع إلى فيديو يتضمن مراجع فيديو. قيمة الرصيد التي يتم إرجاعها في استجابة الإنشاء هي المبلغ الفعلي المحجوز لتلك المهمة.
عرض أسعار الرصيدالاستجابة
هذه هي استجابة النجاح الواردة من الطلب POST /v1/videos/generations. تعني هذه الاستجابة أنه تم قبول المهمة وحجز الرصيد المطلوب. استخدم معرف المهمة (taskId) المسترجع للاستعلام الدوري عبر GET /v1/tasks/:id أو لمطابقة إشعار الاكتمال أو الفشل.
استجابة النجاح للطلب POST /v1/videos/generations
{
"taskId": "3f2aK9mR...",
"credits": 100
}جلب حالة المهمة
استخدم الطلب GET /v1/tasks/:id لجلب الحالة الحالية للمهمة. يرجى ألا يتجاوز معدل الاستعلام الدوري مرة واحدة كل 10 ثوانٍ. بالنسبة لأنظمة التشغيل الفعلي، يفضل استخدام خطافات الويب.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"استجابة مهمة مكتملة
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "charged",
"credits": 100,
"failed_reason": null,
"data": {
"results": ["https://cdn.seevio.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-5",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}| القيمة | المعنى |
|---|---|
status=queued | تم قبول المهمة وبانتظار الإرسال أو المعالجة. |
status=generating | يقوم المزود بمعالجة عملية الإنشاء حالياً. |
status=completed | اكتمل إنشاء الفيديو ويحتوي حقل data.results على رابط النتيجة. |
status=failed | فشل إنشاء الفيديو أو انتهت المهلة المحددة له. |
billing_status=reserved | يتم حجز الرصيد أثناء تشغيل المهمة. |
billing_status=charged | نجحت المهمة وتمت تسوية الرصيد المحجوز. |
billing_status=refunded | فشلت المهمة أو انتهت مهلتها وتمت إعادة الرصيد المحجوز. |
billing_status=refund_failed | فشلت عملية استرداد الرصيد وتتطلب معالجة يدوية. |
بعد مرور تاريخ video_expires_at، يصبح حقل data.results فارغاً. يرجى تنزيل الملف وحفظه قبل انتهاء فترة الصلاحية.
خطافات الويب
عند تفعيل callback_url، يقوم Seedance باستدعاء نقطة النهاية الخاصة بك عند اكتمال المهمة أو فشلها، ويرسل بيانات JSON تصف النتيجة النهائية. إذا أرجعت نقطة النهاية الخاصة بك استجابة بخلاف عائلة 2xx أو لم تستجب خلال 15 ثانية، فستتم إعادة المحاولة حتى 5 مرات. تستخدم عمليات إعادة المحاولة نفس معرف المهمة (task id)، لذا يرجى إزالة التكرار بناءً على المعرف. أرجع استجابة برمز الحالة 200 بمجرد تسجيل بيانات الاستدعاء بأمان.
إشعار اكتمال المهمة
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"results": ["https://cdn.seevio.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-5",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}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 وألا يشير إلى نطاقات شبكات خاصة، أو محلية (Loopback)، أو عناوين Link-local.
الأخطاء
ترجع الطلبات POST /v1/videos/generations و GET /v1/tasks/:id هيكل الخطأ هذا عندما يفشل طلب واجهة برمجة التطبيقات نفسه، مثل معلمات غير صالحة، أو مفتاح واجهة غير صالح، أو رصيد غير كافٍ، أو تجاوز حدود معدل الطلبات، أو عدم العثور على المهمة. تتضمن بعض الأخطاء حقولاً إضافية مثل required أو available أو retry_after حسب الحالة.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 100,
"available": 12
}
}| الرمز | HTTP | المعنى | إعادة المحاولة؟ |
|---|---|---|---|
invalid_request | 400 | معلمات مفقودة أو غير صالحة. | لا، قم بتصحيح الطلب أولاً. |
invalid_api_key | 401 | مفتاح واجهة برمجة التطبيقات مفقود، أو غير صالح، أو تم إلغاؤه. | لا، استخدم مفتاحاً صالحاً. |
insufficient_credits | 402 | رصيدك غير كافٍ. لم يتم قبول المهمة أو خصم تكلفتها. | بعد إعادة شحن الرصيد. |
forbidden | 403 | يفتقر مفتاح واجهة برمجة التطبيقات إلى الصلاحيات المطلوبة. | لا. |
not_found | 404 | المهمة غير موجودة أو لا تنتمي لمالك المفتاح المستخدم. | لا. |
rate_limited | 429 | تم تجاوز حد معدل الطلبات المسموح به. | نعم، اتبع ترويسة Retry-After. |
internal_error | 500 | خطأ داخلي في الخادم. | نعم، أعد المحاولة لاحقاً. |
حدود معدل الطلبات
تُطبق حدود معدل الطلبات لكل مفتاح واجهة برمجة تطبيقات بناءً على نافذة زمنية منزلقة. يبلغ الحد الافتراضي لإنشاء الفيديو 100 طلباً في الدقيقة، بينما تكون حدود الاستعلام عن الحالة أكثر مرونة. تحتوي استجابات HTTP 429 على ترويسة Retry-After.
الإنشاء
100/دقيقة
الاستعلام عن الحالة
أكثر مرونة
ترويسة 429
Retry-After
الفوترة والرصيد
تعتمد واجهة برمجة التطبيقات آلية الحجز عند الإرسال، والخصم عند النجاح، والاسترداد عند الفشل. تعرض صفحات الاستخدام في لوحة التحكم سجل الرصيد لواجهة برمجة التطبيقات، وسجلات المهام، وإحصاءات الاستخدام المعتمدة على الوقت.
محجوز
يتم التحقق من الرصيد وحجزه فور قبول المهمة.
مخصوم
تتم تسوية الرصيد المحجوز للمهام المكتملة بنجاح.
مسترد
تُرجع المهام الفاشلة أو التي انتهت مهلتها الرصيد المحجوز تلقائياً.
متابعة الاستخدام في لوحة التحكم
اعرض سجلات واجهة برمجة التطبيقات، والمخطط الزمني للمهام، وسجل الرصيد، ومقاييس الاستخدام المعتمدة على الوقت.