API сборки полной песни (Get Full Song)
Описание эндпоинта
Сборка полной песни соединяет «исходную песню + только что сгенерированный фрагмент» в одну полную песню: после Extend добавляется следующий участок, а после Replace Section новый фрагмент вшивается обратно в оригинал. В официальном веб-интерфейсе эта возможность называется Get Full Song.
Эндпоинт: POST /api/music/concat
Оплата: Платно, фиксировано 0,05 юаня за вызов. Сборка не связана с ценой генерации и не участвует в Max Mode и множителях голосового профиля; фактически списанная сумма определяется конфигурацией цен в бэк-офисе.
Время ожидания и тайм-ауты (важно): это синхронный эндпоинт — заказ принимается и передаётся на сборку только при получении ответа. Установите тайм-аут клиента 300 секунд или больше; отсутствие ответа не означает, что сборка не выполнена, и не повторяйте запрос сразу после тайм-аута (это дублирует заказ и списывает деньги повторно). Если соединение оборвалось, проверьте позже через
GET /api/music/songs.
Аутентификация
| Параметр | Тип | Обязательно | Примечания |
|---|---|---|---|
| Authorization | string | да | Bearer YOUR_API_KEY |
| Content-Type | string | да | application/json |
Параметры запроса
| Параметр | Тип | Обязательно | По умолчанию | Примечания |
|---|---|---|---|---|
| song_id | string | да | - | song_id фрагмента для сборки (результат Extend или Replace Section); он должен быть завершён |
| is_infill | boolean | нет | false | false = сборка продления; true = сборка замены (infill) |
| source_audio_url | string | нет | - | Адрес исходного аудио, если фрагмент пришёл из внешнего аккаунта |
| source_file_name | string | нет | - | Имя исходного файла, если фрагмент пришёл из внешнего аккаунта |
| source_title | string | нет | - | Исходное название, если фрагмент пришёл из внешнего аккаунта |
audio_id, source_clip_id и sourceClipId — эквивалентные написания song_id; используйте любое из них.
Пример запроса
curl -X POST https://www.suno-api.io/api/music/concat \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "extended_or_replaced_clip_id",
"is_infill": false
}'
Чтобы собрать после замены участка, укажите is_infill = true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Ответ
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Название исходной песни",
"status": "queued"
}
]
}
}
Сборка возвращает только 1 результат (2 песни сразу не создаются). Сохраните clips[].song_id и опрашивайте API запроса песен и истории до состояния complete, прежде чем забирать аудио.
Откуда берётся длительность результата
Сборка не просто склеивает два файла встык: исходная песня обрезается по временным точкам, записанным в истории фрагмента:
| Режим | Состав результата |
|---|---|
is_infill: false |
исходная песня [0 .. continue_at] + полная длина фрагмента продления |
is_infill: true |
исходная песня [0 .. начало] + заменённый новый фрагмент + исходная песня [конец .. конец дорожки] |
Поэтому исходное аудио после точки продолжения отбрасывается, и целый участок не дублируется.
Примечания
- Собирать можно только завершённые фрагменты; если фрагмент ещё генерируется, сначала дождитесь его готовности.
- Результат — новая запись; исходный фрагмент сохраняется и остаётся доступным.
- Чтобы объединить две разные песни в одну, используйте API мэшапа; чтобы оставить только один участок — API обрезки.
Получить API-ключ
Создайте API-ключ в консоли после регистрации. Одна генерация стоит 0,6 ¥ и возвращает 2 трека, загрузки не ограничены, номер телефона не нужен.
Получить API-ключ Вернуться к обзору