API Replace Section (замена фрагмента)
Описание эндпоинта
Replace Section перегенерирует один временной интервал существующей песни на месте. Это подходит, чтобы исправить строку текста или заменить фрагмент.
Эндпоинт: POST /api/music/replace-section
Оплата: платно, сейчас по умолчанию 0,6 ¥ за вызов. Фактически списанная сумма следует текущей конфигурации цен в бэк-офисе.
Max Mode / Variety: эндпоинт поддерживает необязательные параметры max_mode и variety (0-4). При включённом
max_mode этот вызов тарифицируется по двойной цене (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 | да | - | ID исходной песни |
| 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-ключ в консоли после регистрации. Одна генерация стоит 0,6 ¥ и возвращает 2 трека, загрузки не ограничены, номер телефона не нужен.
Получить API-ключ Вернуться к обзору