Перейти к содержимому

Генерация музыки (Music API)

Music API превращает текст песни в готовый трек с вокалом. Работает по тому же ключу, что и модели: отдельной регистрации не нужно.

  • Base URL: https://console.zubriq.by/api/v1/music
  • Ключ — тот же sk-zq-… из кабинета, что и для API моделей. Заголовок: Authorization: Bearer sk-zq-…

Генерация асинхронная: запрос ставит задачу в очередь и сразу возвращает job_id, готовность проверяется опросом.

POST /generate202

ПолеТипОписание
lyricsстрока, до 4000Текст песни. Секции размечаются тегами [verse], [chorus], [bridge] — каждый на своей строке
promptстрока, до 600Необязательно: стиль, настроение, инструменты, тип вокала словами
duration_secчисло 10–300Необязательно: верхняя граница длительности, по умолчанию 60
Окно терминала
curl https://console.zubriq.by/api/v1/music/generate \
-H "Authorization: Bearer sk-zq-..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "тёплая поп-баллада, мужской вокал, фортепиано",
"lyrics": "[verse]\nГород засыпает к ночи\n[chorus]\nА мы поём",
"duration_sec": 120
}'

Ответ: {"job_id": "…", "status": "queued"}

GET /jobs/{job_id} — статус проходит путь queuedrunningcompleted либо error. Опрашивайте раз в 5–10 секунд; трёхминутный трек готовится несколько минут.

{
"job_id": "...",
"status": "completed",
"url": "/api/v1/music/files/...",
"duration_sec": 173.35,
"price_byn": 1
}

GET /files/{job_id} отдаёт WAV (44.1 кГц, стерео) по тому же ключу. Файл хранится в нашем хранилище — ссылка ваша, чужие домены и их сроки жизни ни на что не влияют.

import requests, time
API = "https://console.zubriq.by/api/v1/music"
H = {"Authorization": "Bearer sk-zq-..."}
job = requests.post(f"{API}/generate", headers=H, json={
"prompt": "тёплая поп-баллада, мужской вокал, фортепиано",
"lyrics": "[verse]\nГород засыпает к ночи\n[chorus]\nА мы поём",
}).json()["job_id"]
while (st := requests.get(f"{API}/jobs/{job}", headers=H).json())["status"] in ("queued", "running"):
time.sleep(5)
if st["status"] == "completed":
audio = requests.get(f"{API}/files/{job}", headers=H).content
open("song.wav", "wb").write(audio)

Списывается фиксированная сумма за успешный трек — она приходит в ответе поля price_byn. Неудачная генерация бесплатна: платить не за что. Расход виден в кабинете отдельной строкой.

Ограничения на организацию: две генерации одновременно и 20 треков в сутки. Нулевой баланс — ответ 402, пополнение в кабинете.

КодЧто значит
401Ключ не передан, недействителен или отозван
402Нулевой баланс кошелька организации
422Не прошла валидация (нет lyrics, длина или duration_sec вне диапазона)
429Превышен лимит: слишком часто, две активные задачи или суточная норма
503Генерация музыки временно недоступна