Перейти к основному содержанию
По мере расширения применения ИИ различные программы на базе ИИ постепенно становятся всё более распространёнными. ИИ постепенно проникает во все аспекты работы и жизни людей. Отраслей, связанных с ИИ, также становится всё больше: от первоначального написания текстов до медицины и образования, а теперь и музыки. Suno — это профессиональная высококачественная платформа для создания песен и музыки с помощью ИИ. Пользователю достаточно ввести простой текстовый запрос, чтобы на основе жанра, стиля и текста песни сгенерировать композицию с вокалом. Этот генератор музыки на базе ИИ разработан командой из сотрудников известных технологических компаний, таких как Meta, TikTok, Kensho и других, с целью позволить каждому создавать прекрасную музыку без каких-либо музыкальных инструментов. Ниже представлен прогресс обновления моделей:
Ограничения lyric и style в таблице выше являются верхними пределами в пользовательском режиме (custom имеет значение true). В непользовательском режиме вдохновения (custom имеет значение false) заполняется только prompt, а его максимальная длина составляет 500 символов (одинаково для всех моделей).
Suno теперь поддерживает chirp-v6, chirp-v6-wild и chirp-v6-mini. Рекомендуется использовать chirp-v6; старые названия моделей продолжают поддерживаться. Однако официальный Suno не предоставляет API, поэтому AceDataCloud предоставляет набор API Suno, имитирующий официальную интеграцию Suno, что позволяет удобно и быстро генерировать нужную музыку.

Получение и использование

Чтобы использовать Suno Audios Generation API, сначала получите ваш API Token в консоли Ace Data Cloud и сохраните его для дальнейшего использования. Если вы ещё не вошли в систему или не зарегистрировались, вы будете автоматически перенаправлены на страницу входа, где вам будет предложено зарегистрироваться и войти в систему; после завершения вы автоматически вернётесь на текущую страницу. Один API Token позволяет вызывать все сервисы платформы, не нужно подавать отдельную заявку для каждого сервиса. При первом получении предоставляется бесплатный лимит для бесплатного ознакомления; при недостатке лимита можно пополнить универсальный баланс в консоли.
📘 Полная документация: Suno Audios Generation API →

Базовое использование

Можно вводить любой текст о том, какие песни вы хотите, например, если я хочу сгенерировать песню о Рождестве, можно ввести a song for Christmas, как показано на рисунке:

Здесь можно увидеть, что мы настроили Request Headers, включая:
  • accept: в каком формате вы хотите получить результат ответа; здесь указано application/json, то есть формат JSON.
  • authorization: ключ для вызова API, после получения можно напрямую выбрать его из выпадающего списка.
