Открыть в интерактивной справке · markdown для агентов: https://neuraldeep.ru/docs/music.md

Музыка · Music API

Генерация музыки тем же ключом, ручки под /v1/music/*. Модель Google Lyria 3 Pro: песня с вокалом по описанию стиля и тексту или инструментал, 48 кГц, mp3. Трек обычно готов секунд за 20–30.

Единица счёта — трек. Остаток видно в GET /v1/music/quota. На кошельке трек стоит 10 ₽. Списываются только готовые треки: упавшая задача квоту и деньги возвращает.

Как устроено. Всё асинхронно, формат свой, не OpenAI. POST /v1/music/generate создаёт задачу и сразу отвечает {"task_id": "...", "status": "queued", "poll": "/v1/music/tasks/..."}. Дальше опрашиваете GET /v1/music/tasks/{id}, пока status не станет succeeded или failed (по дороге queued и running). У готовой задачи есть tracks[] со ссылкой url. Файл забираете через GET /v1/music/tasks/{id}/result?index=0, пока трек не готов, эта ручка отвечает 409.

ручка что
POST /v1/music/generate генерация, JSON
GET /v1/music/tasks/{id} статус и трек
GET /v1/music/tasks/{id}/result?index=0 трек файлом, по умолчанию mp3, другой формат задаёт audio_format: wav, wav32, flac, opus, aac
GET /v1/music/quota остаток треков
GET /v1/music/models доступные модели

Что писать в запрос.

Поля вне списка отбрасываются молча. За раз одна песня, batch_size больше 1 даёт 422. Каверы, правка куска и отдельные дорожки сейчас недоступны.

id=$(curl -s https://api.neuraldeep.ru/v1/music/generate \
  -H "Authorization: Bearer $YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"prompt":"инди-поп, акустическая гитара, тёплый женский вокал","lyrics":"[verse]\nПо лужам до утра\n[chorus]\nМы снова дома","vocal_language":"ru","audio_duration":90}' | jq -r .task_id)

curl https://api.neuraldeep.ru/v1/music/tasks/$id \
  -H "Authorization: Bearer $YOUR_KEY"

curl "https://api.neuraldeep.ru/v1/music/tasks/$id/result?index=0" \
  -H "Authorization: Bearer $YOUR_KEY" -o track.mp3
import time, httpx

H = {"Authorization": "Bearer $YOUR_KEY"}
job = httpx.post(
    "https://api.neuraldeep.ru/v1/music/generate", headers=H,
    json={"prompt": "весёлый поп-панк про кота, который ненавидит понедельники", "vocal_language": "ru"},
).json()
tid = job["task_id"]

for _ in range(120):
    st = httpx.get(f"https://api.neuraldeep.ru/v1/music/tasks/{tid}", headers=H).json()
    if st["status"] in ("succeeded", "failed"):
        break
    time.sleep(3)

audio = httpx.get(f"https://api.neuraldeep.ru/v1/music/tasks/{tid}/result?index=0", headers=H).content
open("track.mp3", "wb").write(audio)

Ошибки.

Разделы справки (markdown для агентов)