واجهة الكوفر من مقطع مصدر
وصف نقطة النهاية
الكوفر من مقطع مصدر يعيد استخدام مقطع مصدر رفعته سابقاً أو موجود بالفعل، ويولّد منه إصدارة كوفر جديدة.
نقطة النهاية: POST /api/music/generate-from-source
الفوترة: مدفوع، وحالياً 0.6 يوان افتراضياً لكل طلب. رفع الصوت المصدر نفسه مجاني؛ وتُحتسب الرسوم عند توليد كوفر من المقطع المصدر. والمبلغ المخصوم فعلاً يتبع إعداد الأسعار الحالي في لوحة الإدارة.
Max Mode / Variety: تدعم نقطة النهاية هذه المعاملين الاختياريين max_mode و variety (0-4). عند تشغيل
max_mode يُحاسَب هذا الطلب بضعف السعر (0.6 → 1.2 يوان لكل طلب)، ولا يضيف variety أي تكلفة.
والمعنى وطريقة الإرسال في قسم «المعاملات المتقدمة» من
نظرة عامة على الواجهة الجديدة.
أوقات الانتظار والمهلات (مهم): هذه نقطة نهاية متزامنة — لا يُقبل الطلب ويُسلَّم إلى التوليد إلا عند وصول الاستجابة. ووفق القياس، تعود معظم الطلبات في 1-3 ثوانٍ، ونحو 10% تتجاوز 30 ثانية، وأطولها نحو 230 ثانية. اضبط مهلة العميل على 300 ثانية أو أكثر؛ وعدم وصول استجابة لا يعني عدم التوليد، ولا تُعد المحاولة فوراً بعد انتهاء المهلة (فذلك يكرر الطلب ويخصم مرة أخرى). وإن انقطع الاتصال فتحقق لاحقاً عبر
GET /api/music/songs. راجع «أوقات الانتظار وإعدادات المهلة» في نظرة عامة على الواجهة الجديدة.
الاستخدام الموصى به: هذه هي الخطوة 2 من «الكوفر بخطوتين». في الخطوة 1 ارفع الملف عبر واجهة رفع الصوت المصدر (مجاناً) واحتفظ بقيمة
clip_id؛ وفي الخطوة 2 استدعِ نقطة النهاية هذه لبدء الكوفر. بهذه الطريقة لا يظهر الصوت إلا في الخطوة المجانية: إن فشل الرفع فأعد المحاولة ببساطة دون أي خصم، بينما جسم الطلب في الخطوة المدفوعة لا يتجاوز بضع مئات من البايتات، لذا يكاد لا يفشل بسبب انقطاع النقل. أما واجهة الرفع ثم الغلاف في خطوة واحدة فتضع الصوت كاملاً في جسم الطلب، ولذلك بمجرد أن يتجاوز الصوت نحو 8 ميجابايت يُقتطع بسهولة أثناء النقل وتعيدunexpected end of JSON input(راجع «الملفات الكبيرة والطلبات المقتطعة» في تلك الصفحة).كذلك يمكن إعادة استخدام المقطع
clip_idنفسه مع Extend وReplace Section والفصل إلى مسارات وإجراءات لاحقة أخرى، دون إعادة رفع الصوت.
معاملات الطلب
Headers
| المعامل | النوع | مطلوب | ملاحظات |
|---|---|---|---|
| Authorization | string | نعم | Bearer YOUR_API_KEY |
| Content-Type | string | نعم | application/json |
معاملات جسم الطلب
| المعامل | النوع | مطلوب | القيمة الافتراضية | ملاحظات |
|---|---|---|---|---|
| model | string | لا | suno-v6 | اسم النموذج الموجّه للعميل: suno-v6 أو suno-v6-wild أو suno-v6-mini |
| sourceClipId | string | نعم | - | معرّف المقطع المصدر؛ يمكنك استخدام clip_id الذي تعيده واجهة رفع الصوت المصدر، أو song_id الحقيقي لأغنية تملكها، أو song_id الحقيقي الذي يُعاد بعد اكتمال رفع معزّز |
| sourceAudioUrl | string | لا | - | رابط الصوت المصدر |
| sourceTitle | string | لا | - | عنوان الصوت المصدر |
| prompt | string | لا | - | كلمات جديدة أو اتجاه إبداعي |
| customMode | boolean | لا | true | هل يُستخدم الوضع المخصص |
| style | string | لا | - | وسوم الأسلوب |
| title | string | لا | - | العنوان |
| negativeTags | string | لا | - | الأسلوب السلبي |
| instrumental | boolean | لا | false | هل الأغنية بلا كلمات |
| waitAudio | boolean | لا | false | هل يُنتظر اكتمال الصوت |
| vocalGender | string | لا | - | جنس الصوت |
| lyricsMode | string | لا | - | وضع الكلمات |
| weirdnessConstraint | number | لا | - | العشوائية |
| styleWeight | number | لا | - | وزن تأثير الأسلوب |
| audio_weight | number | لا | - | مدى الاعتماد على الصوت المرجعي، النطاق 0.0-1.0؛ لا يُرسل إلا عند تحديد مقطع مصدر أو صوت مرجعي |
تأخذ weirdnessConstraint وstyleWeight وaudio_weight كسراً عشرياً بنسبة من 0.0 إلى 1.0، لا عدداً صحيحاً بالنسبة المئوية؛ فمثلاً 50% تُكتب 0.5. والقيمة 0 صالحة، ولا يعني «غير محدد» إلا حذف الحقل. وتُربط audio_weight بحقل metadata.control_sliders.audio_weight في Suno وتتحكم في مقدار اعتماد النتيجة على الصوت المرجعي؛ ولا يجوز إرسالها إلا إذا كان الطلب يحمل sourceClipId صالحاً أو صوتاً مرجعياً، فلا ترسلها في توليد نصي عادي. وعند customMode=true اكتب الكلمات الجديدة في prompt وقدّم style وtitle معاً؛ وعند customMode=false اكتب وصف الإبداع في prompt. ويجب أن تستخدم instrumental وwaitAudio قيمتي JSON المنطقيتين true/false.
تعيد نقطة النهاية هذه افتراضياً بشكل غير متزامن. وعندما تكون قيمة status المُعادة pending فإن خلو audio_url أمر طبيعي؛ فانتظر الاكتمال قبل استخدام عنوان الصوت. ويجب أن تكون sourceClipId معرّف أغنية/مقطع مصدر حقيقياً — لا تستخدم task_id أو client_request_id أو معرّفاً بديلاً مثل pending:.
ما نوع المعرّف sourceClipId
sourceClipId هو معرّف مقطع Suno الحقيقي المستخدم كمصدر لهذا الكوفر. وعادةً ما يُسمّى هذا المعرّف في كائن الأغنية الموجّه للعميل على المنصة song_id، بينما تحتفظ معاملات طلب الكوفر بالاسم sourceClipId؛ وهنا يعني الاثنان معرّف الأغنية الحقيقي نفسه.
وإذا كان المصدر رفعاً معزّزاً، فاستعلم أولاً عن مهمة الرفع المعزّز وانتظر حتى يصبح status هو completed، ثم ضع song_id الحقيقي المُعاد في sourceClipId. ويُستحسن أيضاً وضع audio_url وtitle من تلك النتيجة في sourceAudioUrl وsourceTitle.
لا تضع task_id أو client_request_id أو معرّف الرفع البديل pending:enhanced-upload:* في sourceClipId.
مثال الطلب
curl -X POST https://www.suno-api.io/api/music/generate-from-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"sourceClipId": "uploaded_or_existing_clip_id",
"sourceAudioUrl": "https://example.com/source.mp3",
"sourceTitle": "عنوان الصوت الأصلي",
"prompt": "كلمات جديدة أو اتجاه إبداعي",
"customMode": true,
"style": "Mandopop, warm vocal",
"title": "عنوان الكوفر",
"negativeTags": "noise",
"audio_weight": 0.5,
"instrumental": false,
"waitAudio": false
}'
الاستجابة
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "new_clip_id",
"song_title": "عنوان الكوفر",
"status": "pending"
}
],
"source_update": {}
}
}
ملاحظات
تحاول نقطة النهاية هذه معالجة مسألة الحساب الذي ينتمي إليه المقطع المصدر. وإذا تعذّر استخدام المقطع المصدر مباشرةً، فقد يعيد الخادم رفعه بناءً على معلومات الصوت المصدر ثم يولّد النتيجة.
احصل على مفتاح API
أنشئ مفتاح API من لوحة التحكم بعد التسجيل. كل عملية توليد تكلف 0.6 يوان وتعيد مقطوعتين، والتنزيلات غير محدودة، ولا حاجة إلى رقم هاتف.
احصل على مفتاح API العودة إلى النظرة العامة