Кроме того, настроен Request Body, включая:
  • action: тип аудиозадачи, по умолчанию generate. Поддерживает операции генерации, продолжения, кавера, объединения, разделения на дорожки, добавления аудиодорожек, извлечения указанных аудиодорожек, генерации звуковых эффектов и регулировки скорости и т. д.; все вызываются через POST /suno/audios.
  • prompt: подсказка режима вдохновения Suno (действует, когда custom имеет значение false), максимум 500 символов.
  • model: модель для этой задачи генерации музыки. Серия v6 включает chirp-v6, chirp-v6-wild и chirp-v6-mini; старые названия моделей продолжают поддерживаться.
  • max_mode: усиленный режим генерации. generate включается только когда и custom, и max_mode имеют значение true, стоимость составляет 1.12 Credits; add_stem можно включить напрямую, стоимость составляет 1.344 Credits. При отключении или пропуске значения составляют соответственно 0.56 и 0.672 Credits.
  • variety: интенсивность разнообразия результатов генерации, доступны off, normal, high, extra, max. Используется только для generate и add_stem; передача для других action вернёт 400.
  • lyric: текст песни в пользовательском режиме Suno. Для chirp-v3-5 и chirp-v4 максимум 3000 символов; для chirp-v4-5 и выше (включая chirp-v5, chirp-v5-5) максимум 5000 символов.
  • custom: использовать ли пользовательский режим, по умолчанию: false.
  • instrumental: опция инструментальной музыки в режиме вдохновения Suno.
  • title: название музыки в пользовательском режиме Suno. Для chirp-v3-5, chirp-v4 максимум 80 символов; для chirp-v4-5 и выше максимум 100 символов.
  • style: музыкальный стиль пользовательского режима Suno. Для chirp-v3-5 и chirp-v4 максимум 200 символов; для chirp-v4-5 и выше (включая chirp-v5, chirp-v5-5) максимум 1000 символов.
  • negative_tags: музыкальные стили или жанры, которые нужно исключить из результатов генерации в пользовательском режиме (когда custom имеет значение true).
  • audio_weight: вес влияния аудио- или голосовых характеристик, диапазон 0-1, 0 также является допустимым значением. Может использоваться для операций генерации, продолжения, кавера, добавления аудиодорожек и согласованности голоса и т. д.; при отсутствии эталонного аудио или голосовых характеристик модель может ослабить или проигнорировать это значение.
  • audio_id: ID эталонной музыки.
  • overpainting_start/overpainting_end: время начала и окончания добавления вокала к существующей инструментальной музыке, в секундах.
  • underpainting_start/underpainting_end: время начала и окончания добавления аккомпанемента к а капелла, в секундах.
  • persona_id: ID песни исполнителя.
  • continue_at: граница продолжения, в секундах. Например, 213.5 означает начало генерации последующего фрагмента с отметки 3 минуты 33.5 секунды. lyric и style направляют только новое содержимое после границы и не заменяют текст или вокал до границы в исходном аудио.
  • style_influence: влияние стиля в пользовательском режиме, диапазон 0-1; чем больше значение, тем обычно точнее соответствие выбранному стилю; 0 передаётся как допустимое значение.
  • replace_section_end: конечное время заменяемого фрагмента.
  • replace_section_start: начальное время заменяемого фрагмента.
  • vocal_gender: управляет предпочтением женского или мужского вокала: женский голос f, мужской голос m; действует для моделей 4.5 и выше; является параметром предпочтения и не гарантирует строгого соблюдения.
  • weirdness: степень необычности в пользовательском режиме, диапазон 0-1; чем больше значение, тем обычно более креативен и экспериментален результат; 0 передаётся как допустимое значение.
  • duration: желаемая длительность песни в секундах, должна быть целым числом в диапазоне от 10 до 360. Этот параметр используется для генерации песен в пользовательском режиме (когда custom имеет значение true). Это ориентир, а не жёсткое ограничение: модель учитывает его, но не гарантирует достижения, фактическая длительность готового результата определяется полем duration в ответе и обычно короче желаемой.

Область применения расширенных параметров

Платформа проверяет типы параметров и диапазоны значений, но не отклоняет эти необязательные параметры регулировки только из-за различий в action; конкретный эффект определяется операцией, режимом и моделью.
  • lyric_prompt: prompt для генерации текста песни, действует тогда и только тогда, когда custom имеет значение true и lyric не передан.
  • callback_url: URL, на который требуется отправить результат обратным вызовом.
  • async: необязательно; когда установлено значение true, интерфейс немедленно возвращает task_id, предоставлять callback_url не требуется, после чего результат можно получить путём опроса соответствующего интерфейса запроса задач.
Сгенерированный код выглядит следующим образом:

Можно нажать кнопку «Try», чтобы напрямую протестировать API, подождать 1-2 минуты, результат выглядит следующим образом:
Можно увидеть, что в этот момент мы получили содержимое двух песен, включая название, изображение предпросмотра, текст песни, аудио, видео и другое. Описание полей следующее:
  • success:успешно ли выполнено создание, если успешно — true, иначе — false
  • data:это список, содержащий подробную информацию о созданных песнях.
    • state:статус создания песни, в основном включает четыре вида, конкретно следующие:
      • succeeded:создание успешно
      • pending:в очереди
      • running:выполняется
      • error:ошибка
    • id:ID песни
    • title:название песни
    • image_url:обложка песни
    • lyric:текст песни
    • audio_url:адрес итогового аудио песни. Платформа в приоритетном порядке возвращает адрес Ace Data Cloud CDN; при сбое сохранения может быть возвращён исходный адрес медиафайла, пожалуйста, своевременно скачайте его.
    • video_url:видеофайл песни, при открытии представляет собой mp4-видео.
    • created_at:время создания
    • model:используемая модель, как правило, новейшая модель v3
    • style:стиль

Пользовательское создание

