API جداسازی (آواز و موسیقی همراهی)
توضیح نقطه پایانی
جداسازی یک آهنگ موجود را به آواز، موسیقی همراهی یا نتیجه چندترکی تقسیم میکند. ترتیب پیشنهادی برای اتصال:
- اگر صدای منبع آهنگی نیست که روی این پلتفرم ساخته شده، نخست API بارگذاری صدای منبع را فراخوانی کنید.
- برای ارسال کار جداسازی،
POST /api/music/separateرا فراخوانی کنید. - نتیجه را با API پرسوجوی آهنگ و تاریخچه پرسوجو کنید.
- فایل صوتی هر نتیجه جداسازی را با نقطههای پایانی دانلود دریافت کنید.
نقطه پایانی: POST /api/music/separate
صورتحساب: پرداختی. stem_mode=two فعلاً بهطور پیشفرض 0.6 یوان برای هر فراخوانی؛ و stem_mode=twelve یک جداسازی چندترکی است و فعلاً 3.0 یوان برای هر فراخوانی. مبلغی که واقعاً کسر میشود تابع پیکربندی قیمت در پنل مدیریت است.
زمانهای انتظار و مهلتها (مهم): این نقطه پایانی همزمان است — سفارش تنها زمانی پذیرفته و به تولید سپرده میشود که پاسخ برسد. بر پایه اندازهگیری، بیشتر درخواستها در 1-3 ثانیه پاسخ میدهند، حدود 10% بیش از 30 ثانیه طول میکشند و طولانیترین حدود 230 ثانیه است. مهلت سمت کلاینت را 300 ثانیه یا بیشتر بگذارید؛ نبود پاسخ به معنای تولید نشدن نیست، و بلافاصله پس از مهلت دوباره تلاش نکنید (سفارش را تکرار میکند و دوباره هزینه میگیرد). اگر اتصال قطع شد، بعداً با
GET /api/music/songsبررسی کنید. بخش «زمانهای انتظار و تنظیم مهلت» در مرور کلی API جدید را ببینید.
احراز هویت
| پارامتر | نوع | الزامی | یادداشت |
|---|---|---|---|
| Authorization | string | بله | Bearer YOUR_API_KEY |
| Content-Type | string | بله | application/json |
پارامترهای درخواست
| پارامتر | نوع | الزامی | پیشفرض | یادداشت |
|---|---|---|---|---|
| song_id | string | بله | - | شناسه آهنگ منبعی که باید جدا شود |
| stem_mode | string | بله | - | حالت جداسازی: two یا twelve |
| source_audio_url | string | خیر | - | نشانی صدای منبع |
| source_file_name | string | خیر | - | نام فایل صدای منبع |
| source_title | string | خیر | - | عنوان آهنگ منبع |
توضیح stem_mode
| مقدار | تعداد بازگشتی | یادداشت |
|---|---|---|
two |
۴ مورد | جداسازی دوترکی: آواز + موسیقی همراهی. هر ارسال ۲ نسخه × ۲ ترک تولید میکند |
twelve |
۲۴ مورد | جداسازی چندترکی: ۲ نسخه × ۱۲ ترک؛ نام ترکها در جدول زیر است |
توضیح جداسازی
جداسازی یک قابلیت ثابت و مستقل است و نیازی به وارد کردن یا انتخاب مدل تولید آهنگ ندارد. مشتری فقط آهنگ منبع و stem_mode را میفرستد و سرور بر پایه حالت پردازش میکند.
اعداد از کجا میآیند: هر ارسال ۲ نسخه تولید میکند (دو نتیجه از یک مواد)، پس تعداد = ۲ × تعداد ترکهای آن حالت: برای two چهار و برای twelve بیستوچهار.
همیشه طول واقعی آرایه clips در پاسخ را معیار بگیرید و حلقهای با عدد ثابت ننویسید (ممکن است برخی ترکها ناموفق شوند و ترکهای موفق طبق معمول برگردند).
هر حالت چه ترکهایی برمیگرداند
۱۲ ترک حالت twelve (نامها را پلتفرم ثابت میدهد؛ ترتیب ممکن است تغییر کند):
| # | نام ترک | یادداشت |
|---|---|---|
| 1 | (Vocals) |
آواز اصلی |
| 2 | (Backing Vocals) |
هارمونی / آواز پسزمینه |
| 3 | (Drums) |
درام |
| 4 | (Bass) |
بیس |
| 5 | (Guitar) |
گیتار |
| 6 | (Keyboard) |
کیبورد / پیانو |
| 7 | (Percussion) |
پرکاشن |
| 8 | (Strings) |
سازهای زهی |
| 9 | (Synth) |
سینت |
| 10 | (FX) |
افکت / فضاسازی |
| 11 | (Brass) |
سازهای بادی برنجی |
| 12 | (Woodwinds) |
سازهای بادی چوبی |
حالت two دو ترک (Vocals) و (Instrumental) را برمیگرداند که هرکدام ۲ نسخه دارند.
نام ترکهای two و twelve نامهای ثابت هستند (نام آهنگ منبع را ندارند)، پس انتظار نداشته باشید از نام ترک بفهمید مربوط به کدام آهنگ است.
نام ترک را نمیتوان کلید یکتا گرفت. در دو نسخه، ترکهایی با نام یکسان ظاهر میشوند (مثلاً دو
(Vocals)و دو(Strings))، و یک جداسازی ترکهای زیادی برمیگرداند. همیشهsong_idرا شناسه بگیرید وsong_titleرا فقط برای نمایش به کار ببرید؛ از اندیسهای آرایه هم استفاده نکنید (ترتیب ممکن است تغییر کند).
نمونه درخواست
جداسازی آواز / موسیقی همراهی (stem_mode: "two")
curl -X POST https://www.suno-api.io/api/music/separate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "source_clip_id",
"stem_mode": "two",
"source_audio_url": "https://example.com/source.mp3",
"source_file_name": "source.mp3",
"source_title": "Source Song"
}'
جداسازی چندترکی (stem_mode: "twelve")
curl -X POST https://www.suno-api.io/api/music/separate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "source_clip_id",
"stem_mode": "twelve",
"source_audio_url": "https://example.com/source.mp3"
}'
پاسخ
در صورت موفقیت معمولاً آرایهای از نتایج جداسازی بازگردانده میشود. هر نتیجه یک کلیپ آهنگ مستقل است و باید تا رسیدن status به وضعیت کامل، پرسوجو ادامه یابد.
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "stem_clip_id_1",
"song_title": "(Vocals)",
"status": "pending",
"generation_type": "separate",
"created_at": "2026-06-06T10:00:00Z"
},
{
"song_id": "stem_clip_id_2",
"song_title": "(Instrumental)",
"status": "pending",
"generation_type": "separate",
"created_at": "2026-06-06T10:00:00Z"
}
]
}
}
در بالا فقط ۲ مورد از ۴ مورد حالت
twoنشان داده شده است؛ در واقع ۴ مورد برمیگردد (۲ نسخه × {(Vocals),(Instrumental)})؛ و حالتtwelveبیستوچهار مورد برمیگرداند. تعداد واقعی همان طول آرایهclipsاست.
مشتری معمولاً فقط باید clips[].song_id را ذخیره کند؛ پرسوجو و دانلود بعدی حول همین شناسهها میچرخد.
نکات
- نتایج جداسازی در تاریخچه
GET /api/music/songsظاهر نمیشوند (آن فهرست فقط آهنگهای تولیدشده معمولی را برمیگرداند). پس از ارسال موفق، فوراًclips[].song_idرا ذخیره کنید، وگرنه بعداً راهی برای یافتنشان نیست. - هر ترک یک اثر مستقل است: هر ترک
song_idخودش را دارد و باید جداگانه تا کامل شدن پرسوجو و جداگانه دانلود شود. - صورتحساب به تعداد موارد ربطی ندارد: به ازای هر فراخوانی محاسبه میشود (
two0.6 یوان برای هر فراخوانی،twelve3.0 یوان برای هر فراخوانی) و ۴ یا ۲۴ مورد قیمت یکسانی دارند. - دانلود: با
song_idهمان ترک ازPOST /api/music/download-url/download-file(رایگان) استفاده کنید، یا مستقیم ازaudio_urlدر نتیجه پرسوجو؛ برای MIDI به API دریافت MIDI مراجعه کنید. - دو بار ارسال نکنید: جداسازی یک نقطه پایانی همزمان است؛ پس از پایان مهلت ابتدا با پرسوجوی آهنگ بررسی کنید و بلافاصله دوباره تلاش نکنید (سفارش تکرار میشود و دوباره هزینه کسر میگردد).
- ترکهایی که دیگر لازم ندارید را با API حذف استمها پنهان کنید.
پرسوجوی نتایج جداسازی
پس از ارسال موفق، با clips[].song_id و فراخوانی POST /api/music/query نتایج را پرسوجو کنید.
curl -X POST https://www.suno-api.io/api/music/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_ids": "stem_clip_id_1,stem_clip_id_2"
}'
نمونه پرسوجوی کاملشده:
[
{
"song_id": "stem_clip_id_1",
"song_title": "(Vocals)",
"status": "complete",
"audio_url": "https://...",
"cover_url": "https://...",
"duration": 180.5,
"generation_type": "separate",
"stem_from_id": "source_clip_id"
}
]
دانلود فایلهای ترک
وقتی نتیجه جداسازی کامل شد، میتوانید یک فایل ترک را با نقطه پایانی دانلود دریافت کنید.
نقطه پایانی: POST /api/music/download-file
curl -X POST https://www.suno-api.io/api/music/download-file \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "stem_clip_id_1",
"kind": "audio"
}' \
--output stem.mp3
مقادیر پشتیبانیشده kind:
| kind | یادداشت |
|---|---|
audio / song / music |
دانلود صدای MP3 |
cover / image |
دانلود تصویر جلد |
wav |
دانلود صدای WAV |
video / mp4 |
دانلود ویدیو |
برای دانلود بستهای منابع مرتبط یک نتیجه جداسازی، این را فراخوانی کنید:
curl -X POST https://www.suno-api.io/api/music/download-all \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "stem_clip_id_1"
}' \
--output stem-resources.zip
توضیح وضعیتها
| وضعیت | یادداشت |
|---|---|
pending |
ارسال شده، در انتظار پردازش |
queued |
در صف |
generating / processing |
در حال پردازش |
complete / completed |
کامل شده |
error / failed |
ناموفق؛ error_message را ببینید |
خطاهای رایج
| وضعیت HTTP | یادداشت | اقدام پیشنهادی |
|---|---|---|
| 400 | پارامتر اشتباه، مثلاً نبود song_id یا stem_mode |
پارامترهای درخواست را بررسی کنید |
| 401 | کلید API نامعتبر است یا فرستاده نشده | Authorization را بررسی کنید |
| 402 | موجودی کافی نیست | شارژ کنید و دوباره تلاش کنید |
| 409 | آهنگ منبع فعلاً قابل پردازش نیست | song_id را بررسی کنید یا بعداً تلاش کنید |
| 500/503 | اختلال موقت سرویس یا پلتفرم | بعداً تلاش کنید یا با پشتیبانی فنی تماس بگیرید |
نکات سازگاری
مستندات قدیمی از مثالهای شیء تکی مانند success/task_id/vocals_url/instrumental_url استفاده میکرد. جداسازی کنونی بر پایه آرایه آهنگهای clips[] است: هر نتیجه جداسازی song_id مستقل خودش را دارد و پرسوجو و دانلود بعدی حول همین song_id میچرخد.
نقاط پایانی مرتبط
- اگر فقط میخواهید آواز و موسیقی همراهی را جدا کنید و لازم نیست حالت انتخاب کنید، از API حذف آواز استفاده کنید؛ این شکل سریع دوترکی همین نقطه پایانی است و فعلاً رایگان است.
- ترکهای جداسازی که دیگر لازم ندارید را با API حذف استمها پنهان کنید (حذف نرم، بدون هزینه).
- برای MIDI یک ترک به API دریافت MIDI و برای صدا، جلد و دیگر رسانهها به API دانلود و پیشنمایش رسانه آهنگ مراجعه کنید.
دریافت کلید API
پس از ثبتنام از کنسول یک کلید API بسازید. هر تولید ۰٫۶ یوان هزینه دارد و ۲ قطعه برمیگرداند، دانلودها نامحدود است و به شماره تلفن نیازی نیست.
دریافت کلید API بازگشت به مرور کلی