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-ключ Повернутися до огляду