API بارگذاری تقویتشده
توضیح نقطه پایانی
بارگذاری تقویتشده یک فایل صوتی محلی میفرستد؛ سیستم تقویت را در پسزمینه انجام میدهد و یک آهنگ کامل و قابلپخش میسازد. فراخوانی ارسال بلافاصله اطلاعات کار را برمیگرداند و کلاینت برای پیگیری پیشرفت، نقطه پایانی پرسوجو را صدا میزند.
نقطه پایانی ارسال: POST /api/music/enhanced-upload
پرسوجوی یک کار: GET /api/music/enhanced-upload/:id
لغو کار: POST /api/music/enhanced-upload/:id/cancel
پرسوجوی فهرست: GET /api/music/enhanced-upload
صورتحساب: 10 یوان برای هر فراخوانی که بهصورت پیشپرداخت با قیمت ثابت suno-enhanced-upload کسر میشود. اگر کار ناموفق شود یا در مرحله مجاز لغو شود، مبلغ کسرشده بهطور خودکار برگشت داده میشود. مبلغی که واقعاً کسر میشود تابع پیکربندی قیمت در پنل مدیریت است.
جریان فراخوانی
- برای بارگذاری فایل صوتی،
POST /api/music/enhanced-uploadرا فراخوانی کنید. - مقدار
task_idبرگشتی را ذخیره کنید. - برای دیدن پیشرفت و نتیجه،
GET /api/music/enhanced-upload/:idرا فراخوانی کنید. - وقتی سونو رندر نهایی را تمام کرد، سرویس با حساب سونوی مرتبط با همان کار، نقطه پایانی دانلود مجاز Studio را فراخوانی میکند و MP3 را در سرویس رسانه CN2 مینویسد.
- کار تنها زمانی
completedمیشود که دارایی CN2 آماده باشد؛ در آن هنگام نشانی صدای CDN ازaudio_urlدر پاسخ خوانده میشود.
/api/forbidden نشانی جانشینی است که ممکن است در فراداده Suno Studio دیده شود؛ منبع قابلپخش یا قابلدانلود نیست. هرگز به مشتری برگردانده نمیشود و مبنای اتمام کار قرار نمیگیرد. اگر رندر تمام شده باشد اما CN2 هنوز آمادهسازی کند، نقطه پایانی همچنان processing برمیگرداند و audio_url نمیدهد؛ کلاینت باید پرسوجو را ادامه دهد و نشانی خالی را شکست تلقی نکند.
ارسال بارگذاری تقویتشده
Headers
| پارامتر | نوع | الزامی | یادداشت |
|---|---|---|---|
| Authorization | string | بله | Bearer YOUR_API_KEY |
| Content-Type | string | خیر | در درخواستهای multipart آن را دستی تنظیم نکنید؛ بگذارید کلاینت بسازد |
پارامترهای فرم
| پارامتر | نوع | الزامی | پیشفرض | یادداشت |
|---|---|---|---|---|
| file | file | بله | - | فایل صوتی محلی، حداکثر 80 مگابایت |
| title | string | خیر | نام فایل بدون پسوند | عنوان آهنگ |
نمونه درخواست
نمونه زیر همان شیوه فراخوانی زمان اعتبارسنجی در محیط واقعی است، اما کلید API با یک مقدار جانشین جایگزین شده است.
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.aac" \
-F "title=Enhanced upload demo" \
"https://www.suno-api.io/api/music/enhanced-upload"
پاسخ
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "queued",
"created_at": 1781137961,
"pre_consumed_quota": 5000000,
"billing_source": "wallet"
}
}
پرسوجوی یک کار
نمونه درخواست
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209"
نمونه پاسخ در حال پردازش
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "processing",
"type": "enhanced_upload",
"progress": {
"stage": "media_preparing",
"percent": 98,
"label": "正在准备播放资源",
"updated_at": 1781138500
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138500
}
}
}
نمونه پاسخ پس از اتمام
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
}
}
لغو کار
لغو تنها زمانی ممکن است که هم کار و هم گردشکار بکاند هنوز در مرحله queued باشند. پس از ورود کار به leasing، running، processing یا پس از اتمام، لغو ممکن نیست.
نمونه درخواست
curl.exe --http1.1 -s -S -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209/cancel"
پاسخ
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"status": "cancelled"
}
}
اگر کار از قبل پردازش را آغاز کرده باشد، نقطه پایانی این را برمیگرداند:
{
"success": false,
"message": "强化上传已开始处理,无法取消"
}
پرسوجوی فهرست کارها
نقطه پایانی فهرست تنها کارهای بارگذاری تقویتشده کاربرِ کلید API جاری را برمیگرداند و کارهای تولید معمولی، کاور و ادامه با آن مخلوط نمیشوند.
پارامترهای پرسوجو
| پارامتر | نوع | الزامی | پیشفرض | یادداشت |
|---|---|---|---|---|
| p | number | خیر | 1 | شماره صفحه |
| page_size | number | خیر | مقدار پیشفرض سامانه | تعداد در هر صفحه، حداکثر ۱۰۰ |
نمونه درخواست
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload?p=1&page_size=3"
پاسخ
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 3,
"total": 1,
"items": [
{
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
]
}
}
توضیح فیلدهای پاسخ
| فیلد | نوع | یادداشت |
|---|---|---|
| task_id | number | شناسه کار بارگذاری تقویتشده؛ در پرسوجوها و لغو بعدی از این مقدار استفاده کنید |
| song_id | string | در حین پردازش pending:enhanced-upload:* و پس از اتمام شناسه واقعی آهنگ |
| client_request_id | string | شناسه رهگیری درخواست کلاینت |
| status | string | وضعیت کار، مانند queued، processing، completed، failed، cancelled |
| type | string | همیشه enhanced_upload |
| audio_url | string | نشانی صدا پس از اتمام |
| duration | number | مدت صدا به ثانیه |
| progress.stage | string | مرحله پردازش کنونی |
| progress.percent | number | درصد پیشرفت |
| progress.label | string | متن پیشرفتی که به کاربر نمایش داده میشود |
| pre_consumed_quota | number | سهمیه کسرشده پیشپرداخت برای این فراخوانی |
| billing_source | string | منبع کسر، مانند wallet |
| error_message | string | دلیل شکست |
نکات
- این نقطه پایانی فعلاً تنها بارگذاری فایل multipart را پشتیبانی میکند؛
file_urlوfile_base64در قالب JSON پشتیبانی نمیشوند. - حجم فایل بارگذاریشده حداکثر ۸۰ مگابایت است.
- نقطه پایانی ارسال ناهمگام است: پاسخ
queuedیعنی کار در صف قرار گرفته، نه اینکه صدا آماده است. - لغو تنها برای کارهایی است که پردازششان آغاز نشده؛ پس از آغاز پردازش، گردشکار حساب پلتفرم قطع نمیشود.
- کلیدهای API واقعی را در کد کلاینت افشا نکنید.
شروع کاور پس از اتمام بارگذاری تقویتشده
پس از اتمام بارگذاری تقویتشده میتوانید نتیجه را بهعنوان کلیپ منبع به کار ببرید و POST /api/music/generate-from-source را برای شروع کاور فراخوانی کنید.
توجه: کاور یک نقطه پایانی همزمان است — سفارش تنها با رسیدن پاسخ پذیرفته میشود و بر پایه اندازهگیری ممکن است تا حدود ۲۳۰ ثانیه طول بکشد. مهلت سمت کلاینت را ۳۰۰ ثانیه یا بیشتر بگذارید و بلافاصله پس از مهلت دوباره تلاش نکنید. بخش «زمانهای انتظار و تنظیم مهلت» در مرور کلی API جدید را ببینید.
نخست GET /api/music/enhanced-upload/:id را تا زمانی پرسوجو کنید که task.status برابر completed شود. در آن هنگام:
task.song_idشناسه واقعی آهنگ و همانsourceClipIdموردنیاز نقطه پایانی کاور است؛- توصیه میشود
task.audio_urlرا هم بهعنوانsourceAudioUrlبفرستید تا سرور حالت تفاوت کلیپ منبع با حساب اجراکننده را مدیریت کند؛ task.task_idتنها شناسه کار بارگذاری تقویتشده است و نمیتواندsourceClipIdباشد؛pending:enhanced-upload:*شناسه جانشین مرحله پردازش است و برای کاور قابل استفاده نیست.
هنگام شروع کاور، همان کلید API بارگذاری تقویتشده را به کار ببرید و درخواست را طبق نگاشت فیلدهای زیر بسازید.
| فیلد درخواست کاور | منبع مقدار |
|---|---|
sourceClipId |
task.song_id از نتیجه کاملشده بارگذاری تقویتشده |
sourceAudioUrl |
task.audio_url از نتیجه کاملشده بارگذاری تقویتشده |
sourceTitle |
task.title از نتیجه کاملشده بارگذاری تقویتشده |
بقیه پارامترها (متن، سبک، عنوان، مدل) را طبق API کاور از کلیپ منبع پر کنید. پس از آنکه نقطه پایانی کاور clips[].song_id تازه را برگرداند، با POST /api/music/query وضعیت تولید و صدای نهایی را بپرسید.
دریافت کلید API
پس از ثبتنام از کنسول یک کلید API بسازید. هر تولید ۰٫۶ یوان هزینه دارد و ۲ قطعه برمیگرداند، دانلودها نامحدود است و به شماره تلفن نیازی نیست.
دریافت کلید API بازگشت به مرور کلی