Музыка

POST /v1/audio/generations — трек по описанию: 200 с результатом, не успел за 9 минут — 202. В SDK OpenAI метода нет — обычный POST с JSON. Поля — схема MusicGenerationRequest и input_schema модели.

Терминал
curl https://api.souz.ai/v1/audio/generations \
  -H "Authorization: Bearer $SOUZ_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: jingle-42" \
  -d '{"model": "suno-v6", "prompt": "бодрый инди-поп, женский вокал", "lyrics": "[Verse]\nУтро светит в окно\n[Chorus]\nСолнце, мы снова живём", "title": "Утро"}'

Описание, текст и инструментал

  • prompt — описание трека: жанр, настроение, инструменты, темп, голос; текст песни модель напишет на языке описания.
  • lyrics — свой текст с разделами [Verse], [Chorus], [Bridge]: модель споёт его как написан. title — название трека вместе с lyrics, у моделей, чья карточка его объявляет; без него — первая строка текста.
  • instrumental: true — трек без вокала, вместе с lyrics не присылается.

Звук — в data[] (type: "audio", MP3). Модель, которая делает за запрос два варианта трека, отдаёт оба (data[0] и data[1], оба с role: "result"), и цена — за оба.

Suno V6: версии и действия

version выбирает v6, v6-mini или v6-wild (без поля — v6). action выбирает действие; без поля — generate. Точный набор включённых действий — в input_schema модели.

ДействиеИсходное аудиоОсновные поля
generate — музыканетописание; custom_mode: true — свой стиль и текст
sounds — эффектынетописание звука; sound_loop, sound_tempo, sound_key, grab_lyrics
cover — каверодин файлописание или свой стиль и текст
extend — продолжениеодин файлописание; continue_at — момент в секундах, включает свой стиль и текст
add_vocals — вокалодин файлстиль, lyrics, negative_tags
add_instrumental — инструменталодин файлстиль, negative_tags
mashup — смешиваниедва файлаописание или свой стиль и текст

Действия над готовым треком:

ДействиеЧто передатьРезультат
replace_sectionтрек; стиль в prompt, текст фрагмента в lyrics, full_lyrics, start_seconds, end_secondsновые варианты трека
separate_vocalsтреквокал и инструментал
split_stemsтреквсе дорожки
isolate_stemтрек, stem_name из схемывыбранный инструмент
wavтрекWAV-файл
midisource_job результата разделения; source_file дорожки — по желаниюпартии и ноты в result.midi
videoтрек; author, domain_name — по желаниюMP4-клип
cover_imagesource_job созданной песни с текстомизображения обложки
lyricsтема в prompt, до 200 символовварианты текста в result.lyrics
boost_styleописание стиля в promptулучшенный стиль в result.result
timestampsтрекслова с таймкодами и волна
personaтрек, name, description; границы фрагмента и стиль — по желаниюpersona_id для следующих запросов
JSON
{"model": "suno-v6", "action": "timestamps", "source_job": "job_…", "source_file": "file_…"}

Исходный трек

  • Свой готовый трек — source_job (ID задачи) и source_file (ID аудиофайла из её data): связь с исходной песней сохраняется. source_job и reference_audio вместе не передаются.
  • Внешний звук — reference_audio: file_… из POST /v1/files или HTTPS-ссылка. Для переработки нужен доступный файл длительностью до 8 минут.
  • extend без continue_at продолжает исходные стиль и параметры; чтобы изменить их, задайте continue_at (меньше длительности трека), version — та же, что у исходного, или без поля.
  • Персона — persona_id и persona_model: style_persona в generate, cover, extend; при создании и кавере включите custom_mode, при продлении задайте continue_at. Окно анализа персоны — 10–30 секунд (по умолчанию 0–30). Замена фрагмента — 10–60 секунд и не больше половины трека. Обложка создаётся один раз для исходной песни.

Пределы полей

В режиме своего текста prompt — стиль (до 1000 символов), lyrics — слова (до 5000). duration_seconds (10–360) — желаемая длительность для создания, кавера и смешивания. style_weight, weirdness и audio_weight — от 0 до 1 с шагом 0.01 (последнее — только с исходным аудио). negative_tags — что исключить, до 200 символов (кроме смешивания). vocal_gender — пожелание m или f. Допустимые сочетания проверяются до постановки задачи.

Результат

Каждый аудиофайл может нести title, duration_seconds, tags, lyrics, label (название дорожки), cover_id и actions. Обложки — отдельные файлы с role: cover. Структурированные результаты — в result задачи и файлом с type: json. Все действия — обычная задача: работают Prefer: respond-async, идемпотентность, события и вебхуки. Цена зависит от действия и версии — строка pricing.options каталога.