Если вы хотите пользовательски создать текст песни, можно ввести текст песни: В этот момент в поле lyric можно передать содержимое, подобное следующему:
Обратите внимание, что \n в тексте песни здесь — это символ переноса строки. Если вы не знаете, как создавать текст песни, можно использовать API генерации текстов песен, предоставляемый AceDataCloud, для создания текста песни через prompt; API: Suno Lyrics Generation API。
Далее, чтобы пользовательски создать песню на основе текста песни, названия и стиля, можно указать следующее содержимое:
  • lyric:текст песни
  • custom:укажите true, что означает пользовательское создание; по умолчанию этот параметр имеет значение false, что означает создание с использованием prompt.
  • title:название песни.
  • style:стиль песни, необязательно.
Пример заполнения следующий:

После заполнения автоматически создаётся следующий код:

Соответствующий код:
Тестирование разрешено, эффект создания аналогичен.

Функция создания в пользовательском стиле певца

Если вы хотите использовать стиль певца для генерации песни, сначала сгенерируйте песню с помощью базового использования, описанного выше, в итоге необходимо настроить эту песню как стиль певца, затем нужно перейти в Suno Persona API, чтобы на основе официального ID сгенерированной музыки audio_id создать параметр ID стиля певца persona_id, конкретные параметры показаны на рисунке ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажмите «Запустить», и можно увидеть, что будет получен следующий результат:
Мы используем приведённые выше audio_id и persona_id, а именно 97efc9f4-0e8d-4b3e-88df-14568fa1b11f и e0d7319e-aa2a-44cb-b00a-916218d7cb0b, в качестве примеров данных в этот раз. Затем можно установить для параметра action значение artist_consistency (если это новая версия стиля певца Persona-v2-vox, action необходимо установить в artist_consistency_vox), а также ввести ID песни, генерацию которой нужно продолжить, и ID стиля певца; пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажмите «Запустить», и можно увидеть, что будет получен следующий результат:
Можно увидеть, что содержание результата совпадает с приведённым выше, что и реализует функцию генерации песни с использованием стиля певца.

Функция продолжения генерации

Если вы хотите продолжить генерацию уже созданной песни Suno, можно установить для параметра action значение extend и ввести ID песни, генерацию которой нужно продолжить. ID песни получается через базовое использование; как видно из приведённого выше, в этот момент можно увидеть, что ID песни следующий:
Обратите внимание, что id в тексте песни здесь является ID песни после генерации; если вы не знаете, как генерировать песни, вы можете обратиться к базовому использованию выше для генерации песни.
Если вы хотите продолжить генерацию песни, загруженной вами самостоятельно, можно установить для параметра action значение upload_extend и ввести ID пользовательской загруженной песни, генерацию которой нужно продолжить. ID песни получается с помощью Suno Upload Generation API, как показано на рисунке ниже:

Далее необходимо заполнить текст песни для продолжаемого фрагмента, а также можно указать стиль:
  • lyric:используется только для направления текста нового генерируемого фрагмента после continue_at, не заменяет текст в исходном аудио до этой временной точки.
  • custom:установите значение true, что означает пользовательскую генерацию; по умолчанию этот параметр имеет значение false, что означает генерацию с использованием prompt.
  • style:стиль песни для продолжаемого фрагмента, необязательно.
  • continue_at:граница продолжения, в секундах. Например, 213.5 означает начало генерации последующего фрагмента с отметки 3 минуты 33.5 секунды.
extend используется для продолжения создания уже существующей песни, а не для замены текста всей песни. Если вы хотите использовать новый текст для всей песни с самого начала, используйте generate для повторной генерации; если вы хотите переисполнить песню с опорой на существующую, можно использовать cover. При передаче нового текста целой песни исходный текст до continue_at всё равно не будет заменён.
Пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Ниже сохранён снимок реального исторического вызова, в котором continue_at равен 2 секундам, поэтому только первые 2 секунды относятся к исходному содержимому до границы продолжения. При фактическом продолжении вблизи конца песни это значение следует установить на секунду, с которой ожидается начало продолжения, и предоставлять в lyric только новый фрагмент, который должен исполняться после границы. Соответствующий код Python:
Нажав «Запустить», можно увидеть, что будет получен результат, как показано ниже:
Можно увидеть, что lyric в результате возвращает текст песни, использованный для этой задачи продолжения. Это поле не является дословной расшифровкой полного готового аудио; для extend исходное аудио до continue_at по-прежнему использует исходный текст песни, а новый текст песни используется только для направления фрагмента продолжения.

