kosareva.cloud
RU
РусскийEnglish

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)

Поля запроса

ПолеЧто этоОграничения
modelsuno-v6: основная версия, естественный вокал; suno-v6-mini: лёгкая и быстрая; suno-v6-wild: смелее по звучаниюбез поля suno-v6; цена у всех одна
promptО чём трек; текст песни модель сочинит самадо 3000 символов
styleЖанр, настроение, инструменты, голосдо 1000 символов
lyricsСвой текст песни, поётся дословно; разметка [Verse], [Chorus]до 5000 символов
titleНазвание трекадо 80 символов
instrumentaltrue: без вокалав своём режиме нужен 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. Свой трек или аудио на вход пока не принимаем, только текст.
  • То же самое без кода в личном кабинете: Чат, вкладка «Музыка».