API Replace Section (جایگزینی مقطع)
توضیح نقطه پایانی
Replace Section یک بازه زمانی از یک آهنگ موجود را در همان جا دوباره تولید میکند. برای اصلاح یک خط از متن یا جایگزینی یک مقطع مناسب است.
نقطه پایانی: POST /api/music/replace-section
صورتحساب: پرداختی، فعلاً بهطور پیشفرض 0.6 یوان برای هر فراخوانی. مبلغی که واقعاً کسر میشود تابع پیکربندی فعلی قیمت در پنل مدیریت است.
Max Mode / Variety: این نقطه پایانی دو پارامتر اختیاری max_mode و variety (0-4) را پشتیبانی میکند. با
روشنبودن max_mode این فراخوانی با 2 برابر قیمت حساب میشود (0.6 → 1.2 یوان برای هر فراخوانی)؛ variety هزینه
اضافی ندارد. معنی و روش ارسال آنها در بخش «پارامترهای پیشرفته» در
مرور کلی API جدید آمده است.
زمانهای انتظار و مهلتها (مهم): این نقطه پایانی همزمان است — سفارش تنها زمانی پذیرفته و به تولید سپرده میشود که پاسخ برسد. بر پایه اندازهگیری، بیشتر درخواستها در 1-3 ثانیه پاسخ میدهند، حدود 10% بیش از 30 ثانیه طول میکشند و طولانیترین حدود 230 ثانیه است. مهلت سمت کلاینت را 300 ثانیه یا بیشتر بگذارید؛ نبود پاسخ به معنای تولید نشدن نیست، و بلافاصله پس از مهلت دوباره تلاش نکنید (سفارش را تکرار میکند و دوباره هزینه میگیرد). اگر اتصال قطع شد، بعداً با
GET /api/music/songsبررسی کنید. بخش «زمانهای انتظار و تنظیم مهلت» در مرور کلی API جدید را ببینید.
پارامترهای درخواست
Headers
| پارامتر | نوع | الزامی | یادداشت |
|---|---|---|---|
| Authorization | string | بله | Bearer YOUR_API_KEY |
| Content-Type | string | بله | application/json |
پارامترهای بدنه
| پارامتر | نوع | الزامی | پیشفرض | یادداشت |
|---|---|---|---|---|
| model | string | خیر | suno-v6 | نام مدل برای مشتری: suno-v6، suno-v6-wild یا suno-v6-mini |
| audioId | string | بله | - | شناسه آهنگ اصلی |
| startSeconds | number | بله | - | ثانیه شروع جایگزینی؛ اعشار مجاز است. طول مقطع باید دستکم 2 ثانیه باشد |
| endSeconds | number | بله | - | ثانیه پایان جایگزینی؛ اعشار مجاز است. باید بزرگتر از startSeconds باشد و بازه باید در مدت آهنگ اصلی قرار بگیرد |
| contextLyrics | string | بله | - | متن کامل کل آهنگ، بهعنوان زمینه تولید (نگارش سازگار prompt). اگر فرستاده نشود 400 برمیگردد |
| contextWindowLyrics | string | خیر | مانند contextLyrics |
متن پیرامون مقطعی که جایگزین میشود (یک دو جمله قبل و بعد کافی است) برای اتصال؛ اگر فرستاده نشود از contextLyrics استفاده میشود |
| infillLyrics | string | خیر | مانند contextLyrics |
متن جدیدی که جای آن گذاشته میشود؛ اگر فرستاده نشود از contextLyrics استفاده میشود (یعنی همان مقطع با متن اصلی دوباره خوانده شود) |
| style | string | خیر | - | برچسبهای سبک |
| title | string | خیر | - | عنوان |
| negativeTags | string | خیر | - | سبکهای حذفشده |
| requestedAt | number | خیر | - | برچسب زمانی درخواست |
startSeconds و endSeconds بر حسب ثانیه هستند و اعشار میپذیرند؛ startSeconds باید کوچکتر از endSeconds باشد و بازه باید در مدت آهنگ اصلی قرار بگیرد. requestedAt فقط زمانی استفاده میشود که باید زمان درخواست را بفرستید، بهصورت برچسب زمانی Unix بر حسب ثانیه (نه میلیثانیه)؛ معمولاً میتوان آن را حذف کرد.
جایگزینی هم یک کار ناهمزمان است. clip بازگشتی ممکن است با وضعیت pending شروع شود و خالیبودن آدرس صوتی در آن لحظه طبیعی است؛ برای گرفتن نتیجه نهایی از song_id واقعی بازگشتی استفاده کنید.
طول مقطع: دستکم 2 ثانیه (مهم)
بازهای که جایگزین میشود نمیتواند کوتاهتر از 2 ثانیه باشد. بر پایه اندازهگیری: بازههای 1.0 / 1.2 / 1.5 ثانیه همه شکست خوردند و 2.0 ثانیه و بیشتر کار کرد.
وقتی بازه بسیار کوتاه است، پلتفرم «خطای پارامتر» برنمیگرداند، بلکه پیامی میفرستد که بهراحتی بد فهمیده میشود:
{"error":{"message":"You don't have access to this model. Upgrade your plan to use it.",
"type":"bad_response_status_code","code":"bad_response_status_code"}}
این جمله مشکل حساب یا طرح نیست — مقطع بسیار کوتاه است. بازه را به بیش از 2 ثانیه برسانید و دوباره بفرستید.
نمونه درخواست
curl -X POST https://www.suno-api.io/api/music/replace-section \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"audioId": "clip_id",
"startSeconds": 30,
"endSeconds": 45,
"contextLyrics": "متن زمینه کامل",
"contextWindowLyrics": "متن زمینه پنجره",
"infillLyrics": "متن پس از جایگزینی",
"style": "Mandopop, acoustic",
"title": "نسخه جایگزینشده",
"negativeTags": "noise"
}'
پاسخ
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "replace_clip_id",
"song_title": "نسخه جایگزینشده",
"status": "pending"
}
],
"replaceTask": "infill",
"clipId": "clip_id",
"source_update": {}
}
}
فیلدهای سازگار
audioId/audio_id/clipId/clip_idstartSeconds/start_seconds/infillStartS/infill_start_sendSeconds/end_seconds/infillEndS/infill_end_sinfillLyrics/infill_lyrics/replacementLyrics/replacement_lyricsstyle/tagsnegativeTags/negative_tags
دریافت کلید API
پس از ثبتنام از کنسول یک کلید API بسازید. هر تولید ۰٫۶ یوان هزینه دارد و ۲ قطعه برمیگرداند، دانلودها نامحدود است و به شماره تلفن نیازی نیست.
دریافت کلید API بازگشت به مرور کلی