Получение полной песни

Результат extend текущей модели обычно уже содержит исходное аудио до continue_at и новое содержимое после границы, поэтому сначала определите по фактической длительности и содержимому возвращённого аудио, является ли оно уже полной песней. Если возвращается отдельный фрагмент продолжения или необходимо явно объединить историю нескольких продолжений в одну песню, затем используйте функцию склейки:
  • action: значение — concat.
  • audio_id: ID последнего фрагмента продолжения.
Например, ID песни после расширения: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, тогда параметры можно установить следующим образом:
Остальные параметры остаются без изменений, и будет возвращена одна полная песня, то есть результат склейки всех фрагментов песни, однако в результате будет только одна песня, пример приведён ниже:

Кавер-версия музыки

После продолжения генерации песни на основе исходной песни стиль возвращённой песни может оказаться не совсем подходящим. Если необходимо сделать кавер-версию ранее сгенерированной песни (также поддерживается пользовательская загруженная музыка), нужно использовать метод создания кавер-версии музыки, в котором можно указать следующее содержимое:
  • action:значение cover; при выполнении операции создания кавер-версии пользовательской загруженной музыки обязательно необходимо указать значение:upload_cover。
  • audio_id:ID ранее сгенерированной песни。
Например, если ID исходной сгенерированной песни:0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, то параметры можно задать следующим образом:
Остальные параметры остаются без изменений, и будет возвращена песня после создания кавер-версии, то есть результат создания кавер-версии исходной сгенерированной песни, пример如下:
Сгенерированный результат аналогичен вышеописанному, на этом процесс создания кавер-версии исходной сгенерированной песни завершён.

Замена фрагмента

Если после генерации песни необходимо выполнить вторичное создание с отдельной операцией замены фрагмента песни, можно выполнить замену определённого фрагмента песни.
⚠️ Внимание:значение replace_section_result_mode по умолчанию — full_song:система отдельно склеит 2 новых сгенерированных кандидата и вернёт 2 полные песни. Если нужны только ещё не склеенные кандидаты заменяемых фрагментов, явно установите значение candidates, затем выберите кандидата и вызовите Склейку музыки。
Описание параметров следующее:
  • action:значение replace_section。
  • audio_id:ID исходной песни (исходной песни, в которой производится замена)。
  • model: Модель генерации песни。
  • lyric: Полный текст песни после замены (включая заменяемый фрагмент и его контекст, соответствует содержимому в prompt)。
  • prompt:Новый текст песни для фрагмента, который необходимо заменить。
  • style:Стиль песни, необязательно。
  • replace_section_start:Время начала заменяемого фрагмента в исходной песне (секунды)。
  • replace_section_end:Время окончания заменяемого фрагмента в исходной песне (секунды)。
  • replace_section_result_mode:Режим возврата, по умолчанию full_song。full_song отдельно склеивает 2 кандидата и возвращает 2 полные песни;candidates возвращает 2 ещё не склеенных фрагмента-кандидата。

Шаг 1: Запуск задачи замены фрагмента

Например, если ID исходной сгенерированной песни:18db7ed0-2b8a-41db-91c1-b0781dcca0d4 (длительность 94.12 секунды), и требуется заменить припев с 30-й по 60-ю секунду новым текстом песни, то параметры можно задать следующим образом:
По умолчанию возвращаются 2 полные песни, каждая из которых составлена из одного из двух кандидатов. Если установить replace_section_result_mode в значение candidates, будут возвращены 2 ещё не склеенных заменяющих фрагмента со структурой, идентичной примеру ниже:
В режиме candidates длительность двух возвращаемых аудиозаписей (45,16 секунды и 33,8 секунды) значительно меньше, чем у исходной песни (94,12 секунды). Они являются заменяющими фрагментами, содержащими небольшое количество контекста, и не являются полной песней. Можно выбрать удовлетворяющего кандидата и продолжить ручную склейку. Режим full_song по умолчанию выполнит две склейки и сразу вернёт 2 полные песни.

Непосредственный возврат полной песни

Если требуется сразу получить полную песню, на первом шаге можно установить replace_section_result_mode в значение full_song. Интерфейс отдельно склеит двух кандидатов и вернёт 2 полные песни; в этом случае дополнительно вызывать concat не нужно.

