API музыки
Музыка в kosareva.cloud создаётся через POST /v1/music: песня или инструментал по описанию. Один запрос даёт два варианта трека в mp3.
Задача, статус, файлы
Стандарта OpenAI для музыки нет, поэтому протокол свой, но устроен как у видео: задача, статус, файлы. Одна генерация даёт два варианта трека и стоит 26,40 ₽, обычно готова за 30–60 секунд.
# 1. Поставить задачу, в ответе id и status
curl https://api.kosareva.cloud/v1/music \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"model":"suno-v6","prompt":"Бодрая акустическая песня про поездку к морю","style":"инди-поп, укулеле"}'
# → {"id":"9f2c…","object":"music","status":"queued","price_rub":26.4,"tracks":[],…}
# 2. Спрашивать раз в 10–15 секунд, пока status не станет completed
curl https://api.kosareva.cloud/v1/music/ID_ЗАДАЧИ \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"
# 3. Забрать оба трека: index=0 и index=1
curl "https://api.kosareva.cloud/v1/music/ID_ЗАДАЧИ/content?index=0" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" -o track-1.mp3
curl "https://api.kosareva.cloud/v1/music/ID_ЗАДАЧИ/content?index=1" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" -o track-2.mp3
import time, requests
API = "https://api.kosareva.cloud/v1/music"
H = {"Authorization": "Bearer ВАШ_API_КЛЮЧ"}
job = requests.post(API, headers=H, json={
"model": "suno-v6",
"lyrics": "[Verse]\nУтро, море, тишина\n[Chorus]\nМы едем к морю",
"style": "синти-поп, женский вокал",
"title": "Море",
"duration": 120,
}).json()
while job["status"] in ("queued", "in_progress"):
time.sleep(15)
job = requests.get(f"{API}/{job['id']}", headers=H).json()
for t in job["tracks"]:
open(f"track-{t['index'] + 1}.mp3", "wb").write(requests.get(t["content_url"], headers=H).content)
Поля запроса
| Поле | Что это | Ограничения |
|---|---|---|
model | suno-v6: основная версия, естественный вокал; suno-v6-mini: лёгкая и быстрая; suno-v6-wild: смелее по звучанию | без поля suno-v6; цена у всех одна |
prompt | О чём трек; текст песни модель сочинит сама | до 3000 символов |
style | Жанр, настроение, инструменты, голос | до 1000 символов |
lyrics | Свой текст песни, поётся дословно; разметка [Verse], [Chorus] | до 5000 символов |
title | Название трека | до 80 символов |
instrumental | true: без вокала | в своём режиме нужен style |
duration | Желаемая длина в секундах; без неё длину выбирает модель | 10–360, включает свой режим |
Режимы, статусы, ограничения
- Режимов два. Простой: только
promptи при желанииstyle, модель сама пишет текст. Свой: если переданlyrics,titleилиduration(или"custom_mode": true), текст песни поётся как есть, аpromptбезlyricsсчитается текстом песни. - Ответ
GET /v1/music/{id}:statusравенqueued,in_progress,completedилиfailed; у готовой задачи вtracksдва трека сduration,titleиcontent_url.GET /v1/musicотдаёт последние 20 задач, параметрlimitдо 100. - 26,40 ₽ списываются, когда задача принята в работу. Не получилось: деньги возвращаются на баланс сами, в ответе будет
error.refunded: true. Пустой или неверно заполненный запрос отклоняется сразу с кодом 400 и ничего не стоит. - Кому недоступно: юрлицам (в набор моделей для компаний музыка не входит) и ключам с ограниченным списком моделей, нужен ключ без ограничений. Ответ в обоих случаях 403, денег не списывается.
- Оба трека мы сразу забираем к себе и по сроку не удаляем, поэтому
content_urlне протухает. Одновременно до 5 незавершённых генераций на аккаунт, шестая получит 429. Свой трек или аудио на вход пока не принимаем, только текст. - То же самое без кода в личном кабинете: Чат, вкладка «Музыка».