API Replace Section (замена фрагмента)

Обновлено 2026-09-18 · команда Suno-API

Описание эндпоинта

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": {}
  }
}

Совместимые поля

ДалееAPI добавления аккомпанемента

Получить API-ключ

Создайте API-ключ в консоли после регистрации. Одна генерация стоит 0,6 ¥ и возвращает 2 трека, загрузки не ограничены, номер телефона не нужен.

Получить API-ключ Вернуться к обзору