Шаг 2: склейка заменяющего фрагмента обратно с исходной песней

Для выбранного выше фрагмента (например, 364f9d8b-ca25-463b-9a5e-d0b7139e2d6a) создайте задачу concat способом, описанным в разделе Склейка музыки:
Возвращается склеенная полная песня, пример приведён ниже:
В этот момент duration уже восстановлена до полной длины песни (105,28 секунды, примерно равна длине оригинальной композиции), а audio_url указывает на всю песню после завершения замены. На этом завершается процесс вторичного создания: «генерация → замена фрагмента → объединение полной композиции».

Разделение вокала и музыки

Когда после генерации песни требуется вторичное создание с отдельной обработкой аккомпанемента и вокала, можно разделить чистый музыкальный аккомпанемент и вокал а капелла. Для этого можно указать следующее содержимое:
  • action: значение — stems.
  • audio_id: ID ранее сгенерированной песни.
Например, если ID ранее сгенерированной песни: ec13e502-d043-4eb2-92ee-e900c6da69d1, то параметры можно задать следующим образом:
С помощью указанных выше параметров можно получить результат разделения вокала и музыки, результат выглядит следующим образом:
Сгенерированный результат аналогичен приведённому выше, на этом завершается процесс разделения вокала и музыки для ранее сгенерированной песни.

Разделение вокала и музыки по всем дорожкам

Когда после генерации песни требуется выполнить разделение вокала и музыки по всем дорожкам, можно указать следующее содержимое:
  • action: значение — all_stems.
  • audio_id: ID ранее сгенерированной песни.
Например, если ID ранее сгенерированной песни: bdf23a5a-59f5-4103-b452-054a824a7f9f, то параметры можно задать следующим образом:
С помощью указанных выше параметров можно получить результат разделения вокала и музыки по всем дорожкам, результат выглядит следующим образом:
Сгенерированный результат аналогичен приведённому выше, на этом процесс разделения ранее сгенерированной песни на вокал и музыку завершён.

Добавление аудиодорожки

add_stem генерирует целевую инструментальную или голосовую дорожку для указанного аудио, вызывается через POST /suno/audios.
  • Обязательные: action、audio_id、stem_type。
  • Необязательные: model、prompt、title、style、negative_tags、weirdness、style_influence、audio_weight、max_mode、variety。
  • Тарификация: обычный режим — 0.672 Credits; когда max_mode имеет значение true — 1.344 Credits。
Ответ в конечном состоянии:

Извлечение аудиодорожки

extract_stem извлекает целевую аудиодорожку из указанного аудио, одновременно возвращая комплементарную версию после удаления этой аудиодорожки, вызывается через POST /suno/audios.
  • Обязательные: action、audio_id、stem_type。
  • Необязательный: audio_format, текущий публичный контракт с двумя каналами поддерживает только mp3。
  • Тарификация: 1.12 Credits。
В ответе в конечном состоянии data сохраняет плоский список аудио, а stem_sets обозначает соответствие между целевой аудиодорожкой и комплементарной аудиодорожкой:

Генерация звуковых эффектов

sounds генерирует одноразовые или циклические звуковые эффекты на основе текстового описания, вызывается через POST /suno/audios.
  • Обязательные: action、sound、sound_type。
  • Необязательные: model、bpm、key、audio_format; audio_format в настоящее время поддерживает только mp3。
  • sound_type: one-shot или loop。
  • Тарификация: 0.112 Credits。

Настройка скорости аудио

adjust_speed настраивает скорость воспроизведения указанного аудио через вызов POST /suno/audios.
  • Обязательные: action, audio_id, speed_multiplier, title.
  • Необязательный: keep_pitch.
  • speed_multiplier: диапазон 0.25–4.
  • Стоимость: 0.28 Credits.
Длительность исходного аудио составляет 9.8 секунды, результат на скорости 1.1x составляет 8.909090909 секунды:
Модель генерации обладает случайностью. Интерфейс гарантирует согласованность семантики параметров, статуса задачи и структуры ответа, но не гарантирует генерацию полностью одинаковых волновых форм для разных запросов.

Расширенные параметры пользовательской генерации

Официально разрешено использовать расширенные параметры weirdness==>Weirdness, style_influence==>Style Influence, audio_weight==>Audio Influence для генерации в пользовательском режиме, соответствующие официальные примеры приведены ниже:

