Разделяет песню на отдельные дорожки (вокал, барабаны, бас и другое) и параллельно определяет структуру трека - где интро, куплеты, припевы, бридж и аутро. Цена - 6 ₽ за 1 аудиофайл.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Нейросеть раскладывает готовую песню на отдельные дорожки: вокал, барабаны, бас и всё остальное. Дополнительно приходит минус целиком (инструментал без голоса) и картинка со структурой трека, где отмечены части песни: интро, куплеты, припевы и другие.
Где пригодится:
Параметр один - ссылка на аудиофайл. Каждый вызов создаёт асинхронную операцию: сначала вы получаете id, затем проверяете статус, пока не придут готовые файлы.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режимов у нейросети нет: каждый запуск возвращает полный набор дорожек.
{
"tool": "split-stems",
"input": {
"music_input": "https://cdn.example.com/source-audio-1.mp3"
}
}
tool - slug нейросети, всегда "split-stems".input - параметры запуска. Поле передаётся прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
music_input | string (url) | Да | Ссылка на песню, которую нужно разделить. Один файл. Внешний http/https URL с расширением .mp3, .wav, .m4a, .aac, .flac, .ogg или .opus. Длина трека - от 1 секунды до 10 минут. |
Стоимость - 6 ₽ за файл.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "split-stems",
"input": {
"music_input": "https://cdn.example.com/source-audio-1.mp3"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'split-stems',
input: {
music_input: 'https://cdn.example.com/source-audio-1.mp3',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'split-stems',
'input': {
'music_input': 'https://cdn.example.com/source-audio-1.mp3',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "split-stems",
"cost": 6,
"balance_after": 494,
"created_at": "2026-09-30T19:47:22Z"
}
cost - сколько списано за операцию, в рублях.balance_after - баланс после списания.{
"id": "op_uuid-123",
"status": "completed",
"tool": "split-stems",
"cost": 6,
"created_at": "2026-09-30T19:47:22Z",
"completed_at": "2026-09-30T19:51:00Z",
"result": {
"type": "audio",
"urls": [
"https://storage.bratuha.ru/results/split-stems/bass.wav",
"https://storage.bratuha.ru/results/split-stems/drums.wav",
"https://storage.bratuha.ru/results/split-stems/other.wav",
"https://storage.bratuha.ru/results/split-stems/vocals.wav",
"https://storage.bratuha.ru/results/split-stems/instrumental.wav",
"https://storage.bratuha.ru/results/split-stems/vocals-full.wav",
"https://storage.bratuha.ru/results/split-stems/sonification.mp3",
"https://storage.bratuha.ru/results/split-stems/structure.png"
],
"files": [
{
"url": "https://storage.bratuha.ru/results/split-stems/bass.wav",
"name": "Бас"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/drums.wav",
"name": "Барабаны"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/other.wav",
"name": "Остальные инструменты"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/vocals.wav",
"name": "Вокал"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/instrumental.wav",
"name": "Минус (музыка без голоса)"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/vocals-full.wav",
"name": "Вокал, вариант 2"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/sonification.mp3",
"name": "Трек с разметкой долей"
},
{
"url": "https://storage.bratuha.ru/results/split-stems/structure.png",
"name": "Структура трека"
}
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "split-stems",
"cost": 6,
"created_at": "2026-09-30T19:47:22Z",
"completed_at": "2026-09-30T20:47:22Z",
"result": null,
"error_message": "Текст ошибки"
}
Сохраните id из ответа на создание и запрашивайте статус операции по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 10000))
}
}
Статус операции:
queued - операция создана и ждёт запуска;processing - трек разделяется;completed - готово, ссылки лежат в result;failed - не получилось, причина в error_message.Разделение небыстрое: минутный трек обрабатывается около 4 минут, полная песня - дольше. Проверяйте статус раз в 5-10 секунд. Чаще раза в секунду одну операцию опрашивать нельзя, придёт 429.
В result приходит восемь файлов:
{
"type": "audio",
"urls": [
"https://storage.bratuha.ru/results/split-stems/bass.wav",
"https://storage.bratuha.ru/results/split-stems/drums.wav",
"https://storage.bratuha.ru/results/split-stems/other.wav",
"https://storage.bratuha.ru/results/split-stems/vocals.wav",
"https://storage.bratuha.ru/results/split-stems/instrumental.wav",
"https://storage.bratuha.ru/results/split-stems/vocals-full.wav",
"https://storage.bratuha.ru/results/split-stems/sonification.mp3",
"https://storage.bratuha.ru/results/split-stems/structure.png"
],
"files": [
{ "url": "https://storage.bratuha.ru/results/split-stems/bass.wav", "name": "Бас" },
{ "url": "https://storage.bratuha.ru/results/split-stems/drums.wav", "name": "Барабаны" },
{ "url": "https://storage.bratuha.ru/results/split-stems/other.wav", "name": "Остальные инструменты" },
{ "url": "https://storage.bratuha.ru/results/split-stems/vocals.wav", "name": "Вокал" },
{ "url": "https://storage.bratuha.ru/results/split-stems/instrumental.wav", "name": "Минус (музыка без голоса)" },
{ "url": "https://storage.bratuha.ru/results/split-stems/vocals-full.wav", "name": "Вокал, вариант 2" },
{ "url": "https://storage.bratuha.ru/results/split-stems/sonification.mp3", "name": "Трек с разметкой долей" },
{ "url": "https://storage.bratuha.ru/results/split-stems/structure.png", "name": "Структура трека" }
]
}
Что есть что - по полю name в files:
name | Файл | Что внутри |
|---|---|---|
Вокал | WAV | Вокал из разделения на четыре дорожки |
Барабаны | WAV | Барабаны и перкуссия |
Бас | WAV | Бас |
Остальные инструменты | WAV | Всё остальное: гитары, клавишные, синтезаторы, эффекты |
Вокал, вариант 2 | WAV | Вокал из разделения на две части: голос отдельно от музыки |
Минус (музыка без голоса) | WAV | Минус: вся музыка без голоса |
Трек с разметкой долей | MP3 | Исходный трек с наложенной звуковой разметкой долей - служебный файл, чтобы на слух проверить, как модель поняла ритм |
Структура трека | PNG | Картинка со структурой трека: график громкости и подписанные блоки частей песни (например intro, verse, chorus) с таймкодами |
type - "audio", хотя среди файлов есть картинка PNG.urls - все восемь ссылок подряд, без подписей.files - те же ссылки с name. Выбирайте нужный файл по name, а не по позиции в массиве.Для караоке-минуса берите Минус (музыка без голоса), для отдельного голоса - Вокал, вариант 2 или Вокал.
Все WAV - 16 бит, 44,1 кГц, стерео, той же длины, что исходник. Это тяжёлые файлы: примерно 10 МБ на минуту звука за каждую дорожку, то есть около 60 МБ на минуту трека за шесть WAV. В тестовом запуске на минутной песне пришли шесть WAV по 60 секунд, MP3 на 60 секунд и PNG 857×136.
Структура трека приходит только картинкой. Таймкоды куплетов и припевов в виде данных, темп и сетка долей в ответе не передаются.
Цена фиксированная - 6 ₽ за один аудиофайл длиной до 10 минут. От длины трека и формата файла она не зависит.
| Что отправили | Цена |
|---|---|
| Песня до 10 минут | 6 ₽ |
| 10 песен (10 операций) | 60 ₽ |
Сумма приходит в поле cost ответа на создание операции и сразу списывается с баланса.
Трек должен длиться не больше 10 минут. Длину сервер измеряет сам по файлу: более длинный трек API отклонит с 400 validation_error ещё до создания операции, деньги не спишутся. Длинную запись разрежьте на части.
POST /api/v1/operations не идемпотентен: каждый запрос создаёт новую операцию и списывает деньги. Не повторяйте запрос автоматически при обрыве связи.
Операция выполняется асинхронно: сначала приходит queued, результат нужно забирать запросом статуса по id.
Файл передаётся только ссылкой: внешний http/https URL, который открывается без авторизации. Адреса localhost и внутренних сетей не принимаются.
Одна операция - один трек. Чтобы разделить несколько песен, создайте несколько операций.
Обработка занимает минуты, а не секунды. Изредка операция не укладывается во время ожидания и завершается ошибкой - тогда просто запустите её ещё раз.
Качество разделения зависит от исходника: чем меньше сжатие и чем чище запись, тем меньше «призраков» вокала в минусе и инструментов в вокале.
Ссылки на результат скачивайте к себе: шесть WAV-дорожек занимают много места, а для работы с ними обычно нужен локальный файл.