واجهة رفع الصوت المصدر
وصف نقطة النهاية
رفع الصوت المصدر يحوّل ملفاً صوتياً محلياً أو بعيداً إلى مقطع مصدر يمكن للقدرات اللاحقة استخدامه: الكوفر والتمديد واستبدال المقطع والفصل وغيرها.
نقطة النهاية: POST /api/music/upload-source
الفوترة: مجاني. هذه الواجهة ترفع الصوت المصدر فقط، ولا تبدأ مهمة توليد.
الاستخدام الموصى به: هذه هي الخطوة 1 من «الكوفر بخطوتين». ارفع الصوت أولاً عبر هذه الواجهة (مجاناً، ويمكنك إعادة المحاولة في أي وقت عند الفشل) واحفظ
clip_idالمُعاد؛ وبعد التأكد من نجاح الرفع (statusفي حالة مكتملة)، استدعِ واجهة الكوفر من مقطع مصدر لبدء الكوفر — جسم ذلك الطلب لا يتجاوز بضع مئات من البايتات، ولذلك لا يمكن أن يُقطع أثناء النقل لأن الصوت كبير جداً. ومقارنة بواجهة الخطوة الواحدة الرفع ثم الكوفر، فإن هذا التقسيم أكثر ثباتاً عندما يكون الصوت كبيراً أو الشبكة غير مستقرة أو الحاجة إلى إعادة استخدام المادة نفسها عدة مرات (التمديد / الاستبدال / الفصل).
نصائح لرفع الملفات الكبيرة
| الحالة | الأسلوب الموصى به |
|---|---|
| الصوت متاح علناً (لديه رابط https مباشر) | استخدم file_url: جسم الطلب بضع مئات من البايتات فقط، وهو الأكثر ثباتاً |
| عنوان URL موقّع مؤقت (ByteDance وغير ذلك) | لا تستخدم file_url إلا إذا كان الرابط عامًا وصالحًا؛ استخدم multipart أو ارفع فورًا |
| ملف محلي (Node / Python / سطح المكتب) | استخدم الرفع multipart (-F "file=@source.mp3") ولا تضبط Content-Type يدوياً |
| لا يتوفر إلا JSON + base64 | انتبه: يجب أن يكون Content-Length عدد البايتات (Buffer.byteLength)، وإلا فقد يُقطع جسم الطلب |
بعد انتهاء الرفع، تأكد دائماً من أن status في الاستجابة أصبح حالة مكتملة واحفظ clip_id قبل الانتقال إلى الخطوة 2؛
وفشل الرفع لا يُحتسب مالياً ولا ينشئ مهمة توليد، فما عليك سوى إعادة المحاولة.
تحقق من file_url قبل الرفع
يقوم خادم المنصة بتنزيل
file_urlبنفسه، وليس المتصفح. فتح الرابط في متصفحك لا يثبت أن خادم الإنتاج يستطيع الوصول إليه.
استخدم رفع multipart مع الحقل file للملفات المحلية. لا تستخدم file_url لعناوين ByteDance أو الروابط الموقعة المؤقتة إلا إذا كانت متاحة للعامة وما زالت صالحة عند إرسال الطلب.
من خادم عام، نفّذ الأمر التالي قبل إرسال طلب الرفع:
curl -L --max-time 30 -D - -o /dev/null "https://example.com/source.mp3"
يجب أن ينتهي طلب GET إلى HTTP 200، وأن يكون النوع audio/* أو نوع صوت صحيح، وأن يحتوي على بيانات غير فارغة. إذا انتهى إلى صفحة تسجيل دخول أو HTML، أو أعاد 401 أو 403 أو 404 أو 410، فلن تستطيع المنصة تنزيل الملف.
رسالة file_url download failed: HTTP 404 تعني عادة أن الرابط انتهت صلاحيته أو أن الملف حُذف أو أن المعاملات ناقصة.
هذا الرفع مجاني. عند فشل تنزيل file_url لا يتم إنشاء clip_id أو مهمة أغنية ولا يتم استدعاء نموذج توليد ولا يتم الخصم، لذلك لا حاجة إلى استرداد.
معاملات الطلب
Headers
لطلبات JSON:
| المعامل | النوع | مطلوب | ملاحظات |
|---|---|---|---|
| Authorization | string | نعم | Bearer YOUR_API_KEY |
| Content-Type | string | نعم | application/json |
لا تضبط Content-Type يدوياً في طلبات multipart؛ فالعميل يُنشئه تلقائياً.
معاملات الجسم
| المعامل | النوع | مطلوب | القيمة الافتراضية | ملاحظات |
|---|---|---|---|---|
| model | string | لا | suno-v6 | اسم النموذج للعميل: suno-v6 أو suno-v6-wild أو suno-v6-mini |
| file_url | string | لا | - | عنوان الصوت البعيد |
| file_base64 | string | لا | - | الصوت بصيغة Base64 |
| file | ملف (multipart) | لا | - | ملف الصوت المرفوع؛ يجب أن يكون اسم الحقل file |
| file_name | string | لا | - | اسم الملف |
| upload_type | string | لا | file_upload | نوع الرفع |
مثال طلب JSON
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"file_url": "https://example.com/source.mp3",
"file_name": "source.mp3",
"upload_type": "file_upload"
}'
مثال طلب multipart
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.mp3" \
-F "file_name=source.mp3" \
-F "upload_type=file_upload" \
-F "model=suno-v6"
import requests
with open("source.mp3", "rb") as audio:
response = requests.post(
"https://www.suno-api.io/api/music/upload-source",
headers={"Authorization": "Bearer YOUR_API_KEY"},
data={
"file_name": "source.mp3",
"upload_type": "file_upload",
"model": "suno-v6",
},
files={"file": ("source.mp3", audio, "audio/mpeg")},
timeout=300,
)
response.raise_for_status()
print(response.json())
الاستجابة
{
"clip_id": "uploaded_clip_id",
"status": "complete",
"title": "source.mp3",
"image_url": "https://...",
"audio_url": "https://...",
"display_tags": "pop, vocal",
"inferred_description": "uploaded source audio",
"clip_metadata": {}
}
احصل على مفتاح API
أنشئ مفتاح API من لوحة التحكم بعد التسجيل. كل عملية توليد تكلف 0.6 يوان وتعيد مقطوعتين، والتنزيلات غير محدودة، ولا حاجة إلى رقم هاتف.
احصل على مفتاح API العودة إلى النظرة العامة