Диапазон всех расширенных параметров находится между 0 и 1, конкретные параметры показаны на рисунке ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажав «Запустить», можно обнаружить, что будет получен результат, как показано ниже:
Таким образом, для генерации пользовательской песни использовались расширенные параметры, результат аналогичен приведённому выше.

Управление длительностью песни

По умолчанию длительность генерируемой песни определяется самой моделью и обычно составляет от 30 секунд до 4 минут. Если требуется более длинный или более короткий готовый результат, можно указать желаемую длительность через параметр duration, единица измерения — секунды, допустимы целые значения от 10 до 360. Этот параметр используется для генерации песен в пользовательском режиме (custom имеет значение true). Следует особо отметить, что duration — это ориентирующая подсказка, а не жёсткое ограничение: модель будет учитывать это значение при создании, но не гарантирует его достижения; на практике фактическая длительность обычно значительно меньше ожидаемого значения, а длительность двух песен, возвращённых одним и тем же запросом, также может различаться в несколько раз. Даже при полностью одинаковых запросах длительность, полученная при многократной отправке, может значительно различаться. Поэтому не следует использовать его как точное управление длительностью; если в бизнес-логике требуется фиксированная длительность, после получения готового результата самостоятельно обрежьте его или повторите попытку. Соответствующий код Python:
Следует отметить, что duration в запросе является ожидаемой длительностью, тогда как поле duration каждой песни в ответе data является фактической длительностью данной песни. Названия у них одинаковые, но значения различаются; фактическая длительность не гарантированно равна ожидаемому значению. Длина текста песни является одним из основных факторов, влияющих на длительность готового результата; если требуется более длинный результат, рекомендуется также предоставить более полный текст песни. Интерфейс проверяет, что duration должно быть целым числом от 10 до 360; это всё ещё лишь цель генерации, а не гарантия длительности готового результата.

Функция Add Insterumental

В августе 2025 года Suno представил новую функцию Add Insterumental. Сначала необходимо загрузить песню а капелла без озвучки, чтобы Suno помог вам добавить музыкальное сопровождение. Сначала можно загрузить песню а капелла без музыкального сопровождения через Suno Upload API, соответствующие действия показаны на рисунке ниже:

Затем необходимо записать audio_id после загрузки, конкретный результат показан на рисунке ниже:

В итоге получен audio_id: 92254cab-3372-4d9e-bce9-cdcfdbc39070, затем нам также необходимо заполнить следующие параметры:
  • action: значение — underpainting.
  • underpainting_start: время начала добавления сопровождения к загруженной песне, значение по умолчанию — 0.
  • underpainting_end: время окончания добавления сопровождения к загруженной песне, должно быть меньше общей длительности песни.
  • audio_id: ID загруженной песни а капелла без озвучки.
  • style: стиль сопровождения, лучше не использовать текст песни, ведь это озвучка.
После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажав «Запустить», можно увидеть, что будет получен следующий результат:
Таким образом завершается операция по добавлению музыкального сопровождения к загруженной песне а капелла без озвучки, результат аналогичен описанному выше.

Функция Add Vocals

В августе 2025 года Suno представил новую функцию Add Vocals. Сначала необходимо загрузить инструментальную музыку, чтобы Suno написал текст и создал вокальное исполнение. Сначала можно загрузить песню а капелла без музыкального сопровождения через Suno Upload API, соответствующие действия показаны на рисунке ниже:

Затем необходимо записать audio_id после загрузки, конкретный результат показан на рисунке ниже:

В итоге получен audio_id: 92254cab-3372-4d9e-bce9-cdcfdbc39070, затем нам также необходимо заполнить следующие параметры:
  • action: значение — overpainting.
  • overpainting_start: время начала добавления вокала к загруженной песне, значение по умолчанию — 0.
  • overpainting_end: время окончания добавления вокала к загруженной песне, должно быть меньше общей длительности песни.
  • audio_id: ID загруженной песни а капелла без озвучки.
  • custom: в этом режиме необходимо использовать пользовательский режим для ввода текста песни.
  • lyric: текст песни, введённый в пользовательском режиме.
  • style: стиль сопровождения.
После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажав «Запустить», можно обнаружить, что будет получен результат, как показано ниже:
Таким образом завершается операция по добавлению вокала к загруженной песне без аккомпанемента и вокала, результат аналогичен приведённому выше.

Функция Remaster

В декабре 2025 года suno представил новую функцию Remaster, эта функция может заново генерировать песни, нельзя использовать между аккаунтами, затем нам также нужно заполнить следующие параметры:
  • action: значение — remaster.
  • audio_id: ID песни, которую необходимо сгенерировать заново.
  • model: поддерживаются только v4.5+ и v5.
  • variation_category: поддерживается только в версиях выше v5, и имеет только 3 значения: high, normal, subtle.
После заполнения автоматически генерируется следующий код:

Соответствующий код Python:
Нажав «Запустить», можно обнаружить, что будет получен результат, как показано ниже:
Таким образом завершается операция по повторной генерации уже сгенерированной песни, результат аналогичен приведённому выше.

Функция генерации смешанных треков Mashup

В декабре 2025 года suno представил новую функцию Mashup, эта функция может генерировать песню на основе двух эталонных песен, затем нам также нужно заполнить следующие параметры:
  • action: значение — mashup.
  • mashup_audio_ids: ID двух эталонных песен. 填写完毕之后自动生成了代码如下:

Соответствующий код на Python:
Нажав «Запустить», можно увидеть, что будет получен результат, как показано ниже:
Таким образом, операция по созданию микса на основе референсных песен завершена, результат аналогичен приведённому выше.

Samples Создание песни на основе сэмпла

Здесь samples — это выборка одного аудиоинтервала: из существующего аудио выбирается время начала и окончания, и этот фрагмент используется в качестве материала для сэмплирования при создании. Это отличается от функции творческого создания по вдохновению Inspo, использующей от 1 до 4 полных референсных аудиозаписей, описанной ниже. Необходимо заполнить следующие параметры:
  • action: значение — samples.
  • samples_start: время начала выборки.
  • samples_end: время окончания выборки.
  • audio_id: ID референсной песни, которую необходимо использовать для выборки.
填写完毕之后自动生成了代码如下:

Соответствующий код на Python:
Нажав «Запустить», можно увидеть, что будет получен результат, как показано ниже:
Таким образом, операция по генерации песни с использованием сэмплирования завершена, результат аналогичен приведённому выше.

Функция вдохновляющего творчества Inspo

Функция вдохновляющего творчества Inspo может генерировать новую музыку на основе 1–4 полных эталонных аудиозаписей и поддерживает перетаскивание или загрузку аудио в качестве источника вдохновения. API использует существующее действие inspo: клиент предоставляет общедоступные URL-адреса аудио, а сервис автоматически выполняет подготовку эталонного аудио и создание композиции; клиенту не требуется отдельно считывать текст, стиль или длительность, а затем собирать запрос. Она отличается как от описанного выше интервального сэмплирования, так и от Cover, воспроизводящего стиль оригинальной песни. При использовании необходимо заполнить следующие параметры:
  • action: значение — inspo.
  • audio_urls: список URL-адресов эталонного аудио; необходимо предоставить от 1 до 4 общедоступных аудиоадресов.
  • model: используемая модель, рекомендуется chirp-v6.
  • prompt: текст песни или подсказка для творчества (необязательно).
Примечание: эталонное аудио должно быть общедоступным аудиофайлом. Если эталонное аудио полностью совпадает с известной записью в библиотеке треков платформы, Suno может отклонить генерацию из-за проверки авторских прав; рекомендуется использовать собственное аудио или аудио, сгенерированное Suno, в качестве источника вдохновения.
Соответствующий код Python:
Ниже сохранён проверенный снимок исторического ответа; в снимке использовалась тогдашняя версия chirp-v5, в текущем примере запроса рекомендуется chirp-v6, структура ответа одинакова:
Таким образом операция создания по вдохновению завершена, а возвращаемый результат соответствует обычной генерации песни.

Асинхронный обратный вызов

Поскольку Suno генерирует музыку относительно долго, примерно 1–2 минуты, если API долго не отвечает, HTTP-запрос будет постоянно поддерживать соединение, что приводит к дополнительному потреблению системных ресурсов, поэтому этот API также поддерживает асинхронные обратные вызовы. Общий процесс таков: когда клиент инициирует запрос, он дополнительно указывает поле callback_url; после того как клиент инициирует API-запрос, API немедленно возвращает результат, содержащий поле task_id, представляющее ID текущей задачи. После завершения задачи результат сгенерированной музыки будет отправлен в виде POST JSON на указанный клиентом callback_url, который также включает поле task_id, благодаря чему результаты задач можно связать по ID. Ниже мы на примере рассмотрим, как именно это работает. Сначала, обратный вызов Webhook — это сервис, способный принимать HTTP-запросы, разработчик должен заменить его на URL собственного HTTP-сервера. Здесь для удобства демонстрации используется публичный сайт с примером Webhook https://webhook.site/; открыв этот сайт, можно получить Webhook URL, как показано на рисунке: Скопировав этот URL, его можно использовать как Webhook; пример здесь — https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2。 Далее мы можем установить для поля callback_url указанный выше Webhook URL и одновременно заполнить prompt, как показано на рисунке: Нажав «Запустить», можно увидеть, что результат будет получен немедленно, как показано ниже:
Немного подождав, мы можем увидеть результат генерации песни на https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2, как показано на рисунке: Содержимое следующее:
Можно увидеть, что в результате есть поле task_id, а все остальные поля аналогичны описанным выше; с помощью этого поля можно реализовать связь задач. Конечно, мы также можем получать результаты через потоковый вызов; для этого нужно лишь установить значение accept в заголовке запроса как application/x-ndjson; ниже в качестве демонстрации используется пример ввода:

В процессе ожидания мы можем получить следующий вывод:
Потоковый ответ будет последовательно отправлять статус обработки и окончательный результат для одного и того же task_id; выше сохранены только два реальных ответа — первый и финальный, а повторяющиеся промежуточные обновления опущены.

Обработка ошибок

Если произойдёт ошибка, вы получите сообщение об ошибке, подобное следующему:
Ниже приведён список HTTP Status Code, error.code, error.message:
Примечание: лимиты и тексты ошибок для разных аккаунтов вышестоящих провайдеров могут различаться. Обычно у chirp-v3-5/chirp-v4 ограничение для style ниже (200), тогда как chirp-v4-5 и выше обычно поддерживают до 1000; при использовании старого вышестоящего провайдера могут появляться совместимые сообщения, такие как Tags too long. или style must be less than or equal 120. | Код состояния | error.code | error.message | | ------------- | ------------- | --------------------------------------------------------------- | | 400 | bad_request | Идентификатор песни не существует или был отключён. | | 400 | bad_request | Промпт слишком длинный. | | 400 | bad_request | Теги слишком длинные. | | 400 | bad_request | Загруженное аудио совпадает с существующим произведением искусства. | | 400 | bad_request | instrumental должен быть логическим значением | | 400 | bad_request | Название слишком длинное. | | 400 | bad_request | Тема слишком длинная. | | 400 | bad_request | style должен быть меньше или равен 120 | | 400 | bad_request | custom должен быть логическим значением | | 400 | bad_request | audio_id обязателен при расширении аудио | | 400 | bad_request | continue_at обязателен при расширении аудио | | 400 | bad_request | continue_at должен быть числом больше 0 | | 400 | bad_request | lyric обязателен при расширении аудио, когда instrumental имеет значение false | | 400 | bad_request | prompt обязателен при генерации аудио | | 400 | bad_request | lyric обязателен при генерации пользовательского аудио | | 403 | forbidden | Промпт, вероятно, имеет неверный формат | | 403 | forbidden | Промпт, вероятно, защищён авторским правом | | 403 | forbidden | Промпт содержал неподходящий материал | | 403 | forbidden | Описание песни помечено для модерации | | 403 | forbidden | Описание песни содержало имя исполнителя | | 403 | forbidden | Теги содержали имя исполнителя | | 403 | forbidden | Текст песни содержал материал, защищённый авторским правом | | 403 | forbidden | Описание песни содержало тег продюсера | | 403 | forbidden | Общая ошибка openAI | | 403 | forbidden | Промпт помечен для модерации | | 500 | api_error | Невозможно сгенерировать текст песни из описания песни | | 500 | api_error | задача завершилась с неизвестной ошибкой | | 500 | api_error | в системе нет доступных воркеров | | 500 | api_error | сервис находится на обслуживании, генерация приостановлена | | 504 | timeout | тайм-аут во время ожидания генерации аудио |